17
17
18
18
#include < stdint.h>
19
19
#include < thread>
20
+ #include < univalue.h>
20
21
#include < utility>
21
22
#include < vector>
22
23
#ifndef WIN32
@@ -166,14 +167,12 @@ BOOST_AUTO_TEST_CASE(util_FormatISO8601Date)
166
167
struct TestArgsManager : public ArgsManager
167
168
{
168
169
TestArgsManager () { m_network_only_args.clear (); }
169
- std::map<std::string, std::vector<std::string> >& GetOverrideArgs () { return m_override_args; }
170
- std::map<std::string, std::vector<std::string> >& GetConfigArgs () { return m_config_args; }
171
170
void ReadConfigString (const std::string str_config)
172
171
{
173
172
std::istringstream streamConfig (str_config);
174
173
{
175
174
LOCK (cs_args);
176
- m_config_args .clear ();
175
+ m_settings. ro_config .clear ();
177
176
m_config_sections.clear ();
178
177
}
179
178
std::string error;
@@ -193,6 +192,7 @@ struct TestArgsManager : public ArgsManager
193
192
using ArgsManager::ReadConfigStream;
194
193
using ArgsManager::cs_args;
195
194
using ArgsManager::m_network;
195
+ using ArgsManager::m_settings;
196
196
};
197
197
198
198
BOOST_AUTO_TEST_CASE (util_ParseParameters)
@@ -206,28 +206,29 @@ BOOST_AUTO_TEST_CASE(util_ParseParameters)
206
206
const char *argv_test[] = {" -ignored" , " -a" , " -b" , " -ccc=argument" , " -ccc=multiple" , " f" , " -d=e" };
207
207
208
208
std::string error;
209
+ LOCK (testArgs.cs_args );
209
210
testArgs.SetupArgs ({a, b, ccc, d});
210
211
BOOST_CHECK (testArgs.ParseParameters (0 , (char **)argv_test, error));
211
- BOOST_CHECK (testArgs.GetOverrideArgs (). empty () && testArgs.GetConfigArgs () .empty ());
212
+ BOOST_CHECK (testArgs.m_settings . command_line_options . empty () && testArgs.m_settings . ro_config .empty ());
212
213
213
214
BOOST_CHECK (testArgs.ParseParameters (1 , (char **)argv_test, error));
214
- BOOST_CHECK (testArgs.GetOverrideArgs (). empty () && testArgs.GetConfigArgs () .empty ());
215
+ BOOST_CHECK (testArgs.m_settings . command_line_options . empty () && testArgs.m_settings . ro_config .empty ());
215
216
216
217
BOOST_CHECK (testArgs.ParseParameters (7 , (char **)argv_test, error));
217
218
// expectation: -ignored is ignored (program name argument),
218
219
// -a, -b and -ccc end up in map, -d ignored because it is after
219
220
// a non-option argument (non-GNU option parsing)
220
- BOOST_CHECK (testArgs.GetOverrideArgs (). size () == 3 && testArgs.GetConfigArgs () .empty ());
221
+ BOOST_CHECK (testArgs.m_settings . command_line_options . size () == 3 && testArgs.m_settings . ro_config .empty ());
221
222
BOOST_CHECK (testArgs.IsArgSet (" -a" ) && testArgs.IsArgSet (" -b" ) && testArgs.IsArgSet (" -ccc" )
222
223
&& !testArgs.IsArgSet (" f" ) && !testArgs.IsArgSet (" -d" ));
223
- BOOST_CHECK (testArgs.GetOverrideArgs (). count (" - a" ) && testArgs.GetOverrideArgs (). count (" - b" ) && testArgs.GetOverrideArgs (). count (" - ccc" )
224
- && !testArgs.GetOverrideArgs (). count (" f" ) && !testArgs.GetOverrideArgs (). count (" - d" ));
225
-
226
- BOOST_CHECK (testArgs.GetOverrideArgs ()[ " - a" ].size () == 1 );
227
- BOOST_CHECK (testArgs.GetOverrideArgs ()[ " - a" ].front () == " " );
228
- BOOST_CHECK (testArgs.GetOverrideArgs ()[ " - ccc" ].size () == 2 );
229
- BOOST_CHECK (testArgs.GetOverrideArgs ()[ " - ccc" ].front () == " argument" );
230
- BOOST_CHECK (testArgs.GetOverrideArgs ()[ " - ccc" ].back () == " multiple" );
224
+ BOOST_CHECK (testArgs.m_settings . command_line_options . count (" a" ) && testArgs.m_settings . command_line_options . count (" b" ) && testArgs.m_settings . command_line_options . count (" ccc" )
225
+ && !testArgs.m_settings . command_line_options . count (" f" ) && !testArgs.m_settings . command_line_options . count (" d" ));
226
+
227
+ BOOST_CHECK (testArgs.m_settings . command_line_options [ " a" ].size () == 1 );
228
+ BOOST_CHECK (testArgs.m_settings . command_line_options [ " a" ].front (). get_str () == " " );
229
+ BOOST_CHECK (testArgs.m_settings . command_line_options [ " ccc" ].size () == 2 );
230
+ BOOST_CHECK (testArgs.m_settings . command_line_options [ " ccc" ].front (). get_str () == " argument" );
231
+ BOOST_CHECK (testArgs.m_settings . command_line_options [ " ccc" ].back (). get_str () == " multiple" );
231
232
BOOST_CHECK (testArgs.GetArgs (" -ccc" ).size () == 2 );
232
233
}
233
234
@@ -298,6 +299,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArg)
298
299
const char *argv_test[] = {
299
300
" ignored" , " -a" , " -nob" , " -c=0" , " -d=1" , " -e=false" , " -f=true" };
300
301
std::string error;
302
+ LOCK (testArgs.cs_args );
301
303
testArgs.SetupArgs ({a, b, c, d, e, f});
302
304
BOOST_CHECK (testArgs.ParseParameters (7 , (char **)argv_test, error));
303
305
@@ -306,8 +308,8 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArg)
306
308
BOOST_CHECK (testArgs.IsArgSet ({' -' , opt}) || !opt);
307
309
308
310
// Nothing else should be in the map
309
- BOOST_CHECK (testArgs.GetOverrideArgs () .size () == 6 &&
310
- testArgs.GetConfigArgs () .empty ());
311
+ BOOST_CHECK (testArgs.m_settings . command_line_options .size () == 6 &&
312
+ testArgs.m_settings . ro_config .empty ());
311
313
312
314
// The -no prefix should get stripped on the way in.
313
315
BOOST_CHECK (!testArgs.IsArgSet (" -nob" ));
@@ -403,6 +405,7 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
403
405
" iii=2\n " ;
404
406
405
407
TestArgsManager test_args;
408
+ LOCK (test_args.cs_args );
406
409
const auto a = std::make_pair (" -a" , ArgsManager::ALLOW_BOOL);
407
410
const auto b = std::make_pair (" -b" , ArgsManager::ALLOW_BOOL);
408
411
const auto ccc = std::make_pair (" -ccc" , ArgsManager::ALLOW_STRING);
@@ -419,22 +422,25 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
419
422
// expectation: a, b, ccc, d, fff, ggg, h, i end up in map
420
423
// so do sec1.ccc, sec1.d, sec1.h, sec2.ccc, sec2.iii
421
424
422
- BOOST_CHECK (test_args.GetOverrideArgs ().empty ());
423
- BOOST_CHECK (test_args.GetConfigArgs ().size () == 13 );
424
-
425
- BOOST_CHECK (test_args.GetConfigArgs ().count (" -a" )
426
- && test_args.GetConfigArgs ().count (" -b" )
427
- && test_args.GetConfigArgs ().count (" -ccc" )
428
- && test_args.GetConfigArgs ().count (" -d" )
429
- && test_args.GetConfigArgs ().count (" -fff" )
430
- && test_args.GetConfigArgs ().count (" -ggg" )
431
- && test_args.GetConfigArgs ().count (" -h" )
432
- && test_args.GetConfigArgs ().count (" -i" )
425
+ BOOST_CHECK (test_args.m_settings .command_line_options .empty ());
426
+ BOOST_CHECK (test_args.m_settings .ro_config .size () == 3 );
427
+ BOOST_CHECK (test_args.m_settings .ro_config [" " ].size () == 8 );
428
+ BOOST_CHECK (test_args.m_settings .ro_config [" sec1" ].size () == 3 );
429
+ BOOST_CHECK (test_args.m_settings .ro_config [" sec2" ].size () == 2 );
430
+
431
+ BOOST_CHECK (test_args.m_settings .ro_config [" " ].count (" a" )
432
+ && test_args.m_settings .ro_config [" " ].count (" b" )
433
+ && test_args.m_settings .ro_config [" " ].count (" ccc" )
434
+ && test_args.m_settings .ro_config [" " ].count (" d" )
435
+ && test_args.m_settings .ro_config [" " ].count (" fff" )
436
+ && test_args.m_settings .ro_config [" " ].count (" ggg" )
437
+ && test_args.m_settings .ro_config [" " ].count (" h" )
438
+ && test_args.m_settings .ro_config [" " ].count (" i" )
433
439
);
434
- BOOST_CHECK (test_args.GetConfigArgs (). count ( " - sec1. ccc" )
435
- && test_args.GetConfigArgs (). count ( " - sec1. h" )
436
- && test_args.GetConfigArgs (). count ( " - sec2. ccc" )
437
- && test_args.GetConfigArgs (). count ( " - sec2. iii" )
440
+ BOOST_CHECK (test_args.m_settings . ro_config [ " sec1" ]. count ( " ccc" )
441
+ && test_args.m_settings . ro_config [ " sec1" ]. count ( " h" )
442
+ && test_args.m_settings . ro_config [ " sec2" ]. count ( " ccc" )
443
+ && test_args.m_settings . ro_config [ " sec2" ]. count ( " iii" )
438
444
);
439
445
440
446
BOOST_CHECK (test_args.IsArgSet (" -a" )
@@ -573,24 +579,25 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
573
579
BOOST_AUTO_TEST_CASE (util_GetArg)
574
580
{
575
581
TestArgsManager testArgs;
576
- testArgs.GetOverrideArgs ().clear ();
577
- testArgs.GetOverrideArgs ()[" strtest1" ] = {" string..." };
582
+ LOCK (testArgs.cs_args );
583
+ testArgs.m_settings .command_line_options .clear ();
584
+ testArgs.m_settings .command_line_options [" strtest1" ] = {" string..." };
578
585
// strtest2 undefined on purpose
579
- testArgs.GetOverrideArgs () [" inttest1" ] = {" 12345" };
580
- testArgs.GetOverrideArgs () [" inttest2" ] = {" 81985529216486895" };
586
+ testArgs.m_settings . command_line_options [" inttest1" ] = {" 12345" };
587
+ testArgs.m_settings . command_line_options [" inttest2" ] = {" 81985529216486895" };
581
588
// inttest3 undefined on purpose
582
- testArgs.GetOverrideArgs () [" booltest1" ] = {" " };
589
+ testArgs.m_settings . command_line_options [" booltest1" ] = {" " };
583
590
// booltest2 undefined on purpose
584
- testArgs.GetOverrideArgs () [" booltest3" ] = {" 0" };
585
- testArgs.GetOverrideArgs () [" booltest4" ] = {" 1" };
591
+ testArgs.m_settings . command_line_options [" booltest3" ] = {" 0" };
592
+ testArgs.m_settings . command_line_options [" booltest4" ] = {" 1" };
586
593
587
594
// priorities
588
- testArgs.GetOverrideArgs () [" pritest1" ] = {" a" , " b" };
589
- testArgs.GetConfigArgs () [" pritest2" ] = {" a" , " b" };
590
- testArgs.GetOverrideArgs () [" pritest3" ] = {" a" };
591
- testArgs.GetConfigArgs () [" pritest3" ] = {" b" };
592
- testArgs.GetOverrideArgs () [" pritest4" ] = {" a" ," b" };
593
- testArgs.GetConfigArgs () [" pritest4" ] = {" c" ," d" };
595
+ testArgs.m_settings . command_line_options [" pritest1" ] = {" a" , " b" };
596
+ testArgs.m_settings . ro_config [ " " ] [" pritest2" ] = {" a" , " b" };
597
+ testArgs.m_settings . command_line_options [" pritest3" ] = {" a" };
598
+ testArgs.m_settings . ro_config [ " " ] [" pritest3" ] = {" b" };
599
+ testArgs.m_settings . command_line_options [" pritest4" ] = {" a" ," b" };
600
+ testArgs.m_settings . ro_config [ " " ] [" pritest4" ] = {" c" ," d" };
594
601
595
602
BOOST_CHECK_EQUAL (testArgs.GetArg (" strtest1" , " default" ), " string..." );
596
603
BOOST_CHECK_EQUAL (testArgs.GetArg (" strtest2" , " default" ), " default" );
0 commit comments