X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=tst%2Fapp%2FProcessTest.cpp;h=561a3dd3573f0a4f796fdc24f88d2f0dba82890f;hb=7f829070c9a5e4e036b483863e5ee75a3a824c38;hp=a16bfb31f42db442e76729a53c24c620ebb00048;hpb=3b617c12da216c2d1744c5fbb62a7ef381e1e0b3;p=blank.git diff --git a/tst/app/ProcessTest.cpp b/tst/app/ProcessTest.cpp index a16bfb3..561a3dd 100644 --- a/tst/app/ProcessTest.cpp +++ b/tst/app/ProcessTest.cpp @@ -53,7 +53,7 @@ void ProcessTest::testStream() { const string expected_output("hello, world\n"); 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)); + size_t len = proc.ReadOut(buffer, sizeof(buffer), 1000); const string output(buffer, len); int status = proc.Join(); CPPUNIT_ASSERT_EQUAL_MESSAGE( @@ -72,7 +72,7 @@ void ProcessTest::testStream() { const string expected_output("hello, error\n"); Process proc("/usr/bin/env", { "env", "sh", "-c", "echo $1 >&2", "echo", test_input.c_str() }, { }); char buffer[expected_output.length() + 1]; - size_t len = proc.ReadErr(buffer, sizeof(buffer)); + size_t len = proc.ReadErr(buffer, sizeof(buffer), 1000); const string output(buffer, len); int status = proc.Join(); CPPUNIT_ASSERT_EQUAL_MESSAGE( @@ -99,7 +99,7 @@ void ProcessTest::testStream() { proc.CloseIn(); char buffer[expected_output.length() + 1]; - len = proc.ReadOut(buffer, sizeof(buffer)); + len = proc.ReadOut(buffer, sizeof(buffer), 1000); const string output(buffer, len); int status = proc.Join(); CPPUNIT_ASSERT_EQUAL_MESSAGE( @@ -126,7 +126,7 @@ void ProcessTest::testEnv() { 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)); + size_t len = proc.ReadOut(buffer, sizeof(buffer), 1000); const string output(buffer, len); int status = proc.Join(); CPPUNIT_ASSERT_EQUAL_MESSAGE( @@ -143,5 +143,21 @@ void ProcessTest::testEnv() { #endif } +void ProcessTest::testTimeout() { +#ifdef __WIN32 +# error "TODO: implement Process tests for windows" +#else + Process proc("/usr/bin/env", { "env", "cat" }); + char buffer; + CPPUNIT_ASSERT_THROW_MESSAGE( + "read timeout on child process' stdout should throw", + proc.ReadOut(&buffer, 1, 1), std::runtime_error); + CPPUNIT_ASSERT_THROW_MESSAGE( + "read timeout on child process' stderr should throw", + proc.ReadErr(&buffer, 1, 1), std::runtime_error); + proc.Terminate(); +#endif +} + } }