Browse Source

Merge pull request #5950

3a3ecc0 Initialization: setup environment before starting QT tests (dexX7)
fc3979a Initialization: setup environment before starting tests (dexX7)
ba0fa0d Initialization: set fallback locale as environment variable (dexX7)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
41113e33ad
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 2
      src/qt/test/test_main.cpp
  2. 1
      src/test/test_bitcoin.cpp
  3. 7
      src/util.cpp

2
src/qt/test/test_main.cpp

@ -6,6 +6,7 @@
#include "config/bitcoin-config.h" #include "config/bitcoin-config.h"
#endif #endif
#include "util.h"
#include "uritests.h" #include "uritests.h"
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
@ -27,6 +28,7 @@ Q_IMPORT_PLUGIN(qkrcodecs)
// This is all you need to run all the tests // This is all you need to run all the tests
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
SetupEnvironment();
bool fInvalid = false; bool fInvalid = false;
// Don't remove this, it's needed to access // Don't remove this, it's needed to access

1
src/test/test_bitcoin.cpp

@ -28,6 +28,7 @@ extern void noui_connect();
BasicTestingSetup::BasicTestingSetup() BasicTestingSetup::BasicTestingSetup()
{ {
SetupEnvironment();
fPrintToDebugLog = false; // don't want to write to debug.log file fPrintToDebugLog = false; // don't want to write to debug.log file
SelectParams(CBaseChainParams::MAIN); SelectParams(CBaseChainParams::MAIN);
} }

7
src/util.cpp

@ -723,18 +723,19 @@ void RenameThread(const char* name)
void SetupEnvironment() void SetupEnvironment()
{ {
std::locale loc("C");
// On most POSIX systems (e.g. Linux, but not BSD) the environment's locale // On most POSIX systems (e.g. Linux, but not BSD) the environment's locale
// may be invalid, in which case the "C" locale is used as fallback. // may be invalid, in which case the "C" locale is used as fallback.
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__) #if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
try { try {
std::locale(""); // Raises a runtime error if current locale is invalid loc = std::locale(""); // Raises a runtime error if current locale is invalid
} catch (const std::runtime_error&) { } catch (const std::runtime_error&) {
std::locale::global(std::locale("C")); setenv("LC_ALL", "C", 1);
} }
#endif #endif
// The path locale is lazy initialized and to avoid deinitialization errors // The path locale is lazy initialized and to avoid deinitialization errors
// in multithreading environments, it is set explicitly by the main thread. // in multithreading environments, it is set explicitly by the main thread.
boost::filesystem::path::imbue(std::locale()); boost::filesystem::path::imbue(loc);
} }
void SetThreadPriority(int nPriority) void SetThreadPriority(int nPriority)

Loading…
Cancel
Save