summaryrefslogtreecommitdiff
path: root/test/buildtool/file_system/system_command.test.cpp
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2022-03-07 18:23:53 +0100
committerOliver Reiche <oliver.reiche@huawei.com>2022-03-08 13:46:08 +0100
commit28abe1bf4d8c16af92e1ef3dc1f267399f0690b9 (patch)
treea88380091984fdabe288caffb0dc814543a613d5 /test/buildtool/file_system/system_command.test.cpp
parent6f44f11a9a063d2f8f10a99c3531325e0fabead8 (diff)
downloadjustbuild-28abe1bf4d8c16af92e1ef3dc1f267399f0690b9.tar.gz
SystemCommand: Move to new module "src/buildtool/system"
Diffstat (limited to 'test/buildtool/file_system/system_command.test.cpp')
-rw-r--r--test/buildtool/file_system/system_command.test.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/test/buildtool/file_system/system_command.test.cpp b/test/buildtool/file_system/system_command.test.cpp
deleted file mode 100644
index 81b4e2b6..00000000
--- a/test/buildtool/file_system/system_command.test.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include <cstdlib>
-#include <iostream>
-
-#include "catch2/catch.hpp"
-#include "src/buildtool/file_system/system_command.hpp"
-
-namespace {
-[[nodiscard]] auto GetTestDir() -> std::filesystem::path {
- auto* tmp_dir = std::getenv("TEST_TMPDIR");
- if (tmp_dir != nullptr) {
- return tmp_dir;
- }
- return FileSystemManager::GetCurrentDirectory() /
- "test/buildtool/file_system";
-}
-} // namespace
-
-TEST_CASE("SystemCommand", "[filesystem]") {
- using Catch::Matchers::Contains;
- using Catch::Matchers::StartsWith;
-
- std::string name{"ExecutorTest"};
- SystemCommand system{name};
-
- auto const testdir = GetTestDir();
-
- SECTION("empty command") {
- auto tmpdir = testdir / "empty";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- auto output = system.Execute(
- {}, {}, FileSystemManager::GetCurrentDirectory(), tmpdir);
- CHECK(not output.has_value());
- }
-
- SECTION("simple command, no arguments, no env variables") {
- auto tmpdir = testdir / "simple_noargs";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- auto output = system.Execute(
- {"echo"}, {}, FileSystemManager::GetCurrentDirectory(), tmpdir);
- REQUIRE(output.has_value());
- CHECK(output->return_value == 0);
- CHECK(*FileSystemManager::ReadFile(output->stdout_file) == "\n");
- CHECK(FileSystemManager::ReadFile(output->stderr_file)->empty());
- }
-
- SECTION(
- "simple command, env variables are expanded only when wrapped with "
- "/bin/sh") {
- auto tmpdir = testdir / "simple_env0";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- auto output = system.Execute({"echo", "${MY_MESSAGE}"},
- {{"MY_MESSAGE", "hello"}},
- FileSystemManager::GetCurrentDirectory(),
- tmpdir);
- REQUIRE(output.has_value());
- CHECK(output->return_value == 0);
- CHECK(*FileSystemManager::ReadFile(output->stdout_file) ==
- "${MY_MESSAGE}\n");
- CHECK(FileSystemManager::ReadFile(output->stderr_file)->empty());
-
- tmpdir = testdir / "simple_env1";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- auto output_wrapped =
- system.Execute({"/bin/sh", "-c", "set -e\necho ${MY_MESSAGE}"},
- {{"MY_MESSAGE", "hello"}},
- FileSystemManager::GetCurrentDirectory(),
- tmpdir);
- REQUIRE(output_wrapped.has_value());
- CHECK(output_wrapped->return_value == 0);
- CHECK(*FileSystemManager::ReadFile(output_wrapped->stdout_file) ==
- "hello\n");
- CHECK(
- FileSystemManager::ReadFile(output_wrapped->stderr_file)->empty());
- }
-
- SECTION("executable, producing std output, std error and return value") {
- auto tmpdir = testdir / "exe_output";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- auto output = system.Execute(
- {"/bin/sh",
- "-c",
- "set -e\necho this is stdout; echo this is stderr >&2; exit 5"},
- {},
- FileSystemManager::GetCurrentDirectory(),
- tmpdir);
- REQUIRE(output.has_value());
- CHECK(output->return_value == 5);
- CHECK(*FileSystemManager::ReadFile(output->stdout_file) ==
- "this is stdout\n");
- CHECK(*FileSystemManager::ReadFile(output->stderr_file) ==
- "this is stderr\n");
- }
-
- SECTION(
- "executable dependent on env, producing std output, std error and "
- "return value") {
- auto tmpdir = testdir / "exe_output_from_env";
- REQUIRE(FileSystemManager::CreateDirectoryExclusive(tmpdir));
- std::string const stdout = "this is stdout from env var";
- std::string const stderr = "this is stderr from env var";
- auto output = system.Execute(
- {"/bin/sh",
- "-c",
- "set -e\necho ${MY_STDOUT}; echo ${MY_STDERR} >&2; exit 5"},
- {{"MY_STDOUT", stdout}, {"MY_STDERR", stderr}},
- FileSystemManager::GetCurrentDirectory(),
- tmpdir);
- REQUIRE(output.has_value());
- CHECK(output->return_value == 5);
- CHECK(*FileSystemManager::ReadFile(output->stdout_file) ==
- stdout + '\n');
- CHECK(*FileSystemManager::ReadFile(output->stderr_file) ==
- stderr + '\n');
- }
-}