aboutsummaryrefslogtreecommitdiff
path: root/src/test/argsman_tests.cpp
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2023-07-26 15:47:41 +0100
committerfanquake <fanquake@gmail.com>2023-07-26 16:03:39 +0100
commitf57e724a809feb139c5ae71c4db65635427e4802 (patch)
tree66590b095bd3eaa684891b0f8a5ef91cf43a36de /src/test/argsman_tests.cpp
parentf033a981ed72ceab8133ccddc6d99cd0d4b2d707 (diff)
parentfa9108f85afdc926fd6a8b96cc2acff7ca25d7a8 (diff)
Merge bitcoin/bitcoin#28127: refactor: Remove C-style const-violating cast, Use reinterpret_cast
fa9108f85afdc926fd6a8b96cc2acff7ca25d7a8 refactor: Use reinterpret_cast where appropriate (MarcoFalke) 3333f950d49f13662842650ae76599a0dff052eb refactor: Avoid casting away constness (MarcoFalke) fa6394dd10ae71755e46fd523dd43c2a1f2b832d refactor: Remove unused C-style casts (MarcoFalke) Pull request description: Using a C-style cast to convert pointer types to a byte-like pointer type has many issues: * It may accidentally and silently throw away `const`. * It forces reviewers to check that it doesn't accidentally throw away `const`. For example, on current master a `const char*` is cast to `unsigned char*` (without `const`), see https://github.com/bitcoin/bitcoin/blob/d23fda05842ba4539b225bbab01b94df0060f697/src/span.h#L273 . This can lead to UB, and the only reason why it didn't lead to UB is because the return type added back the `const`. (Obviously this would break if the return type was deduced via `auto`) Fix all issues by adding back the `const` and using `reinterpret_cast` where appropriate. ACKs for top commit: darosior: re-utACK fa9108f85afdc926fd6a8b96cc2acff7ca25d7a8 hebasto: re-ACK fa9108f85afdc926fd6a8b96cc2acff7ca25d7a8. john-moffett: ACK fa9108f85afdc926fd6a8b96cc2acff7ca25d7a8 Tree-SHA512: 87f6e4b574f9bd96d4e0f2a0631fd0a9dc6096e5d4f1b95042fe9f197afc2fe9a24e333aeb34fed11feefcdb184a238fe1ea5aff10d580bb18d76bfe48b76a10
Diffstat (limited to 'src/test/argsman_tests.cpp')
-rw-r--r--src/test/argsman_tests.cpp54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/test/argsman_tests.cpp b/src/test/argsman_tests.cpp
index 0b789e7f5c..1f46efe464 100644
--- a/src/test/argsman_tests.cpp
+++ b/src/test/argsman_tests.cpp
@@ -112,7 +112,7 @@ public:
test.SetupArgs({{"-value", flags}});
const char* argv[] = {"ignored", arg};
std::string error;
- bool success = test.ParseParameters(arg ? 2 : 1, (char**)argv, error);
+ bool success = test.ParseParameters(arg ? 2 : 1, argv, error);
BOOST_CHECK_EQUAL(test.GetSetting("-value").write(), expect.setting.write());
auto settings_list = test.GetSettingsList("-value");
@@ -217,13 +217,13 @@ BOOST_AUTO_TEST_CASE(util_ParseParameters)
std::string error;
LOCK(testArgs.cs_args);
testArgs.SetupArgs({a, b, ccc, d});
- BOOST_CHECK(testArgs.ParseParameters(0, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(0, argv_test, error));
BOOST_CHECK(testArgs.m_settings.command_line_options.empty() && testArgs.m_settings.ro_config.empty());
- BOOST_CHECK(testArgs.ParseParameters(1, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(1, argv_test, error));
BOOST_CHECK(testArgs.m_settings.command_line_options.empty() && testArgs.m_settings.ro_config.empty());
- BOOST_CHECK(testArgs.ParseParameters(7, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(7, argv_test, error));
// expectation: -ignored is ignored (program name argument),
// -a, -b and -ccc end up in map, -d ignored because it is after
// a non-option argument (non-GNU option parsing)
@@ -248,17 +248,17 @@ BOOST_AUTO_TEST_CASE(util_ParseInvalidParameters)
const char* argv[] = {"ignored", "-registered"};
std::string error;
- BOOST_CHECK(test.ParseParameters(2, (char**)argv, error));
+ BOOST_CHECK(test.ParseParameters(2, argv, error));
BOOST_CHECK_EQUAL(error, "");
argv[1] = "-unregistered";
- BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error));
+ BOOST_CHECK(!test.ParseParameters(2, argv, error));
BOOST_CHECK_EQUAL(error, "Invalid parameter -unregistered");
// Make sure registered parameters prefixed with a chain type trigger errors.
// (Previously, they were accepted and ignored.)
argv[1] = "-test.registered";
- BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error));
+ BOOST_CHECK(!test.ParseParameters(2, argv, error));
BOOST_CHECK_EQUAL(error, "Invalid parameter -test.registered");
}
@@ -269,7 +269,7 @@ static void TestParse(const std::string& str, bool expected_bool, int64_t expect
std::string arg = "-value=" + str;
const char* argv[] = {"ignored", arg.c_str()};
std::string error;
- BOOST_CHECK(test.ParseParameters(2, (char**)argv, error));
+ BOOST_CHECK(test.ParseParameters(2, argv, error));
BOOST_CHECK_EQUAL(test.GetBoolArg("-value", false), expected_bool);
BOOST_CHECK_EQUAL(test.GetBoolArg("-value", true), expected_bool);
BOOST_CHECK_EQUAL(test.GetIntArg("-value", 99998), expected_int);
@@ -331,7 +331,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArg)
std::string error;
LOCK(testArgs.cs_args);
testArgs.SetupArgs({a, b, c, d, e, f});
- BOOST_CHECK(testArgs.ParseParameters(7, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(7, argv_test, error));
// Each letter should be set.
for (const char opt : "abcdef")
@@ -368,7 +368,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases)
const char *argv_test[] = {"ignored", "-nofoo", "-foo", "-nobar=0"};
testArgs.SetupArgs({foo, bar});
std::string error;
- BOOST_CHECK(testArgs.ParseParameters(4, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(4, argv_test, error));
// This was passed twice, second one overrides the negative setting.
BOOST_CHECK(!testArgs.IsArgNegated("-foo"));
@@ -380,7 +380,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases)
// Config test
const char *conf_test = "nofoo=1\nfoo=1\nnobar=0\n";
- BOOST_CHECK(testArgs.ParseParameters(1, (char**)argv_test, error));
+ BOOST_CHECK(testArgs.ParseParameters(1, argv_test, error));
testArgs.ReadConfigString(conf_test);
// This was passed twice, second one overrides the negative setting,
@@ -395,7 +395,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases)
// Combined test
const char *combo_test_args[] = {"ignored", "-nofoo", "-bar"};
const char *combo_test_conf = "foo=1\nnobar=1\n";
- BOOST_CHECK(testArgs.ParseParameters(3, (char**)combo_test_args, error));
+ BOOST_CHECK(testArgs.ParseParameters(3, combo_test_args, error));
testArgs.ReadConfigString(combo_test_conf);
// Command line overrides, but doesn't erase old setting
@@ -655,38 +655,38 @@ BOOST_AUTO_TEST_CASE(util_GetChainTypeString)
const char* testnetconf = "testnet=1\nregtest=0\n[test]\nregtest=1";
std::string error;
- BOOST_CHECK(test_args.ParseParameters(0, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(0, argv_testnet, error));
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "main");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_testnet, error));
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_regtest, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_regtest, error));
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "regtest");
- BOOST_CHECK(test_args.ParseParameters(3, (char**)argv_test_no_reg, error));
+ BOOST_CHECK(test_args.ParseParameters(3, argv_test_no_reg, error));
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(3, (char**)argv_both, error));
+ BOOST_CHECK(test_args.ParseParameters(3, argv_both, error));
BOOST_CHECK_THROW(test_args.GetChainTypeString(), std::runtime_error);
- BOOST_CHECK(test_args.ParseParameters(0, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(0, argv_testnet, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_testnet, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_regtest, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_regtest, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_THROW(test_args.GetChainTypeString(), std::runtime_error);
- BOOST_CHECK(test_args.ParseParameters(3, (char**)argv_test_no_reg, error));
+ BOOST_CHECK(test_args.ParseParameters(3, argv_test_no_reg, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(3, (char**)argv_both, error));
+ BOOST_CHECK(test_args.ParseParameters(3, argv_both, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_THROW(test_args.GetChainTypeString(), std::runtime_error);
@@ -694,23 +694,23 @@ BOOST_AUTO_TEST_CASE(util_GetChainTypeString)
// [test] regtest=1 potentially relevant) doesn't break things
test_args.SelectConfigNetwork("test");
- BOOST_CHECK(test_args.ParseParameters(0, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(0, argv_testnet, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_testnet, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_testnet, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_regtest, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_regtest, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_THROW(test_args.GetChainTypeString(), std::runtime_error);
- BOOST_CHECK(test_args.ParseParameters(2, (char**)argv_test_no_reg, error));
+ BOOST_CHECK(test_args.ParseParameters(2, argv_test_no_reg, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_EQUAL(test_args.GetChainTypeString(), "test");
- BOOST_CHECK(test_args.ParseParameters(3, (char**)argv_both, error));
+ BOOST_CHECK(test_args.ParseParameters(3, argv_both, error));
test_args.ReadConfigString(testnetconf);
BOOST_CHECK_THROW(test_args.GetChainTypeString(), std::runtime_error);
}