From 5e908ec5b6e1eede1c3a9109e32cfd695b4f53b0 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 14 Jul 2015 22:16:23 +0100 Subject: [PATCH] Properly fix "bad cast" exceptions in tests. The exceptions were originating from boost::locale::to_lower, when the global locale had not been set correctly. --- src/tests/backend/test_masterlist.h | 13 +------------ src/tests/backend/test_metadata_list.h | 16 +++++----------- src/tests/main.cpp | 4 ++++ 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/tests/backend/test_masterlist.h b/src/tests/backend/test_masterlist.h index 80dc3f95..38d09bf3 100644 --- a/src/tests/backend/test_masterlist.h +++ b/src/tests/backend/test_masterlist.h @@ -28,18 +28,7 @@ along with LOOT. If not, see #include "backend/masterlist.h" #include "tests/fixtures.h" -class Masterlist : public SkyrimTest { -protected: - inline virtual void SetUp() { - SkyrimTest::SetUp(); - - // 'bad cast' exceptions are thrown for some reason unless a game is - // initialised. - loot::Game game(loot::Game::tes5); - game.SetGamePath(dataPath.parent_path()); - ASSERT_NO_THROW(game.Init(false, localPath)); - } -}; +class Masterlist : public SkyrimTest {}; TEST_F(Masterlist, Update_Game) { loot::Game game(loot::Game::tes5); diff --git a/src/tests/backend/test_metadata_list.h b/src/tests/backend/test_metadata_list.h index 988ca9f1..0661d0eb 100644 --- a/src/tests/backend/test_metadata_list.h +++ b/src/tests/backend/test_metadata_list.h @@ -32,23 +32,17 @@ class MetadataList : public SkyrimTest { protected: MetadataList() : metadataPath("./testing-metadata-master/masterlist.yaml"), - savedMetadataPath("./testing-metadata-master/saved.masterlist.yaml") {} + savedMetadataPath("./testing-metadata-master/saved.masterlist.yaml") { + PluginMetadataToString = [](const loot::PluginMetadata& plugin) { + return plugin.Name(); + }; + } inline virtual void SetUp() { SkyrimTest::SetUp(); ASSERT_TRUE(boost::filesystem::exists(metadataPath)); ASSERT_FALSE(boost::filesystem::exists(savedMetadataPath)); - - // 'bad cast' exceptions are thrown for some reason unless a game is - // initialised. - loot::Game game(loot::Game::tes5); - game.SetGamePath(dataPath.parent_path()); - ASSERT_NO_THROW(game.Init(false, localPath)); - - PluginMetadataToString = [](const loot::PluginMetadata& plugin) { - return plugin.Name(); - }; } inline virtual void TearDown() { diff --git a/src/tests/main.cpp b/src/tests/main.cpp index 6c799708..594b52f5 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -73,6 +73,10 @@ TEST(ModuloOperator, Cpp11Conformance) { } int main(int argc, char **argv) { + //Set the locale to get encoding conversions working correctly. + std::locale::global(boost::locale::generator().generate("")); + boost::filesystem::path::imbue(std::locale()); + //Disable logging or else stdout will get overrun. boost::log::core::get()->set_logging_enabled(false);