aboutsummaryrefslogtreecommitdiff
path: root/test/base/SubProcessTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/base/SubProcessTest.cpp')
-rw-r--r--test/base/SubProcessTest.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/base/SubProcessTest.cpp b/test/base/SubProcessTest.cpp
new file mode 100644
index 00000000..d353dec0
--- /dev/null
+++ b/test/base/SubProcessTest.cpp
@@ -0,0 +1,30 @@
+#include "cru/base/String.h"
+#include "cru/base/SubProcess.h"
+
+#include <catch2/catch_test_macros.hpp>
+
+using cru::String;
+using cru::SubProcess;
+
+TEST_CASE("SubProcess", "[subprocess]") {
+ SECTION("echo should work.") {
+ SubProcess process = SubProcess::Create(
+ String::FromUtf8(CRU_TEST_HELPER_ECHO_LOCATION), {u"abc"});
+ process.Wait();
+ REQUIRE(process.GetExitResult().IsSuccess());
+ auto output = process.GetStdoutStream()->ReadToEndAsUtf8String();
+ REQUIRE(output == u"abc");
+ }
+
+ SECTION("tee should work.") {
+ constexpr auto str = "abc";
+ SubProcess process =
+ SubProcess::Create(String::FromUtf8(CRU_TEST_HELPER_TEE_LOCATION));
+ process.GetStdinStream()->Write(str, 3);
+ process.GetStdinStream()->Close();
+ process.Wait();
+ REQUIRE(process.GetExitResult().IsSuccess());
+ auto output = process.GetStdoutStream()->ReadToEndAsUtf8String();
+ REQUIRE(output == u"abc");
+ }
+}