mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 15:50:07 +01:00
Merge #21244: Move GetDataDir to ArgsManager
bb8d1c6e02Change ClearDataDirPathCache() to ArgsManager.ClearPathCache(). (Kiminuo)b4190eff72Change GetBlocksDir() to ArgsManager.GetBlocksDirPath(). (Kiminuo)83292e2a70scripted-diff: Modify unit tests to use the ArgsManager in the BasicTestingSetup class instead of implicitly relying on gArgs. (Kiminuo)55c68e6f01scripted-diff: Replace m_args with m_local_args in getarg_tests.cpp (Kiminuo)511ce3a26bBasicTestingSetup: Add ArgsManager. (Kiminuo)1cb52ba065Modify "util_datadir" unit test to not use gArgs. (Kiminuo)1add318704Move GetDataDir(fNetSpecific) implementation to ArgsManager. (Kiminuo)70cdf679f8Move 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 ACKbb8d1c6e02. Just minor const/naming changes and splitting/scripting commits since last review MarcoFalke: review ACKbb8d1c6e02📓 hebasto: re-ACKbb8d1c6e02, addressed comments, and two commits made scripted-diffs since my [previous](https://github.com/bitcoin/bitcoin/pull/21244#pullrequestreview-638270583) review. Tree-SHA512: ba9408c22129d6572beaa103dca0324131766f06d562bb7d6b9e214a0a4d40b0216ce861384562bde24b744003b3fbe6fac239061c8fd798abd3981ebc1b9019
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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_₿_🏃";
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user