1
0
Fork 0
flightgear/test_suite/helpers/globals.cxx
Edward d'Auvergne 0f96032487 TestSuite: Shift of the globals unit test helper functions into the test suite.
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.
2018-03-23 17:26:05 +01:00

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