summaryrefslogtreecommitdiffstats
path: root/Tests/CMakeLib
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2023-06-06 20:31:09 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2023-12-05 19:48:24 (GMT)
commit0b043a75b7bb92f071dfac6cc95d32fd01080758 (patch)
tree8dfc7011c98429aaa3416027aa86483608e895b0 /Tests/CMakeLib
parent57b94595a3a0056aef1446ce1827dd945261d362 (diff)
downloadCMake-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.cxx53
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;
}