diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2023-06-06 20:31:09 (GMT) |
---|---|---|
committer | Kyle Edwards <kyle.edwards@kitware.com> | 2023-12-05 19:48:24 (GMT) |
commit | 0b043a75b7bb92f071dfac6cc95d32fd01080758 (patch) | |
tree | 8dfc7011c98429aaa3416027aa86483608e895b0 /Tests/CMakeLib | |
parent | 57b94595a3a0056aef1446ce1827dd945261d362 (diff) | |
download | CMake-0b043a75b7bb92f071dfac6cc95d32fd01080758.zip CMake-0b043a75b7bb92f071dfac6cc95d32fd01080758.tar.gz CMake-0b043a75b7bb92f071dfac6cc95d32fd01080758.tar.bz2 |
cmUVProcessChain: Add option for external uv_loop_t
Diffstat (limited to 'Tests/CMakeLib')
-rw-r--r-- | Tests/CMakeLib/testUVProcessChain.cxx | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/Tests/CMakeLib/testUVProcessChain.cxx b/Tests/CMakeLib/testUVProcessChain.cxx index aab084b..6014889 100644 --- a/Tests/CMakeLib/testUVProcessChain.cxx +++ b/Tests/CMakeLib/testUVProcessChain.cxx @@ -297,7 +297,12 @@ bool testUVProcessChainBuiltin(const char* helperCommand) .AddCommand({ helperCommand, "capitalize" }) .AddCommand({ helperCommand, "dedup" }) .SetBuiltinStream(cmUVProcessChainBuilder::Stream_OUTPUT) - .SetBuiltinStream(cmUVProcessChainBuilder::Stream_ERROR); + .SetBuiltinStream(cmUVProcessChainBuilder::Stream_ERROR) + .SetBuiltinLoop(); + if (builder.GetLoop()) { + std::cout << "GetLoop() should return null" << std::endl; + return false; + } if (!checkExecution(builder, chain)) { return false; @@ -400,6 +405,10 @@ bool testUVProcessChainExternal(const char* helperCommand) .AddCommand({ helperCommand, "dedup" }) .SetExternalStream(cmUVProcessChainBuilder::Stream_OUTPUT, outputPipe[1]) .SetExternalStream(cmUVProcessChainBuilder::Stream_ERROR, errorPipe[1]); + if (builder.GetLoop()) { + std::cout << "GetLoop() should return null" << std::endl; + return false; + } if (!checkExecution(builder, chain)) { return false; @@ -668,6 +677,43 @@ bool testUVProcessChainWait0(const char* helperCommand) return true; } +bool testUVProcessChainExternalLoop(const char* helperCommand) +{ + cm::uv_loop_ptr loop; + loop.init(); + + cmUVProcessChainBuilder builder; + builder.AddCommand({ helperCommand, "echo" }) + .SetBuiltinStream(cmUVProcessChainBuilder::Stream_OUTPUT) + .SetExternalLoop(*loop); + if (builder.GetLoop() != loop) { + std::cout << "GetLoop() should return external loop" << std::endl; + return false; + } + + auto chain = builder.Start(); + + if (&chain.GetLoop() != loop) { + std::cout << "GetLoop() should return external loop" << std::endl; + return false; + } + + if (!chain.Wait()) { + std::cout << "Wait() timed out" << std::endl; + return false; + } + + cmUVPipeIStream stream(chain.GetLoop(), chain.OutputStream()); + std::string output = getInput(stream); + if (output != "HELLO world!") { + std::cout << "Output was \"" << output << "\", expected \"HELLO world!\"" + << std::endl; + return false; + } + + return true; +} + int testUVProcessChain(int argc, char** const argv) { if (argc < 2) { @@ -720,5 +766,10 @@ int testUVProcessChain(int argc, char** const argv) return -1; } + if (!testUVProcessChainExternalLoop(argv[1])) { + std::cout << "While executing testUVProcessChainExternalLoop().\n"; + return -1; + } + return 0; } |