@@ -187,6 +187,7 @@ BOOST_AUTO_TEST_CASE(util_FormatISO8601Time)
187
187
188
188
struct TestArgsManager : public ArgsManager
189
189
{
190
+ TestArgsManager () { m_network_only_args.clear (); }
190
191
std::map<std::string, std::vector<std::string> >& GetOverrideArgs () { return m_override_args; }
191
192
std::map<std::string, std::vector<std::string> >& GetConfigArgs () { return m_config_args; }
192
193
void ReadConfigString (const std::string str_config)
@@ -198,6 +199,11 @@ struct TestArgsManager : public ArgsManager
198
199
}
199
200
ReadConfigStream (streamConfig);
200
201
}
202
+ void SetNetworkOnlyArg (const std::string arg)
203
+ {
204
+ LOCK (cs_args);
205
+ m_network_only_args.insert (arg);
206
+ }
201
207
};
202
208
203
209
BOOST_AUTO_TEST_CASE (util_ParseParameters)
@@ -327,6 +333,7 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
327
333
" \n "
328
334
" [sec1]\n "
329
335
" ccc=extend2\n "
336
+ " d=eee\n "
330
337
" h=1\n "
331
338
" [sec2]\n "
332
339
" ccc=extend3\n "
@@ -336,10 +343,10 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
336
343
337
344
test_args.ReadConfigString (str_config);
338
345
// expectation: a, b, ccc, d, fff, ggg, h, i end up in map
339
- // so do sec1.ccc, sec1.h, sec2.ccc, sec2.iii
346
+ // so do sec1.ccc, sec1.d, sec1. h, sec2.ccc, sec2.iii
340
347
341
348
BOOST_CHECK (test_args.GetOverrideArgs ().empty ());
342
- BOOST_CHECK (test_args.GetConfigArgs ().size () == 12 );
349
+ BOOST_CHECK (test_args.GetConfigArgs ().size () == 13 );
343
350
344
351
BOOST_CHECK (test_args.GetConfigArgs ().count (" -a" )
345
352
&& test_args.GetConfigArgs ().count (" -b" )
@@ -429,12 +436,13 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
429
436
// same as original
430
437
BOOST_CHECK (test_args.GetArg (" -a" , " xxx" ) == " "
431
438
&& test_args.GetArg (" -b" , " xxx" ) == " 1"
432
- && test_args.GetArg (" -d" , " xxx" ) == " e"
433
439
&& test_args.GetArg (" -fff" , " xxx" ) == " 0"
434
440
&& test_args.GetArg (" -ggg" , " xxx" ) == " 1"
435
441
&& test_args.GetArg (" -zzz" , " xxx" ) == " xxx"
436
442
&& test_args.GetArg (" -iii" , " xxx" ) == " xxx"
437
443
);
444
+ // d is overridden
445
+ BOOST_CHECK (test_args.GetArg (" -d" , " xxx" ) == " eee" );
438
446
// section-specific setting
439
447
BOOST_CHECK (test_args.GetArg (" -h" , " xxx" ) == " 1" );
440
448
// section takes priority for multiple values
@@ -463,6 +471,29 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
463
471
const std::vector<std::string> sec2_ccc_expected = {" extend3" ," argument" ," multiple" };
464
472
const auto & sec2_ccc_res = test_args.GetArgs (" -ccc" );
465
473
BOOST_CHECK_EQUAL_COLLECTIONS (sec2_ccc_res.begin (), sec2_ccc_res.end (), sec2_ccc_expected.begin (), sec2_ccc_expected.end ());
474
+
475
+ // Test section only options
476
+
477
+ test_args.SetNetworkOnlyArg (" -d" );
478
+ test_args.SetNetworkOnlyArg (" -ccc" );
479
+ test_args.SetNetworkOnlyArg (" -h" );
480
+
481
+ test_args.SelectConfigNetwork (CBaseChainParams::MAIN);
482
+ BOOST_CHECK (test_args.GetArg (" -d" , " xxx" ) == " e" );
483
+ BOOST_CHECK (test_args.GetArgs (" -ccc" ).size () == 2 );
484
+ BOOST_CHECK (test_args.GetArg (" -h" , " xxx" ) == " 0" );
485
+
486
+ test_args.SelectConfigNetwork (" sec1" );
487
+ BOOST_CHECK (test_args.GetArg (" -d" , " xxx" ) == " eee" );
488
+ BOOST_CHECK (test_args.GetArgs (" -d" ).size () == 1 );
489
+ BOOST_CHECK (test_args.GetArgs (" -ccc" ).size () == 2 );
490
+ BOOST_CHECK (test_args.GetArg (" -h" , " xxx" ) == " 1" );
491
+
492
+ test_args.SelectConfigNetwork (" sec2" );
493
+ BOOST_CHECK (test_args.GetArg (" -d" , " xxx" ) == " xxx" );
494
+ BOOST_CHECK (test_args.GetArgs (" -d" ).size () == 0 );
495
+ BOOST_CHECK (test_args.GetArgs (" -ccc" ).size () == 1 );
496
+ BOOST_CHECK (test_args.GetArg (" -h" , " xxx" ) == " 0" );
466
497
}
467
498
468
499
BOOST_AUTO_TEST_CASE (util_GetArg)
0 commit comments