aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2021-06-24 09:41:48 +0200
committerMarcoFalke <falke.marco@gmail.com>2021-06-24 09:42:07 +0200
commita196c89317dd876c22c8b4556f5af3ecfa251119 (patch)
treea83cad1cfc8709162d44043adc7080ce0de25b75 /src
parent7317e14a44c6efc545e6fb9bcedee7174e93a8fa (diff)
parentfa4017e7a0899959b2ac84bcbc3f34dfb17b5fce (diff)
Merge bitcoin/bitcoin#22270: test: Add bitcoin-util tests (+refactors)
fa4017e7a0899959b2ac84bcbc3f34dfb17b5fce refactor: Pass grind args vector as const reference (MarcoFalke) fa08bc288f81dd42a482e2bfef37d21a1e5fddd2 Remove gArgs from AppInitUtil (MarcoFalke) fa751a47ff4253f58518d7f43d33ec1227ea0dbc Remove unused OptionsCategory arg from AddCommand (MarcoFalke) fa3c1eee7ff2646e78540d53b4f8eaf095a8c27d Remove unused includes from bitcoin-util (MarcoFalke) fa304929e2c3583bc3e6b05eaa6e0df6cdac6ec8 test: Add bitcoin-util tests (MarcoFalke) fa831e709a4d605a18e5de1627b48d670bb326fb build_msvc: Add bitcoin-util.exe (MarcoFalke) Pull request description: bitcoin-util has no tests See https://marcofalke.github.io/btc_cov/total.coverage/src/bitcoin-util.cpp.gcov.html (Coverage report showing 0%) ACKs for top commit: klementtan: Code review and tested ACK fa4017e7a0899959b2ac84bcbc3f34dfb17b5fce theStack: Tested ACK fa4017e7a0899959b2ac84bcbc3f34dfb17b5fce jamesob: reACK fa4017e7a0899959b2ac84bcbc3f34dfb17b5fce ([`jamesob/ackr/22270.1.MarcoFalke.test_add_bitcoin_util_te`](https://github.com/jamesob/bitcoin/tree/ackr/22270.1.MarcoFalke.test_add_bitcoin_util_te)) Tree-SHA512: 68e2791239bc48d28fbb6394155c39ea0357a96ec7e4896ca579feeef1a803657165a0ef9fa3cf6e2a381e5b0ca0dafa1b594158303a04997db784201d8dd66d
Diffstat (limited to 'src')
-rw-r--r--src/bitcoin-util.cpp45
-rw-r--r--src/bitcoin-wallet.cpp10
-rw-r--r--src/util/system.cpp4
-rw-r--r--src/util/system.h2
4 files changed, 27 insertions, 34 deletions
diff --git a/src/bitcoin-util.cpp b/src/bitcoin-util.cpp
index 3f273e75f6..f534aecc19 100644
--- a/src/bitcoin-util.cpp
+++ b/src/bitcoin-util.cpp
@@ -7,28 +7,19 @@
#endif
#include <arith_uint256.h>
+#include <chain.h>
+#include <chainparams.h>
+#include <chainparamsbase.h>
#include <clientversion.h>
-#include <coins.h>
-#include <consensus/consensus.h>
#include <core_io.h>
-#include <key_io.h>
-#include <policy/rbf.h>
-#include <primitives/transaction.h>
-#include <script/script.h>
-#include <script/sign.h>
-#include <script/signingprovider.h>
-#include <univalue.h>
-#include <util/moneystr.h>
-#include <util/rbf.h>
-#include <util/strencodings.h>
-#include <util/string.h>
+#include <streams.h>
#include <util/system.h>
#include <util/translation.h>
#include <atomic>
+#include <cstdio>
#include <functional>
#include <memory>
-#include <stdio.h>
#include <thread>
#include <boost/algorithm/string.hpp>
@@ -43,29 +34,29 @@ static void SetupBitcoinUtilArgs(ArgsManager &argsman)
argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
- argsman.AddCommand("grind", "Perform proof of work on hex header string", OptionsCategory::COMMANDS);
+ argsman.AddCommand("grind", "Perform proof of work on hex header string");
SetupChainParamsBaseOptions(argsman);
}
// This function returns either one of EXIT_ codes when it's expected to stop the process or
// CONTINUE_EXECUTION when it's expected to continue further.
-static int AppInitUtil(int argc, char* argv[])
+static int AppInitUtil(ArgsManager& args, int argc, char* argv[])
{
- SetupBitcoinUtilArgs(gArgs);
+ SetupBitcoinUtilArgs(args);
std::string error;
- if (!gArgs.ParseParameters(argc, argv, error)) {
+ if (!args.ParseParameters(argc, argv, error)) {
tfm::format(std::cerr, "Error parsing command line arguments: %s\n", error);
return EXIT_FAILURE;
}
- if (HelpRequested(gArgs) || gArgs.IsArgSet("-version")) {
+ if (HelpRequested(args) || args.IsArgSet("-version")) {
// First part of help message is specific to this utility
std::string strUsage = PACKAGE_NAME " bitcoin-util utility version " + FormatFullVersion() + "\n";
- if (!gArgs.IsArgSet("-version")) {
+ if (!args.IsArgSet("-version")) {
strUsage += "\n"
"Usage: bitcoin-util [options] [commands] Do stuff\n";
- strUsage += "\n" + gArgs.GetHelpMessage();
+ strUsage += "\n" + args.GetHelpMessage();
}
tfm::format(std::cout, "%s", strUsage);
@@ -79,7 +70,7 @@ static int AppInitUtil(int argc, char* argv[])
// Check for chain settings (Params() calls are only valid after this clause)
try {
- SelectParams(gArgs.GetChainName());
+ SelectParams(args.GetChainName());
} catch (const std::exception& e) {
tfm::format(std::cerr, "Error: %s\n", e.what());
return EXIT_FAILURE;
@@ -114,7 +105,7 @@ static void grind_task(uint32_t nBits, CBlockHeader& header_orig, uint32_t offse
}
}
-static int Grind(std::vector<std::string> args, std::string& strPrint)
+static int Grind(const std::vector<std::string>& args, std::string& strPrint)
{
if (args.size() != 1) {
strPrint = "Must specify block header to grind";
@@ -160,12 +151,14 @@ __declspec(dllexport) int main(int argc, char* argv[])
int main(int argc, char* argv[])
#endif
{
+ ArgsManager& args = gArgs;
SetupEnvironment();
try {
- int ret = AppInitUtil(argc, argv);
- if (ret != CONTINUE_EXECUTION)
+ int ret = AppInitUtil(args, argc, argv);
+ if (ret != CONTINUE_EXECUTION) {
return ret;
+ }
} catch (const std::exception& e) {
PrintExceptionContinue(&e, "AppInitUtil()");
return EXIT_FAILURE;
@@ -174,7 +167,7 @@ int main(int argc, char* argv[])
return EXIT_FAILURE;
}
- const auto cmd = gArgs.GetCommand();
+ const auto cmd = args.GetCommand();
if (!cmd) {
tfm::format(std::cerr, "Error: must specify a command\n");
return EXIT_FAILURE;
diff --git a/src/bitcoin-wallet.cpp b/src/bitcoin-wallet.cpp
index b84d909b07..765954c92e 100644
--- a/src/bitcoin-wallet.cpp
+++ b/src/bitcoin-wallet.cpp
@@ -33,11 +33,11 @@ static void SetupWalletToolArgs(ArgsManager& argsman)
argsman.AddArg("-format=<format>", "The format of the wallet file to create. Either \"bdb\" or \"sqlite\". Only used with 'createfromdump'", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
argsman.AddArg("-printtoconsole", "Send trace/debug info to console (default: 1 when no -debug is true, 0 otherwise).", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
- argsman.AddCommand("info", "Get wallet info", OptionsCategory::COMMANDS);
- argsman.AddCommand("create", "Create new wallet file", OptionsCategory::COMMANDS);
- argsman.AddCommand("salvage", "Attempt to recover private keys from a corrupt wallet. Warning: 'salvage' is experimental.", OptionsCategory::COMMANDS);
- argsman.AddCommand("dump", "Print out all of the wallet key-value records", OptionsCategory::COMMANDS);
- argsman.AddCommand("createfromdump", "Create new wallet file from dumped records", OptionsCategory::COMMANDS);
+ argsman.AddCommand("info", "Get wallet info");
+ argsman.AddCommand("create", "Create new wallet file");
+ argsman.AddCommand("salvage", "Attempt to recover private keys from a corrupt wallet. Warning: 'salvage' is experimental.");
+ argsman.AddCommand("dump", "Print out all of the wallet key-value records");
+ argsman.AddCommand("createfromdump", "Create new wallet file from dumped records");
}
static bool WalletAppInit(ArgsManager& args, int argc, char* argv[])
diff --git a/src/util/system.cpp b/src/util/system.cpp
index 5ea0139275..ee7a76be29 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -620,14 +620,14 @@ void ArgsManager::ForceSetArg(const std::string& strArg, const std::string& strV
m_settings.forced_settings[SettingName(strArg)] = strValue;
}
-void ArgsManager::AddCommand(const std::string& cmd, const std::string& help, const OptionsCategory& cat)
+void ArgsManager::AddCommand(const std::string& cmd, const std::string& help)
{
Assert(cmd.find('=') == std::string::npos);
Assert(cmd.at(0) != '-');
LOCK(cs_args);
m_accept_any_command = false; // latch to false
- std::map<std::string, Arg>& arg_map = m_available_args[cat];
+ std::map<std::string, Arg>& arg_map = m_available_args[OptionsCategory::COMMANDS];
auto ret = arg_map.emplace(cmd, Arg{"", help, ArgsManager::COMMAND});
Assert(ret.second); // Fail on duplicate commands
}
diff --git a/src/util/system.h b/src/util/system.h
index ea9870a343..3547bad585 100644
--- a/src/util/system.h
+++ b/src/util/system.h
@@ -374,7 +374,7 @@ public:
/**
* Add subcommand
*/
- void AddCommand(const std::string& cmd, const std::string& help, const OptionsCategory& cat);
+ void AddCommand(const std::string& cmd, const std::string& help);
/**
* Add many hidden arguments