11#include <gtest/gtest.h>
22#include <nlohmann/json.hpp>
24using json = nlohmann::json;
26#ifndef PPFOREST2_BINARY_PATH
27#error "PPFOREST2_BINARY_PATH must be defined"
30#ifndef PPFOREST2_DATA_DIR
31#error "PPFOREST2_DATA_DIR must be defined"
34#ifndef PPFOREST2_GOLDEN_DIR
35#error "PPFOREST2_GOLDEN_DIR must be defined"
38inline const std::string
BINARY = PPFOREST2_BINARY_PATH;
39inline std::string
const DATA_DIR = PPFOREST2_DATA_DIR;
40inline std::string
const GOLDEN_DIR = PPFOREST2_GOLDEN_DIR;
71 std::string cmd =
BINARY +
" " + args +
" 2>\"" + stderr_file.
path() +
"\"";
72 FILE* pipe = _popen(cmd.c_str(),
"r");
74 std::string cmd =
BINARY +
" " + args +
" 2>\"" + stderr_file.
path() +
"\"";
75 FILE* pipe = popen(cmd.c_str(),
"r");
85 while (fgets(buffer,
sizeof(buffer), pipe))
89 int exit_code = _pclose(pipe);
91 int status = pclose(pipe);
92 int exit_code = WIFEXITED(status) ? WEXITSTATUS(status) : -1;
95 return {exit_code, output, stderr_file.
read()};
113 ASSERT_EQ(result.exit_code, 0);
std::string const DATA_DIR
Definition CLI.integration.hpp:39
std::string const CRAB_CSV
Definition CLI.integration.hpp:42
std::string const IRIS_CSV
Definition CLI.integration.hpp:41
ProcessResult run_ppforest2(std::string const &args)
Spawn the ppforest2 binary with the given argument string.
Definition CLI.integration.hpp:67
std::string const GLASS_CSV
Definition CLI.integration.hpp:44
nlohmann::json json
Definition CLI.integration.hpp:24
const std::string BINARY
Definition CLI.integration.hpp:38
std::string const WINE_CSV
Definition CLI.integration.hpp:43
std::string const GOLDEN_DIR
Definition CLI.integration.hpp:40
RAII temporary file and directory with automatic cleanup.
Test fixture that trains a forest model once in SetUp().
Definition CLI.integration.hpp:107
void SetUp() override
Definition CLI.integration.hpp:109
std::unique_ptr< TempFile > model_
Definition CLI.integration.hpp:117
json model_json_
Definition CLI.integration.hpp:118
RAII temporary directory with automatic cleanup.
Definition TempFile.hpp:104
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:87
std::string const & path() const
Definition TempFile.hpp:81
Captured output of a child-process invocation.
Definition CLI.integration.hpp:52
int exit_code
Definition CLI.integration.hpp:53
std::string stdout_output
Definition CLI.integration.hpp:54
std::string stderr_output
Definition CLI.integration.hpp:55