The setting of the SG log levels and developer mode has been removed as this clashes with the output control set by the test suite main() function.
98 lines
2.2 KiB
C++
98 lines
2.2 KiB
C++
|
|
#include "config.h"
|
|
|
|
#include "globals.hxx"
|
|
|
|
#include <Main/globals.hxx>
|
|
#include <Main/options.hxx>
|
|
|
|
#include <Navaids/NavDataCache.hxx>
|
|
#include <Time/TimeManager.hxx>
|
|
|
|
#include <simgear/debug/logstream.hxx>
|
|
#include <simgear/misc/sg_dir.hxx>
|
|
#include <simgear/timing/timestamp.hxx>
|
|
|
|
#include <iostream>
|
|
|
|
static SGPath tests_fgdata;
|
|
|
|
namespace fgtest
|
|
{
|
|
|
|
bool looksLikeFGData(const SGPath& path)
|
|
{
|
|
return (path / "defaults.xml").exists();
|
|
}
|
|
|
|
|
|
SGPath fgdataPath()
|
|
{
|
|
return tests_fgdata;
|
|
}
|
|
|
|
void initTestGlobals(const std::string& testName)
|
|
{
|
|
globals = new FGGlobals;
|
|
|
|
bool foundRoot = false;
|
|
if (std::getenv("FG_ROOT")) {
|
|
SGPath fg_root = SGPath::fromEnv("FG_ROOT");
|
|
if (looksLikeFGData(fg_root)) {
|
|
globals->set_fg_root(fg_root);
|
|
foundRoot = true;
|
|
}
|
|
}
|
|
|
|
if (!foundRoot) {
|
|
SGPath pkgLibDir = SGPath::fromUtf8(PKGLIBDIR);
|
|
if (looksLikeFGData(pkgLibDir)) {
|
|
globals->set_fg_root(pkgLibDir);
|
|
foundRoot = true;
|
|
}
|
|
}
|
|
|
|
if (!foundRoot) {
|
|
SGPath dataDir = SGPath::fromUtf8(FGSRCDIR) / ".." / "fgdata";
|
|
if (looksLikeFGData(dataDir)) {
|
|
globals->set_fg_root(dataDir);
|
|
foundRoot = true;
|
|
}
|
|
}
|
|
|
|
if (!foundRoot) {
|
|
std::cerr << "FGData not found" << std::endl;
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
tests_fgdata = globals->get_fg_root();
|
|
|
|
// current dir
|
|
SGPath homePath = SGPath::fromUtf8(FGBUILDDIR) / "test_home";
|
|
if (!homePath.exists()) {
|
|
(homePath / "dummyFile").create_dir(0755);
|
|
}
|
|
|
|
globals->set_fg_home(homePath);
|
|
|
|
fgSetDefaults();
|
|
|
|
flightgear::NavDataCache* cache = flightgear::NavDataCache::createInstance();
|
|
if (cache->isRebuildRequired()) {
|
|
std::cerr << "Navcache rebuild for testing" << std::flush;
|
|
|
|
while (cache->rebuild() != flightgear::NavDataCache::REBUILD_DONE) {
|
|
SGTimeStamp::sleepForMSec(1000);
|
|
std::cerr << "." << std::flush;
|
|
}
|
|
}
|
|
|
|
TimeManager* t = new TimeManager;
|
|
t->init(); // establish mag-var data
|
|
}
|
|
|
|
void shutdownTestGlobals()
|
|
{
|
|
delete globals;
|
|
}
|
|
} // of namespace fgtest
|