summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2017-11-29 20:09:30 (GMT)
committerKitware Robot <kwrobot@kitware.com>2017-11-29 20:09:58 (GMT)
commitb311b8751819ec881824c61ef8de03387ff40c3f (patch)
treeb9729ae8af1b8753e73e857b0562ca7aa67dc82c
parent5def40891fc1ad0a7d7ba7a16bd11b2d26fa66ab (diff)
parentfbe91dba6a615d799f3ece996ddccdabb819c4dc (diff)
downloadCMake-b311b8751819ec881824c61ef8de03387ff40c3f.zip
CMake-b311b8751819ec881824c61ef8de03387ff40c3f.tar.gz
CMake-b311b8751819ec881824c61ef8de03387ff40c3f.tar.bz2
Merge topic 'check_fixtures_before_exe_existence'
fbe91dba CTest: Check failed fixture dependencies before test command and args Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Brad King <brad.king@kitware.com> Merge-request: !1526
-rw-r--r--Source/CTest/cmCTestRunTest.cxx8
-rw-r--r--Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in6
2 files changed, 11 insertions, 3 deletions
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index 99531af..5443494 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -432,8 +432,6 @@ bool cmCTestRunTest::StartTest(size_t total)
return false;
}
- this->ComputeArguments();
- std::vector<std::string>& args = this->TestProperties->Args;
this->TestResult.Properties = this->TestProperties;
this->TestResult.ExecutionTime = 0;
this->TestResult.CompressOutput = false;
@@ -444,6 +442,10 @@ bool cmCTestRunTest::StartTest(size_t total)
this->TestResult.Name = this->TestProperties->Name;
this->TestResult.Path = this->TestProperties->Directory;
+ // Check for failed fixture dependencies before we even look at the command
+ // arguments because if we are not going to run the test, the command and
+ // its arguments are irrelevant. This matters for the case where a fixture
+ // dependency might be creating the executable we want to run.
if (!this->FailedDependencies.empty()) {
this->TestProcess = new cmProcess;
std::string msg = "Failed test dependencies:";
@@ -459,6 +461,8 @@ bool cmCTestRunTest::StartTest(size_t total)
return false;
}
+ this->ComputeArguments();
+ std::vector<std::string>& args = this->TestProperties->Args;
if (args.size() >= 2 && args[1] == "NOT_AVAILABLE") {
this->TestProcess = new cmProcess;
std::string msg;
diff --git a/Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in b/Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in
index 5cb0b4e..6b11cff 100644
--- a/Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in
+++ b/Tests/RunCMake/ctest_fixtures/CMakeLists.txt.in
@@ -27,7 +27,11 @@ passTest(two) # 6
passTest(cleanupBar) # 7
passTest(three) # 8
failTest(setupFails) # 9
-passTest(wontRun) # 10
+
+# Special case, test executable always missing to verify fixture dependencies
+# are checked before existence of test executable to be run
+add_test(NAME wontRun COMMAND iDoNotExist) # 10
+
passTest(cyclicSetup) # 11
passTest(cyclicCleanup) # 12
passTest(cleanupUnused) # 13