aboutsummaryrefslogtreecommitdiff
path: root/libexec/atf
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2022-07-06 19:55:48 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2022-07-06 19:55:58 +0000
commit2bfd8b5b9419b0ceb3dd0295fdf413d32969e5b2 (patch)
tree89661312cf765fefe464b16694f3554964242dc8 /libexec/atf
parent6f50b73ee5c11253a35bb2787f2bef627079999d (diff)
Diffstat (limited to 'libexec/atf')
-rw-r--r--libexec/atf/atf-pytest-wrapper/atf_pytest_wrapper.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/libexec/atf/atf-pytest-wrapper/atf_pytest_wrapper.cpp b/libexec/atf/atf-pytest-wrapper/atf_pytest_wrapper.cpp
index 6baa85999070..7f6e886a16d9 100644
--- a/libexec/atf/atf-pytest-wrapper/atf_pytest_wrapper.cpp
+++ b/libexec/atf/atf-pytest-wrapper/atf_pytest_wrapper.cpp
@@ -1,3 +1,5 @@
+// vim: ts=2 sw=2 et
+
#include <format>
#include <iostream>
#include <map>
@@ -181,7 +183,7 @@ class Handler {
}
}
- int Run(std::string binary, std::vector<std::string> args) {
+ bool Run(std::string binary, std::vector<std::string> args) {
if (flag_debug) {
PrintVector("OUT", args);
}
@@ -191,12 +193,27 @@ class Handler {
// work around 'char *const *'
arr[i] = strdup(args[i].c_str());
}
- return (execvp(binary.c_str(), arr) != 0);
+ return execvp(binary.c_str(), arr) == 0;
+ }
+
+ void ReportError() {
+ if (flag_list) {
+ std::cout << "Content-Type: application/X-atf-tp; version=\"1\"";
+ std::cout << std::endl << std::endl;
+ std::cout << "ident: __test_cases_list_"<< kPytestName << "_binary_" <<
+ "not_found__" << std::endl;
+ } else {
+ std::cout << "execvp(" << kPytestName << ") failed: " <<
+ std::strerror(errno) << std::endl;
+ }
}
int Process() {
SetEnv();
- return Run(kPytestName, BuildArgs());
+ if (!Run(kPytestName, BuildArgs())) {
+ ReportError();
+ }
+ return 0;
}
};