Skip to content

Commit

Permalink
Reduce the use of ClearArg and only guarantee that we clear forced args.
Browse files Browse the repository at this point in the history
Summary: This feature doesn't exist in Core, so reducing its surface make sense. It is not strictly limited to forced args at the moment, but the name provide intent and we'll get there after backporting Core [[bitcoin/bitcoin#15934 | PR15934]] .

Test Plan:
  make check

Updated test to reflect the new behavior.

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Differential Revision: https://reviews.bitcoinabc.org/D5850
  • Loading branch information
deadalnix committed Apr 27, 2020
1 parent 154faf3 commit b60a395
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/test/miner_tests.cpp
Expand Up @@ -764,7 +764,7 @@ BOOST_AUTO_TEST_CASE(BlockAssembler_construction) {
// If the parameter is not specified, we use
// DEFAULT_MAX_GENERATED_BLOCK_SIZE
{
gArgs.ClearArg("-blockmaxsize");
gArgs.ClearForcedArg("-blockmaxsize");
BlockAssembler ba(config, g_mempool);
BOOST_CHECK_EQUAL(ba.GetMaxGeneratedBlockSize(),
DEFAULT_MAX_GENERATED_BLOCK_SIZE);
Expand Down
2 changes: 1 addition & 1 deletion src/test/transaction_tests.cpp
Expand Up @@ -732,7 +732,7 @@ BOOST_AUTO_TEST_CASE(test_IsStandard) {
BOOST_CHECK(!IsStandardTx(CTransaction(t), reason));

// Clear custom confirguration.
gArgs.ClearArg("-datacarriersize");
gArgs.ClearForcedArg("-datacarriersize");

// Data payload can be encoded in any way...
t.vout[0].scriptPubKey = CScript() << OP_RETURN << ParseHex("");
Expand Down
29 changes: 15 additions & 14 deletions src/test/util_tests.cpp
Expand Up @@ -597,32 +597,32 @@ BOOST_AUTO_TEST_CASE(util_GetArg) {
BOOST_CHECK_EQUAL(testArgs.GetArg("pritest4", "default"), "b");
}

BOOST_AUTO_TEST_CASE(util_ClearArg) {
BOOST_AUTO_TEST_CASE(util_ClearForcedArg) {
TestArgsManager testArgs;

// Clear single string arg
testArgs.GetOverrideArgs()["strtest1"] = {"string..."};
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest1", "default"), "string...");
testArgs.ClearArg("strtest1");
testArgs.ClearForcedArg("strtest1");
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest1", "default"), "default");

// Clear boolean arg
testArgs.GetOverrideArgs()["booltest1"] = {"1"};
BOOST_CHECK_EQUAL(testArgs.GetBoolArg("booltest1", false), true);
testArgs.ClearArg("booltest1");
testArgs.ClearForcedArg("booltest1");
BOOST_CHECK_EQUAL(testArgs.GetArg("booltest1", false), false);

// Clear config args only
testArgs.GetConfigArgs()["strtest2"].push_back("string...");
testArgs.GetConfigArgs()["strtest2"].push_back("...gnirts");
// Clear multi arg.
testArgs.GetOverrideArgs()["strtest2"].push_back("string...");
testArgs.GetOverrideArgs()["strtest2"].push_back("...gnirts");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").size(), 2);
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").front(), "string...");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").back(), "...gnirts");
testArgs.ClearArg("strtest2");
testArgs.ClearForcedArg("strtest2");
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest2", "default"), "default");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").size(), 0);

// Clear both cli args and config args
// Clear exlusively overridden args
testArgs.GetOverrideArgs()["strtest3"].push_back("cli string...");
testArgs.GetOverrideArgs()["strtest3"].push_back("...gnirts ilc");
testArgs.GetConfigArgs()["strtest3"].push_back("string...");
Expand All @@ -631,9 +631,10 @@ BOOST_AUTO_TEST_CASE(util_ClearArg) {
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").size(), 4);
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").front(), "cli string...");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").back(), "...gnirts");
testArgs.ClearArg("strtest3");
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest3", "default"), "default");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").size(), 0);
testArgs.ClearForcedArg("strtest3");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").size(), 2);
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").front(), "string...");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest3").back(), "...gnirts");
}

BOOST_AUTO_TEST_CASE(util_SetArg) {
Expand All @@ -646,7 +647,7 @@ BOOST_AUTO_TEST_CASE(util_SetArg) {
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest1").size(), 1);
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest1").front(), "string...");
BOOST_CHECK_EQUAL(testArgs.SoftSetArg("strtest1", "...gnirts"), false);
testArgs.ClearArg("strtest1");
testArgs.ClearForcedArg("strtest1");
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest1", "default"), "default");
BOOST_CHECK_EQUAL(testArgs.SoftSetArg("strtest1", "...gnirts"), true);
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest1", "default"), "...gnirts");
Expand All @@ -656,7 +657,7 @@ BOOST_AUTO_TEST_CASE(util_SetArg) {
BOOST_CHECK_EQUAL(testArgs.SoftSetBoolArg("booltest1", true), true);
BOOST_CHECK_EQUAL(testArgs.GetBoolArg("booltest1", false), true);
BOOST_CHECK_EQUAL(testArgs.SoftSetBoolArg("booltest1", false), false);
testArgs.ClearArg("booltest1");
testArgs.ClearForcedArg("booltest1");
BOOST_CHECK_EQUAL(testArgs.GetBoolArg("booltest1", true), true);
BOOST_CHECK_EQUAL(testArgs.SoftSetBoolArg("booltest1", false), true);
BOOST_CHECK_EQUAL(testArgs.GetBoolArg("booltest1", true), false);
Expand All @@ -678,7 +679,7 @@ BOOST_AUTO_TEST_CASE(util_SetArg) {
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").size(), 2);
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").front(), "...gnirts");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").back(), "string...");
testArgs.ClearArg("strtest2");
testArgs.ClearForcedArg("strtest2");
BOOST_CHECK_EQUAL(testArgs.GetArg("strtest2", "default"), "default");
BOOST_CHECK_EQUAL(testArgs.GetArgs("strtest2").size(), 0);
testArgs.ForceSetMultiArg("strtest2", "string...");
Expand Down
3 changes: 1 addition & 2 deletions src/util/system.cpp
Expand Up @@ -659,10 +659,9 @@ void ArgsManager::AddHiddenArgs(const std::vector<std::string> &names) {
}
}

void ArgsManager::ClearArg(const std::string &strArg) {
void ArgsManager::ClearForcedArg(const std::string &strArg) {
LOCK(cs_args);
m_override_args.erase(strArg);
m_config_args.erase(strArg);
}

std::string ArgsManager::GetHelpMessage() const {
Expand Down
6 changes: 4 additions & 2 deletions src/util/system.h
Expand Up @@ -301,8 +301,10 @@ class ArgsManager {
void AddArg(const std::string &name, const std::string &help,
unsigned int flags, const OptionsCategory &cat);

// Remove an arg setting, used only in testing
void ClearArg(const std::string &strArg);
/**
* Remove a forced arg setting, used only in testing.
*/
void ClearForcedArg(const std::string &strArg);

/**
* Add many hidden arguments
Expand Down

0 comments on commit b60a395

Please sign in to comment.