6#include <bitcoin-build-config.h>
18#ifdef ENABLE_EXTERNAL_SIGNER
22#include <boost/test/unit_test.hpp>
29constexpr const char* MOCK_PROCESS_ENV =
"BITCOIN_TEST_MOCK_PROCESS";
31const bool g_maybe_run_mock_dispatcher_before_main{[]() {
32 const char*
name = std::getenv(MOCK_PROCESS_ENV);
33 if (!
name)
return false;
34 const std::string_view n{
name};
35 if (n ==
"valid_json") {
36 std::cout << R
"({"success": true})" << std::endl;
39 if (n ==
"nonzeroexit_nooutput") {
40 std::_Exit(EXIT_FAILURE);
42 if (n ==
"nonzeroexit_stderroutput") {
43 std::cerr <<
"err" << std::endl;
44 std::_Exit(EXIT_FAILURE);
46 if (n ==
"invalid_json") {
47 std::cout <<
"{" << std::endl;
50 if (n ==
"pass_stdin_to_stdout") {
52 std::getline(std::cin,
s);
53 std::cout <<
s << std::endl;
56 std::cerr <<
"Unknown mock process: " << n << std::endl;
57 std::_Exit(EXIT_FAILURE);
63#ifdef ENABLE_EXTERNAL_SIGNER
68 _putenv_s(MOCK_PROCESS_ENV,
name.c_str());
70 setenv(MOCK_PROCESS_ENV,
name.c_str(), 1);
72 return {boost::unit_test::framework::master_test_suite().argv[0]};
91 const std::string expected{
"CreateProcess failed: "};
93 const std::string expected{
"execve failed: "};
101 const std::string what{e.what()};
109 const std::string expected{
"err"};
111 const std::string what(e.what());
113 BOOST_CHECK(what.find(expected) != std::string::npos);
BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
const UniValue & find_value(std::string_view key) const
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL(headers.FindFirst("key"), "value")
BOOST_CHECK_EXCEPTION(HTTPHeaders{}.Read(reader), std::runtime_error, HasReason{"Empty HTTP header name"})
auto Join(const C &container, const S &separator, UnaryOp unary_op)
Join all container items.
#define BOOST_CHECK(expr)
UniValue RunCommandParseJSON(const std::vector< std::string > &cmd_args, const std::string &str_std_in)
Execute a command which returns JSON, and parse the result.
static std::vector< std::string > mock_executable(const std::string &name)
BOOST_AUTO_TEST_CASE(run_command)