aboutsummaryrefslogtreecommitdiff
path: root/src/test/system_tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/system_tests.cpp')
-rw-r--r--src/test/system_tests.cpp21
1 files changed, 17 insertions, 4 deletions
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"};