@@ -340,6 +340,27 @@ BOOST_AUTO_TEST_CASE(util_ParseParameters)
340
340
BOOST_CHECK (testArgs.GetArgs (" -ccc" ).size () == 2 );
341
341
}
342
342
343
+ BOOST_AUTO_TEST_CASE (util_ParseInvalidParameters)
344
+ {
345
+ TestArgsManager test;
346
+ test.SetupArgs ({{" -registered" , ArgsManager::ALLOW_ANY}});
347
+
348
+ const char * argv[] = {" ignored" , " -registered" };
349
+ std::string error;
350
+ BOOST_CHECK (test.ParseParameters (2 , (char **)argv, error));
351
+ BOOST_CHECK_EQUAL (error, " " );
352
+
353
+ argv[1 ] = " -unregistered" ;
354
+ BOOST_CHECK (!test.ParseParameters (2 , (char **)argv, error));
355
+ BOOST_CHECK_EQUAL (error, " Invalid parameter -unregistered" );
356
+
357
+ // Make sure registered parameters prefixed with a chain name trigger errors.
358
+ // (Previously, they were accepted and ignored.)
359
+ argv[1 ] = " -test.registered" ;
360
+ BOOST_CHECK (!test.ParseParameters (2 , (char **)argv, error));
361
+ BOOST_CHECK_EQUAL (error, " Invalid parameter -test.registered" );
362
+ }
363
+
343
364
static void TestParse (const std::string& str, bool expected_bool, int64_t expected_int)
344
365
{
345
366
TestArgsManager test;
@@ -835,7 +856,8 @@ struct ArgsMergeTestingSetup : public BasicTestingSetup {
835
856
void ForEachMergeSetup (Fn&& fn)
836
857
{
837
858
ActionList arg_actions = {};
838
- ForEachNoDup (arg_actions, SET, SECTION_NEGATE, [&] {
859
+ // command_line_options do not have sections. Only iterate over SET and NEGATE
860
+ ForEachNoDup (arg_actions, SET, NEGATE, [&] {
839
861
ActionList conf_actions = {};
840
862
ForEachNoDup (conf_actions, SET, SECTION_NEGATE, [&] {
841
863
for (bool soft_set : {false , true }) {
@@ -995,7 +1017,7 @@ BOOST_FIXTURE_TEST_CASE(util_ArgsMerge, ArgsMergeTestingSetup)
995
1017
// Results file is formatted like:
996
1018
//
997
1019
// <input> || <IsArgSet/IsArgNegated/GetArg output> | <GetArgs output> | <GetUnsuitable output>
998
- BOOST_CHECK_EQUAL (out_sha_hex, " b835eef5977d69114eb039a976201f8c7121f34fe2b7ea2b73cafb516e5c9dc8 " );
1020
+ BOOST_CHECK_EQUAL (out_sha_hex, " 8fd4877bb8bf337badca950ede6c917441901962f160e52514e06a60dea46cde " );
999
1021
}
1000
1022
1001
1023
// Similar test as above, but for ArgsManager::GetChainName function.
0 commit comments