#include #include #include "daggy/executors/ForkingTaskExecutor.hpp" #include "catch.hpp" TEST_CASE("Basic Execution", "[forking_executor]") { daggy::executor::ForkingTaskExecutor ex(10); SECTION("Simple Run") { std::vector cmd{"/usr/bin/echo", "abc", "123"}; auto rec = ex.runCommand(cmd); REQUIRE(rec.rc == 0); REQUIRE(rec.output == "abc 123\n"); REQUIRE(rec.error.empty()); } SECTION("Error Run") { std::vector cmd{"/usr/bin/expr", "1", "+", "+"}; auto rec = ex.runCommand(cmd); REQUIRE(rec.rc == 2); REQUIRE(rec.error == "/usr/bin/expr: syntax error: missing argument after ‘+’\n"); REQUIRE(rec.output.empty()); } SECTION("Large Output") { const std::vector BIG_FILES{ "/usr/share/dict/linux.words" , "/usr/share/dict/cracklib-small" , "/etc/ssh/moduli" }; for (const auto & bigFile : BIG_FILES) { if (! std::filesystem::exists(bigFile)) continue; std::vector cmd{"/usr/bin/cat", bigFile}; auto rec = ex.runCommand(cmd); REQUIRE(rec.rc == 0); REQUIRE(rec.output.size() == std::filesystem::file_size(bigFile)); REQUIRE(rec.error.empty()); } } }