11#include <gtest/gtest.h>
20#include <nlohmann/json.hpp>
22using json = nlohmann::json;
24#ifndef PPFOREST2_BINARY_PATH
25#error "PPFOREST2_BINARY_PATH must be defined"
28#ifndef PPFOREST2_DATA_DIR
29#error "PPFOREST2_DATA_DIR must be defined"
32#ifndef PPFOREST2_GOLDEN_DIR
33#error "PPFOREST2_GOLDEN_DIR must be defined"
36inline const std::string
BINARY = PPFOREST2_BINARY_PATH;
37inline std::string
const DATA_DIR = PPFOREST2_DATA_DIR;
38inline std::string
const GOLDEN_DIR = PPFOREST2_GOLDEN_DIR;
75 std::string cmd =
BINARY +
" " + args +
" 2>\"" + stderr_file.
path() +
"\"";
76 FILE* pipe = _popen(cmd.c_str(),
"r");
78 std::string cmd =
BINARY +
" " + args +
" 2>\"" + stderr_file.
path() +
"\"";
79 FILE* pipe = popen(cmd.c_str(),
"r");
82 if (pipe ==
nullptr) {
89 while (fgets(buffer,
sizeof(buffer), pipe) !=
nullptr) {
95 int exit_code = _pclose(pipe);
97 int status = pclose(pipe);
98 int exit_code = WIFEXITED(status) ? WEXITSTATUS(status) : -1;
102 return {exit_code, output, stderr_file.
read()};
117 model_ = std::make_unique<TempFile>();
120 ASSERT_EQ(result.exit_code, 0);
std::string const DATA_DIR
Definition CLI.integration.hpp:37
std::string const HOUSING_CSV
Definition CLI.integration.hpp:47
std::string const CRAB_CSV
Definition CLI.integration.hpp:43
std::string const IRIS_CSV
Definition CLI.integration.hpp:42
ProcessResult run_ppforest2(std::string const &args)
Spawn the ppforest2 binary with the given argument string.
Definition CLI.integration.hpp:70
std::string const GLASS_CSV
Definition CLI.integration.hpp:45
nlohmann::json json
Definition CLI.integration.hpp:22
const std::string BINARY
Definition CLI.integration.hpp:36
std::string const MTCARS_CSV
Definition CLI.integration.hpp:46
std::string const WINE_CSV
Definition CLI.integration.hpp:44
std::string const GOLDEN_DIR
Definition CLI.integration.hpp:38
RAII temporary file and directory with automatic cleanup.
Test fixture that trains a forest model once in SetUp().
Definition CLI.integration.hpp:114
void SetUp() override
Definition CLI.integration.hpp:116
std::unique_ptr< TempFile > model_
Definition CLI.integration.hpp:124
json model_json_
Definition CLI.integration.hpp:125
RAII temporary directory with automatic cleanup.
Definition TempFile.hpp:134
RAII temporary file with automatic cleanup.
Definition TempFile.hpp:28
std::string read() const
Read the entire file contents as a string.
Definition TempFile.hpp:112
std::string const & path() const
Definition TempFile.hpp:106
Captured output of a child-process invocation.
Definition CLI.integration.hpp:55
int exit_code
Definition CLI.integration.hpp:56
std::string stdout_output
Definition CLI.integration.hpp:57
std::string stderr_output
Definition CLI.integration.hpp:58