* Copyright 2018 by Intra2net AG
*/
+#define BOOST_TEST_IGNORE_NON_ZERO_CHILD_CODE
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
const char *const bad_command [] = { "/does_not_exist", NULL };
- BOOST_AUTO_TEST_CASE(abspath_zeros_shell_fail)
+ BOOST_AUTO_TEST_CASE(abspath_bad_shell_fail)
{
assert (access(bad_command [0], X_OK) != 0);
BOOST_CHECK_EQUAL(result.size (), 0);
}
- BOOST_AUTO_TEST_CASE(abspath_zeros_noshell_fail)
+ BOOST_AUTO_TEST_CASE(abspath_bad_noshell_fail)
{
assert (access(bad_command [0], X_OK) != 0);
ExecResult exres;
const std::string result = capture_exec (bad_command, exres);
- BOOST_CHECK(!exres.normal_exit);
BOOST_CHECK(!exres.terminated_by_signal);
BOOST_CHECK_EQUAL(result.size (), 0);
}
- BOOST_AUTO_TEST_CASE(abspath_zeros_noshell_stderr)
+ BOOST_AUTO_TEST_CASE(abspath_bad_noshell_stderr)
{
assert (access(bad_command [0], X_OK) != 0);
BOOST_CHECK_NE(result.size (), 0);
}
+ const char *const false_argv [] = { "/bin/false", NULL };
+
+ BOOST_AUTO_TEST_CASE(abspath_false_noshell_fail_exit)
+ {
+ ExecResult exres;
+ const std::string result = capture_exec (false_argv, exres, true, false);
+
+ BOOST_CHECK(exres.normal_exit);
+ BOOST_CHECK_EQUAL(exres.return_code, EXIT_FAILURE);
+ BOOST_CHECK_EQUAL(result.size (), 0);
+ }
+
+ BOOST_AUTO_TEST_CASE(abspath_false_shell_fail_exit)
+ {
+ ExecResult exres;
+ const std::string result =
+ capture_exec (std::string (false_argv [0]), exres);
+
+ BOOST_CHECK(exres.normal_exit);
+ BOOST_CHECK_EQUAL(exres.return_code, EXIT_FAILURE);
+ BOOST_CHECK_EQUAL(result.size (), 0);
+ }
+
BOOST_AUTO_TEST_SUITE_END() /* [pipestream->read] */
BOOST_AUTO_TEST_SUITE_END() /* [pipestream] */