diff options
author | fanquake <fanquake@gmail.com> | 2021-04-20 08:39:07 +0800 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2021-04-20 08:42:56 +0800 |
commit | a839303edc8a45f120e5cfcbf90f7f8a2d8ae4bc (patch) | |
tree | 66cd088feab3e8580a459c75175b4e09dc498472 /src/test | |
parent | 67a359313f79da64f547cca3cbbc4bdc3c08ee5f (diff) | |
parent | bb8d1c6e029a2fd01387599d2ff3bfc879a8ada5 (diff) |
Merge #21244: Move GetDataDir to ArgsManager
bb8d1c6e029a2fd01387599d2ff3bfc879a8ada5 Change ClearDataDirPathCache() to ArgsManager.ClearPathCache(). (Kiminuo)
b4190eff72c00e384ad238f9c2f10c8b91be969b Change GetBlocksDir() to ArgsManager.GetBlocksDirPath(). (Kiminuo)
83292e2a700afbf39936bd67bb89fab5398d0066 scripted-diff: Modify unit tests to use the ArgsManager in the BasicTestingSetup class instead of implicitly relying on gArgs. (Kiminuo)
55c68e6f011ee604c8a65b9bca668eb4dec452aa scripted-diff: Replace m_args with m_local_args in getarg_tests.cpp (Kiminuo)
511ce3a26b3b78e14acd0d85496b5422a236cf63 BasicTestingSetup: Add ArgsManager. (Kiminuo)
1cb52ba0656e78ca6c2ef84b1558198ad113b76a Modify "util_datadir" unit test to not use gArgs. (Kiminuo)
1add318704108faa98f5b1b8e9c96d960e9d23a8 Move GetDataDir(fNetSpecific) implementation to ArgsManager. (Kiminuo)
70cdf679f8e665dbdc3301873a0267fe9faa72cd Move StripRedundantLastElementsOfPath before ArgsManager class. (Kiminuo)
Pull request description:
This PR attempts to contribute to "Remove gArgs" (#21005).
Main changes:
* `GetDataDir()` function is moved to `ArgsManager.GetDataDirPath()`.
* `GetBlocksDir()` function is moved to `ArgsManager.GetBlocksDirPath()`.
ACKs for top commit:
ryanofsky:
Code review ACK bb8d1c6e029a2fd01387599d2ff3bfc879a8ada5. Just minor const/naming changes and splitting/scripting commits since last review
MarcoFalke:
review ACK bb8d1c6e029a2fd01387599d2ff3bfc879a8ada5 📓
hebasto:
re-ACK bb8d1c6e029a2fd01387599d2ff3bfc879a8ada5, addressed comments, and two commits made scripted-diffs since my [previous](https://github.com/bitcoin/bitcoin/pull/21244#pullrequestreview-638270583) review.
Tree-SHA512: ba9408c22129d6572beaa103dca0324131766f06d562bb7d6b9e214a0a4d40b0216ce861384562bde24b744003b3fbe6fac239061c8fd798abd3981ebc1b9019
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/dbwrapper_tests.cpp | 18 | ||||
-rw-r--r-- | src/test/denialofservice_tests.cpp | 4 | ||||
-rw-r--r-- | src/test/flatfile_tests.cpp | 8 | ||||
-rw-r--r-- | src/test/fs_tests.cpp | 2 | ||||
-rw-r--r-- | src/test/getarg_tests.cpp | 120 | ||||
-rw-r--r-- | src/test/settings_tests.cpp | 2 | ||||
-rw-r--r-- | src/test/util/setup_common.cpp | 8 | ||||
-rw-r--r-- | src/test/util/setup_common.h | 2 | ||||
-rw-r--r-- | src/test/util_tests.cpp | 43 |
9 files changed, 108 insertions, 99 deletions
diff --git a/src/test/dbwrapper_tests.cpp b/src/test/dbwrapper_tests.cpp index a6080ad3dd..b5f3bb2fa4 100644 --- a/src/test/dbwrapper_tests.cpp +++ b/src/test/dbwrapper_tests.cpp @@ -26,7 +26,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper) { // Perform tests both obfuscated and non-obfuscated. for (const bool obfuscate : {false, true}) { - fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_obfuscate_true" : "dbwrapper_obfuscate_false"); + fs::path ph = m_args.GetDataDirPath() / (obfuscate ? "dbwrapper_obfuscate_true" : "dbwrapper_obfuscate_false"); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); char key = 'k'; uint256 in = InsecureRand256(); @@ -45,7 +45,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_basic_data) { // Perform tests both obfuscated and non-obfuscated. for (bool obfuscate : {false, true}) { - fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_1_obfuscate_true" : "dbwrapper_1_obfuscate_false"); + fs::path ph = m_args.GetDataDirPath() / (obfuscate ? "dbwrapper_1_obfuscate_true" : "dbwrapper_1_obfuscate_false"); CDBWrapper dbw(ph, (1 << 20), false, true, obfuscate); uint256 res; @@ -126,7 +126,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_batch) { // Perform tests both obfuscated and non-obfuscated. for (const bool obfuscate : {false, true}) { - fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_batch_obfuscate_true" : "dbwrapper_batch_obfuscate_false"); + fs::path ph = m_args.GetDataDirPath() / (obfuscate ? "dbwrapper_batch_obfuscate_true" : "dbwrapper_batch_obfuscate_false"); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); char key = 'i'; @@ -162,7 +162,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_iterator) { // Perform tests both obfuscated and non-obfuscated. for (const bool obfuscate : {false, true}) { - fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_iterator_obfuscate_true" : "dbwrapper_iterator_obfuscate_false"); + fs::path ph = m_args.GetDataDirPath() / (obfuscate ? "dbwrapper_iterator_obfuscate_true" : "dbwrapper_iterator_obfuscate_false"); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); // The two keys are intentionally chosen for ordering @@ -202,7 +202,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_iterator) BOOST_AUTO_TEST_CASE(existing_data_no_obfuscate) { // We're going to share this fs::path between two wrappers - fs::path ph = GetDataDir() / "existing_data_no_obfuscate"; + fs::path ph = m_args.GetDataDirPath() / "existing_data_no_obfuscate"; create_directories(ph); // Set up a non-obfuscated wrapper to write some initial data. @@ -243,7 +243,7 @@ BOOST_AUTO_TEST_CASE(existing_data_no_obfuscate) BOOST_AUTO_TEST_CASE(existing_data_reindex) { // We're going to share this fs::path between two wrappers - fs::path ph = GetDataDir() / "existing_data_reindex"; + fs::path ph = m_args.GetDataDirPath() / "existing_data_reindex"; create_directories(ph); // Set up a non-obfuscated wrapper to write some initial data. @@ -278,7 +278,7 @@ BOOST_AUTO_TEST_CASE(existing_data_reindex) BOOST_AUTO_TEST_CASE(iterator_ordering) { - fs::path ph = GetDataDir() / "iterator_ordering"; + fs::path ph = m_args.GetDataDirPath() / "iterator_ordering"; CDBWrapper dbw(ph, (1 << 20), true, false, false); for (int x=0x00; x<256; ++x) { uint8_t key = x; @@ -358,7 +358,7 @@ BOOST_AUTO_TEST_CASE(iterator_string_ordering) { char buf[10]; - fs::path ph = GetDataDir() / "iterator_string_ordering"; + fs::path ph = m_args.GetDataDirPath() / "iterator_string_ordering"; CDBWrapper dbw(ph, (1 << 20), true, false, false); for (int x=0x00; x<10; ++x) { for (int y = 0; y < 10; y++) { @@ -404,7 +404,7 @@ BOOST_AUTO_TEST_CASE(unicodepath) // On Windows this test will fail if the directory is created using // the ANSI CreateDirectoryA call and the code page isn't UTF8. // It will succeed if created with CreateDirectoryW. - fs::path ph = GetDataDir() / "test_runner_₿_🏃_20191128_104644"; + fs::path ph = m_args.GetDataDirPath() / "test_runner_₿_🏃_20191128_104644"; CDBWrapper dbw(ph, (1 << 20)); fs::path lockPath = ph / "LOCK"; diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp index 599e628685..ddf0e0ca90 100644 --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -208,7 +208,7 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management) BOOST_AUTO_TEST_CASE(peer_discouragement) { const CChainParams& chainparams = Params(); - auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); + auto banman = std::make_unique<BanMan>(m_args.GetDataDirPath() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); auto connman = std::make_unique<CConnmanTest>(0x1337, 0x1337, *m_node.addrman); auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool, false); @@ -302,7 +302,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement) BOOST_AUTO_TEST_CASE(DoS_bantime) { const CChainParams& chainparams = Params(); - auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); + auto banman = std::make_unique<BanMan>(m_args.GetDataDirPath() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman); auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(), *m_node.scheduler, *m_node.chainman, *m_node.mempool, false); diff --git a/src/test/flatfile_tests.cpp b/src/test/flatfile_tests.cpp index 0c5c19113d..9194ed8130 100644 --- a/src/test/flatfile_tests.cpp +++ b/src/test/flatfile_tests.cpp @@ -14,7 +14,7 @@ BOOST_FIXTURE_TEST_SUITE(flatfile_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(flatfile_filename) { - const auto data_dir = GetDataDir(); + const auto data_dir = m_args.GetDataDirPath(); FlatFilePos pos(456, 789); @@ -27,7 +27,7 @@ BOOST_AUTO_TEST_CASE(flatfile_filename) BOOST_AUTO_TEST_CASE(flatfile_open) { - const auto data_dir = GetDataDir(); + const auto data_dir = m_args.GetDataDirPath(); FlatFileSeq seq(data_dir, "a", 16 * 1024); std::string line1("A purely peer-to-peer version of electronic cash would allow online " @@ -88,7 +88,7 @@ BOOST_AUTO_TEST_CASE(flatfile_open) BOOST_AUTO_TEST_CASE(flatfile_allocate) { - const auto data_dir = GetDataDir(); + const auto data_dir = m_args.GetDataDirPath(); FlatFileSeq seq(data_dir, "a", 100); bool out_of_space; @@ -108,7 +108,7 @@ BOOST_AUTO_TEST_CASE(flatfile_allocate) BOOST_AUTO_TEST_CASE(flatfile_flush) { - const auto data_dir = GetDataDir(); + const auto data_dir = m_args.GetDataDirPath(); FlatFileSeq seq(data_dir, "a", 100); bool out_of_space; diff --git a/src/test/fs_tests.cpp b/src/test/fs_tests.cpp index e52cd5230c..452bc06bbb 100644 --- a/src/test/fs_tests.cpp +++ b/src/test/fs_tests.cpp @@ -13,7 +13,7 @@ BOOST_FIXTURE_TEST_SUITE(fs_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(fsbridge_fstream) { - fs::path tmpfolder = GetDataDir(); + fs::path tmpfolder = m_args.GetDataDirPath(); // tmpfile1 should be the same as tmpfile2 fs::path tmpfile1 = tmpfolder / "fs_tests_₿_🏃"; fs::path tmpfile2 = tmpfolder / "fs_tests_₿_🏃"; diff --git a/src/test/getarg_tests.cpp b/src/test/getarg_tests.cpp index 45c9b90ee9..2a217f3455 100644 --- a/src/test/getarg_tests.cpp +++ b/src/test/getarg_tests.cpp @@ -18,7 +18,7 @@ namespace getarg_tests{ protected: void SetupArgs(const std::vector<std::pair<std::string, unsigned int>>& args); void ResetArgs(const std::string& strArg); - ArgsManager m_args; + ArgsManager m_local_args; }; } @@ -39,14 +39,14 @@ void LocalTestingSetup :: ResetArgs(const std::string& strArg) vecChar.push_back(s.c_str()); std::string error; - BOOST_CHECK(m_args.ParseParameters(vecChar.size(), vecChar.data(), error)); + BOOST_CHECK(m_local_args.ParseParameters(vecChar.size(), vecChar.data(), error)); } void LocalTestingSetup :: SetupArgs(const std::vector<std::pair<std::string, unsigned int>>& args) { - m_args.ClearArgs(); + m_local_args.ClearArgs(); for (const auto& arg : args) { - m_args.AddArg(arg.first, "", arg.second, OptionsCategory::OPTIONS); + m_local_args.AddArg(arg.first, "", arg.second, OptionsCategory::OPTIONS); } } @@ -55,52 +55,52 @@ BOOST_AUTO_TEST_CASE(boolarg) const auto foo = std::make_pair("-foo", ArgsManager::ALLOW_ANY); SetupArgs({foo}); ResetArgs("-foo"); - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); - BOOST_CHECK(!m_args.GetBoolArg("-fo", false)); - BOOST_CHECK(m_args.GetBoolArg("-fo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-fo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-fo", true)); - BOOST_CHECK(!m_args.GetBoolArg("-fooo", false)); - BOOST_CHECK(m_args.GetBoolArg("-fooo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-fooo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-fooo", true)); ResetArgs("-foo=0"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); ResetArgs("-foo=1"); - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); // New 0.6 feature: auto-map -nosomething to !-something: ResetArgs("-nofoo"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); ResetArgs("-nofoo=1"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); ResetArgs("-foo -nofoo"); // -nofoo should win - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); ResetArgs("-foo=1 -nofoo=1"); // -nofoo should win - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); ResetArgs("-foo=0 -nofoo=0"); // -nofoo=0 should win - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); // New 0.6 feature: treat -- same as -: ResetArgs("--foo=1"); - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); ResetArgs("--nofoo=1"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); } @@ -110,24 +110,24 @@ BOOST_AUTO_TEST_CASE(stringarg) const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_ANY); SetupArgs({foo, bar}); ResetArgs(""); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), ""); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", "eleven"), "eleven"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), ""); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", "eleven"), "eleven"); ResetArgs("-foo -bar"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), ""); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", "eleven"), ""); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), ""); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", "eleven"), ""); ResetArgs("-foo="); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), ""); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", "eleven"), ""); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), ""); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", "eleven"), ""); ResetArgs("-foo=11"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), "11"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", "eleven"), "11"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), "11"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", "eleven"), "11"); ResetArgs("-foo=eleven"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), "eleven"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", "eleven"), "eleven"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), "eleven"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", "eleven"), "eleven"); } @@ -137,20 +137,20 @@ BOOST_AUTO_TEST_CASE(intarg) const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_ANY); SetupArgs({foo, bar}); ResetArgs(""); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", 11), 11); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", 0), 0); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", 11), 11); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", 0), 0); ResetArgs("-foo -bar"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", 11), 0); - BOOST_CHECK_EQUAL(m_args.GetArg("-bar", 11), 0); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", 11), 0); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-bar", 11), 0); ResetArgs("-foo=11 -bar=12"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", 0), 11); - BOOST_CHECK_EQUAL(m_args.GetArg("-bar", 11), 12); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", 0), 11); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-bar", 11), 12); ResetArgs("-foo=NaN -bar=NotANumber"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", 1), 0); - BOOST_CHECK_EQUAL(m_args.GetArg("-bar", 11), 0); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", 1), 0); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-bar", 11), 0); } BOOST_AUTO_TEST_CASE(doubledash) @@ -159,11 +159,11 @@ BOOST_AUTO_TEST_CASE(doubledash) const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_ANY); SetupArgs({foo, bar}); ResetArgs("--foo"); - BOOST_CHECK_EQUAL(m_args.GetBoolArg("-foo", false), true); + BOOST_CHECK_EQUAL(m_local_args.GetBoolArg("-foo", false), true); ResetArgs("--foo=verbose --bar=1"); - BOOST_CHECK_EQUAL(m_args.GetArg("-foo", ""), "verbose"); - BOOST_CHECK_EQUAL(m_args.GetArg("-bar", 0), 1); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-foo", ""), "verbose"); + BOOST_CHECK_EQUAL(m_local_args.GetArg("-bar", 0), 1); } BOOST_AUTO_TEST_CASE(boolargno) @@ -172,24 +172,24 @@ BOOST_AUTO_TEST_CASE(boolargno) const auto bar = std::make_pair("-bar", ArgsManager::ALLOW_ANY); SetupArgs({foo, bar}); ResetArgs("-nofoo"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); ResetArgs("-nofoo=1"); - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); ResetArgs("-nofoo=0"); - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); ResetArgs("-foo --nofoo"); // --nofoo should win - BOOST_CHECK(!m_args.GetBoolArg("-foo", true)); - BOOST_CHECK(!m_args.GetBoolArg("-foo", false)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", true)); + BOOST_CHECK(!m_local_args.GetBoolArg("-foo", false)); ResetArgs("-nofoo -foo"); // foo always wins: - BOOST_CHECK(m_args.GetBoolArg("-foo", true)); - BOOST_CHECK(m_args.GetBoolArg("-foo", false)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", true)); + BOOST_CHECK(m_local_args.GetBoolArg("-foo", false)); } BOOST_AUTO_TEST_CASE(logargs) @@ -209,7 +209,7 @@ BOOST_AUTO_TEST_CASE(logargs) }); // Log the arguments - m_args.LogArgs(); + m_local_args.LogArgs(); LogInstance().DeleteCallback(print_connection); // Check that what should appear does, and what shouldn't doesn't. diff --git a/src/test/settings_tests.cpp b/src/test/settings_tests.cpp index 548fd020a6..f5ae9f86d1 100644 --- a/src/test/settings_tests.cpp +++ b/src/test/settings_tests.cpp @@ -45,7 +45,7 @@ BOOST_FIXTURE_TEST_SUITE(settings_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(ReadWrite) { - fs::path path = GetDataDir() / "settings.json"; + fs::path path = m_args.GetDataDirPath() / "settings.json"; WriteText(path, R"({ "string": "string", diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp index 2e7f64a444..ffc5115145 100644 --- a/src/test/util/setup_common.cpp +++ b/src/test/util/setup_common.cpp @@ -71,7 +71,8 @@ std::ostream& operator<<(std::ostream& os, const uint256& num) } BasicTestingSetup::BasicTestingSetup(const std::string& chainName, const std::vector<const char*>& extra_args) - : m_path_root{fs::temp_directory_path() / "test_common_" PACKAGE_NAME / g_insecure_rand_ctx_temp_path.rand256().ToString()} + : m_path_root{fs::temp_directory_path() / "test_common_" PACKAGE_NAME / g_insecure_rand_ctx_temp_path.rand256().ToString()}, + m_args{} { const std::vector<const char*> arguments = Cat( { @@ -87,8 +88,9 @@ BasicTestingSetup::BasicTestingSetup(const std::string& chainName, const std::ve extra_args); util::ThreadRename("test"); fs::create_directories(m_path_root); + m_args.ForceSetArg("-datadir", m_path_root.string()); gArgs.ForceSetArg("-datadir", m_path_root.string()); - ClearDatadirCache(); + gArgs.ClearPathCache(); { SetupServerArgs(m_node); std::string error; @@ -191,7 +193,7 @@ TestingSetup::TestingSetup(const std::string& chainName, const std::vector<const } m_node.addrman = std::make_unique<CAddrMan>(); - m_node.banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); + m_node.banman = std::make_unique<BanMan>(m_args.GetDataDirPath() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME); m_node.connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman); // Deterministic randomness for tests. m_node.peerman = PeerManager::make(chainparams, *m_node.connman, *m_node.addrman, m_node.banman.get(), *m_node.scheduler, *m_node.chainman, diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h index a32f1f3805..b19dd75765 100644 --- a/src/test/util/setup_common.h +++ b/src/test/util/setup_common.h @@ -8,6 +8,7 @@ #include <chainparamsbase.h> #include <fs.h> #include <key.h> +#include <util/system.h> #include <node/context.h> #include <pubkey.h> #include <random.h> @@ -80,6 +81,7 @@ struct BasicTestingSetup { ~BasicTestingSetup(); const fs::path m_path_root; + ArgsManager m_args; }; /** Testing setup that performs all steps up until right before diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index a1ac9ead69..04b908829b 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -49,24 +49,27 @@ BOOST_FIXTURE_TEST_SUITE(util_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(util_datadir) { - ClearDatadirCache(); - const fs::path dd_norm = GetDataDir(); + // Use local args variable instead of m_args to avoid making assumptions about test setup + ArgsManager args; + args.ForceSetArg("-datadir", m_path_root.string()); - gArgs.ForceSetArg("-datadir", dd_norm.string() + "/"); - ClearDatadirCache(); - BOOST_CHECK_EQUAL(dd_norm, GetDataDir()); + const fs::path dd_norm = args.GetDataDirPath(); - gArgs.ForceSetArg("-datadir", dd_norm.string() + "/."); - ClearDatadirCache(); - BOOST_CHECK_EQUAL(dd_norm, GetDataDir()); + args.ForceSetArg("-datadir", dd_norm.string() + "/"); + args.ClearPathCache(); + BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirPath()); - gArgs.ForceSetArg("-datadir", dd_norm.string() + "/./"); - ClearDatadirCache(); - BOOST_CHECK_EQUAL(dd_norm, GetDataDir()); + args.ForceSetArg("-datadir", dd_norm.string() + "/."); + args.ClearPathCache(); + BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirPath()); - gArgs.ForceSetArg("-datadir", dd_norm.string() + "/.//"); - ClearDatadirCache(); - BOOST_CHECK_EQUAL(dd_norm, GetDataDir()); + args.ForceSetArg("-datadir", dd_norm.string() + "/./"); + args.ClearPathCache(); + BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirPath()); + + args.ForceSetArg("-datadir", dd_norm.string() + "/.//"); + args.ClearPathCache(); + BOOST_CHECK_EQUAL(dd_norm, args.GetDataDirPath()); } BOOST_AUTO_TEST_CASE(util_check) @@ -1143,21 +1146,23 @@ BOOST_AUTO_TEST_CASE(util_ReadWriteSettings) { // Test writing setting. TestArgsManager args1; + args1.ForceSetArg("-datadir", m_path_root.string()); args1.LockSettings([&](util::Settings& settings) { settings.rw_settings["name"] = "value"; }); args1.WriteSettingsFile(); // Test reading setting. TestArgsManager args2; + args2.ForceSetArg("-datadir", m_path_root.string()); args2.ReadSettingsFile(); args2.LockSettings([&](util::Settings& settings) { BOOST_CHECK_EQUAL(settings.rw_settings["name"].get_str(), "value"); }); // Test error logging, and remove previously written setting. { ASSERT_DEBUG_LOG("Failed renaming settings file"); - fs::remove(GetDataDir() / "settings.json"); - fs::create_directory(GetDataDir() / "settings.json"); + fs::remove(args1.GetDataDirPath() / "settings.json"); + fs::create_directory(args1.GetDataDirPath() / "settings.json"); args2.WriteSettingsFile(); - fs::remove(GetDataDir() / "settings.json"); + fs::remove(args1.GetDataDirPath() / "settings.json"); } } @@ -1796,7 +1801,7 @@ static constexpr char ExitCommand = 'X'; BOOST_AUTO_TEST_CASE(test_LockDirectory) { - fs::path dirname = GetDataDir() / "lock_dir"; + fs::path dirname = m_args.GetDataDirPath() / "lock_dir"; const std::string lockname = ".lock"; #ifndef WIN32 // Revert SIGCHLD to default, otherwise boost.test will catch and fail on @@ -1885,7 +1890,7 @@ BOOST_AUTO_TEST_CASE(test_LockDirectory) BOOST_AUTO_TEST_CASE(test_DirIsWritable) { // Should be able to write to the data dir. - fs::path tmpdirname = GetDataDir(); + fs::path tmpdirname = m_args.GetDataDirPath(); BOOST_CHECK_EQUAL(DirIsWritable(tmpdirname), true); // Should not be able to write to a non-existent dir. |