From 1a0d8e178c7b9a3e94d14f94b77305802ebdc93b Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Fri, 6 Jan 2023 10:53:36 +0000 Subject: [PATCH] build: Re-enable external signer on Windows --- ci/test/00_setup_env_win64.sh | 2 +- src/test/system_tests.cpp | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ci/test/00_setup_env_win64.sh b/ci/test/00_setup_env_win64.sh index b637086b06..e996991d39 100755 --- a/ci/test/00_setup_env_win64.sh +++ b/ci/test/00_setup_env_win64.sh @@ -13,4 +13,4 @@ export DPKG_ADD_ARCH="i386" export PACKAGES="python3 nsis g++-mingw-w64-x86-64-posix wine-binfmt wine64 wine32 file" export RUN_FUNCTIONAL_TESTS=false export GOAL="deploy" -export BITCOIN_CONFIG="--enable-reduce-exports --disable-external-signer --disable-gui-tests" +export BITCOIN_CONFIG="--enable-reduce-exports --enable-external-signer --disable-gui-tests" diff --git a/src/test/system_tests.cpp b/src/test/system_tests.cpp index f2dc6ee739..c0a2566959 100644 --- a/src/test/system_tests.cpp +++ b/src/test/system_tests.cpp @@ -34,6 +34,13 @@ BOOST_AUTO_TEST_CASE(dummy) BOOST_AUTO_TEST_CASE(run_command) { +#ifdef WIN32 + // https://www.winehq.org/pipermail/wine-devel/2008-September/069387.html + auto hntdll = GetModuleHandleA("ntdll.dll"); + assert(hntdll); + const bool wine_runtime = GetProcAddress(hntdll, "wine_get_version"); +#endif + { const UniValue result = RunCommandParseJSON(""); BOOST_CHECK(result.isNull()); @@ -51,21 +58,27 @@ BOOST_AUTO_TEST_CASE(run_command) } { // An invalid command is handled by Boost +#ifdef WIN32 + const int expected_error{wine_runtime ? 6 : 2}; +#else + const int expected_error{2}; +#endif BOOST_CHECK_EXCEPTION(RunCommandParseJSON("invalid_command"), boost::process::process_error, [&](const boost::process::process_error& e) { BOOST_CHECK(std::string(e.what()).find("RunCommandParseJSON error:") == std::string::npos); - BOOST_CHECK_EQUAL(e.code().value(), 2); + BOOST_CHECK_EQUAL(e.code().value(), expected_error); return true; }); } { // Return non-zero exit code, no output to stderr #ifdef WIN32 - const std::string command{"cmd.exe /c call"}; + const std::string command{"cmd.exe /c exit 1"}; #else const std::string command{"false"}; #endif BOOST_CHECK_EXCEPTION(RunCommandParseJSON(command), std::runtime_error, [&](const std::runtime_error& e) { - BOOST_CHECK(std::string(e.what()).find(strprintf("RunCommandParseJSON error: process(%s) returned 1: \n", command)) != std::string::npos); + const std::string what{e.what()}; + BOOST_CHECK(what.find(strprintf("RunCommandParseJSON error: process(%s) returned 1: \n", command)) != std::string::npos); return true; }); } @@ -73,7 +86,7 @@ BOOST_AUTO_TEST_CASE(run_command) // Return non-zero exit code, with error message for stderr #ifdef WIN32 const std::string command{"cmd.exe /c dir nosuchfile"}; - const std::string expected{"File Not Found"}; + const std::string expected{wine_runtime ? "File not found." : "File Not Found"}; #else const std::string command{"ls nosuchfile"}; const std::string expected{"No such file or directory"};