mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-31 16:24:48 +02:00
Merge bitcoin/bitcoin#28981: Replace Boost.Process with cpp-subprocess
d5a715536ebuild: remove boost::process dependency for building external signer support (Sebastian Falbesoner)70434b1c44external_signer: replace boost::process with cpp-subprocess (Sebastian Falbesoner)cc8b9875b1Add `cpp-subprocess` header-only library (Hennadii Stepanov) Pull request description: Closes https://github.com/bitcoin/bitcoin/issues/24907. This PR is based on **theStack**'s [work](https://github.com/bitcoin/bitcoin/issues/24907#issuecomment-1466087049). The `subprocess.hpp` header has been sourced from the [upstream repo](https://github.com/arun11299/cpp-subprocess) with the only modification being the removal of convenience functions, which are not utilized in our codebase. Windows-related changes will be addressed in subsequent follow-ups. ACKs for top commit: achow101: reACKd5a715536eSjors: re-tACKd5a715536etheStack: Light re-ACKd5a715536efanquake: ACKd5a715536e- with the expectation that this code is going to be maintained as our own. Next PRs should: Tree-SHA512: d7fb6fecc3f5792496204190afb7d85b3e207b858fb1a75efe483c05260843b81b27d14b299323bb667c990e87a07197059afea3796cf218ed8b614086bd3611
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
#include <univalue.h>
|
||||
|
||||
#ifdef ENABLE_EXTERNAL_SIGNER
|
||||
#include <boost/process.hpp>
|
||||
#include <util/subprocess.hpp>
|
||||
#endif // ENABLE_EXTERNAL_SIGNER
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
@@ -34,20 +34,16 @@ BOOST_AUTO_TEST_CASE(run_command)
|
||||
BOOST_CHECK(result.isNull());
|
||||
}
|
||||
{
|
||||
const UniValue result = RunCommandParseJSON("echo \"{\"success\": true}\"");
|
||||
const UniValue result = RunCommandParseJSON("echo {\"success\": true}");
|
||||
BOOST_CHECK(result.isObject());
|
||||
const UniValue& success = result.find_value("success");
|
||||
BOOST_CHECK(!success.isNull());
|
||||
BOOST_CHECK_EQUAL(success.get_bool(), true);
|
||||
}
|
||||
{
|
||||
// An invalid command is handled by Boost
|
||||
const int expected_error{2};
|
||||
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(), expected_error);
|
||||
return true;
|
||||
});
|
||||
// An invalid command is handled by cpp-subprocess
|
||||
const std::string expected{"execve failed: "};
|
||||
BOOST_CHECK_EXCEPTION(RunCommandParseJSON("invalid_command"), subprocess::CalledProcessError, HasReason(expected));
|
||||
}
|
||||
{
|
||||
// Return non-zero exit code, no output to stderr
|
||||
|
||||
Reference in New Issue
Block a user