17 #include <boost/test/unit_test.hpp>
23 std::vector<std::string> vecArg;
29 vecArg.insert(vecArg.begin(),
"testbitcoin");
32 std::vector<const char*> vecChar;
33 vecChar.reserve(vecArg.size());
34 for (
const std::string& s : vecArg)
35 vecChar.push_back(s.c_str());
38 BOOST_CHECK(local_args.ParseParameters(vecChar.size(), vecChar.data(), error));
43 for (
const auto& arg :
args) {
195 ResetArgs(local_args,
"-foo=1 -nofoo=1");
199 ResetArgs(local_args,
"-foo=0 -nofoo=0");
257 ResetArgs(local_args,
"-foo=-9223372036854775809 -bar=9223372036854775808");
261 ResetArgs(local_args,
"-foo=11 -bar=12");
265 ResetArgs(local_args,
"-foo=NaN -bar=NotANumber");
293 const fs::path win_root_path{
"C:\\"};
313 const fs::path absolute_path{
"/home/user/.bitcoin"};
314 ResetArgs(local_args,
"-dir=/home/user/.bitcoin");
317 ResetArgs(local_args,
"-dir=/root/../home/user/.bitcoin");
320 ResetArgs(local_args,
"-dir=/home/./user/.bitcoin");
323 ResetArgs(local_args,
"-dir=/home/user/.bitcoin/");
326 ResetArgs(local_args,
"-dir=/home/user/.bitcoin//");
329 ResetArgs(local_args,
"-dir=/home/user/.bitcoin/.");
332 ResetArgs(local_args,
"-dir=/home/user/.bitcoin/./");
335 ResetArgs(local_args,
"-dir=/home/user/.bitcoin/.//");
338 const fs::path relative_path{
"user/.bitcoin"};
339 ResetArgs(local_args,
"-dir=user/.bitcoin");
342 ResetArgs(local_args,
"-dir=somewhere/../user/.bitcoin");
345 ResetArgs(local_args,
"-dir=user/./.bitcoin");
348 ResetArgs(local_args,
"-dir=user/.bitcoin/");
351 ResetArgs(local_args,
"-dir=user/.bitcoin//");
354 ResetArgs(local_args,
"-dir=user/.bitcoin/.");
357 ResetArgs(local_args,
"-dir=user/.bitcoin/./");
360 ResetArgs(local_args,
"-dir=user/.bitcoin/.//");
392 ResetArgs(local_args,
"--foo=verbose --bar=1");
433 SetupArgs(local_args, {okaylog_bool, okaylog_negbool, okaylog, dontlog});
434 ResetArgs(local_args,
"-okaylog-bool -nookaylog-negbool -okaylog=public -dontlog=private42");
439 [&str](
const std::string& s) {
448 BOOST_CHECK(str.find(
"Command-line arg: okaylog-bool=\"\"") != std::string::npos);
449 BOOST_CHECK(str.find(
"Command-line arg: okaylog-negbool=false") != std::string::npos);
450 BOOST_CHECK(str.find(
"Command-line arg: okaylog=\"public\"") != std::string::npos);
451 BOOST_CHECK(str.find(
"dontlog=****") != std::string::npos);
452 BOOST_CHECK(str.find(
"private42") == std::string::npos);
@ ALLOW_ANY
disable validation
common::SettingsValue GetSetting(const std::string &arg) const
Get setting value.
void LockSettings(Fn &&fn)
Access settings with lock held.
int64_t GetIntArg(const std::string &strArg, int64_t nDefault) const
Return integer argument or default value.
void LogArgs() const
Log the config file options and the command line arguments, useful for troubleshooting.
std::string GetArg(const std::string &strArg, const std::string &strDefault) const
Return string argument or default value.
bool GetBoolArg(const std::string &strArg, bool fDefault) const
Return boolean argument or default value.
void AddArg(const std::string &name, const std::string &help, unsigned int flags, const OptionsCategory &cat)
Add argument.
fs::path GetPathArg(std::string arg, const fs::path &default_value={}) const
Return path argument or default value.
std::list< std::function< void(const std::string &)> >::iterator PushBackCallback(std::function< void(const std::string &)> fun)
Connect a slot to the print signal and return the connection.
void DeleteCallback(std::list< std::function< void(const std::string &)>>::iterator it)
Delete a connection.
std::string write(unsigned int prettyIndent=0, unsigned int indentLevel=0) const
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
BOOST_AUTO_TEST_SUITE_END()
void ResetArgs(ArgsManager &local_args, const std::string &strArg)
BOOST_AUTO_TEST_CASE(setting_args)
void SetupArgs(ArgsManager &local_args, const std::vector< std::pair< std::string, unsigned int >> &args)
BCLog::Logger & LogInstance()
#define BOOST_CHECK_THROW(stmt, excMatch)
#define BOOST_CHECK_EQUAL(v1, v2)
#define BOOST_CHECK(expr)
std::vector< std::string > SplitString(std::string_view str, char sep)
std::map< std::string, SettingsValue > rw_settings
Map of setting name to read-write file setting value.