]> git.localhorst.tv Git - blank.git/blobdiff - tst/app/ProcessTest.cpp
allow cloned env with child processes
[blank.git] / tst / app / ProcessTest.cpp
index a5d2cc5bad573478534e8daccaf193a88f3d3988..a16bfb31f42db442e76729a53c24c620ebb00048 100644 (file)
@@ -25,7 +25,7 @@ void ProcessTest::testExit() {
 #else
 
        {
-               Process proc("/usr/bin/env", { "env", "true" }, { });
+               Process proc("/usr/bin/env", { "env", "true" });
                int status = proc.Join();
                CPPUNIT_ASSERT_EQUAL_MESSAGE(
                        "exit status of true assumed 0",
@@ -33,7 +33,7 @@ void ProcessTest::testExit() {
        }
 
        {
-               Process proc("/usr/bin/env", { "env", "false" }, { });
+               Process proc("/usr/bin/env", { "env", "false" });
                int status = proc.Join();
                CPPUNIT_ASSERT_EQUAL_MESSAGE(
                        "exit status of false assumed 1",
@@ -45,13 +45,13 @@ void ProcessTest::testExit() {
 
 void ProcessTest::testStream() {
 #ifdef __WIN32
-#  error "TODO: implemente Process tests for windows"
+#  error "TODO: implement Process tests for windows"
 #else
 
        {
                const string test_input("hello, world");
                const string expected_output("hello, world\n");
-               Process proc("/usr/bin/env", { "env", "echo", test_input.c_str() }, { });
+               Process proc("/usr/bin/env", { "env", "echo", test_input.c_str() });
                char buffer[expected_output.length() + 1];
                size_t len = proc.ReadOut(buffer, sizeof(buffer));
                const string output(buffer, len);
@@ -90,7 +90,7 @@ void ProcessTest::testStream() {
        {
                const string test_input("dog");
                const string expected_output("dog");
-               Process proc("/usr/bin/env", { "env", "cat" }, { });
+               Process proc("/usr/bin/env", { "env", "cat" });
                size_t len = proc.WriteIn(test_input.c_str(), test_input.size());
                CPPUNIT_ASSERT_EQUAL_MESSAGE(
                        "unexpected length of input to cat",
@@ -116,5 +116,32 @@ void ProcessTest::testStream() {
 #endif
 }
 
+
+void ProcessTest::testEnv() {
+#ifdef __WIN32
+#  error "TODO: implement Process tests for windows"
+#else
+       {
+               const string test_input("Hello, environment");
+               const string expected_output("Hello, environment\n");
+               Process proc("/usr/bin/env", { "env", "sh", "-c", "echo $BLANK_ENV_TEST" }, { "BLANK_ENV_TEST=" + test_input });
+               char buffer[expected_output.length() + 1];
+               size_t len = proc.ReadOut(buffer, sizeof(buffer));
+               const string output(buffer, len);
+               int status = proc.Join();
+               CPPUNIT_ASSERT_EQUAL_MESSAGE(
+                       "exit status of echo assumed 0",
+                       0, status);
+               CPPUNIT_ASSERT_EQUAL_MESSAGE(
+                       "unexpected length of echo output",
+                       expected_output.size(), len);
+               CPPUNIT_ASSERT_EQUAL_MESSAGE(
+                       "unexpected error output of echo",
+                       expected_output, output);
+       }
+
+#endif
+}
+
 }
 }