summaryrefslogtreecommitdiff
path: root/Help/prop_test
diff options
context:
space:
mode:
authorZack Galbreath <zack.galbreath@kitware.com>2016-02-18 13:59:18 -0500
committerBrad King <brad.king@kitware.com>2016-03-22 11:17:55 -0400
commit993e48d0451b41f8e2c2a59473d9ddc09ada5792 (patch)
treeef678a032f62e84338653b903e6be7ebc0522d2b /Help/prop_test
parent2b64dc7cabb6eda86f0c8b91b27aee4119ac7ebb (diff)
downloadcmake-993e48d0451b41f8e2c2a59473d9ddc09ada5792.tar.gz
CTest: Optionally use a secondary test timeout after matching output
Allow a test N seconds to complete after we detect a matching line in its output. Activate this behavior with a new TIMEOUT_AFTER_MATCH test property.
Diffstat (limited to 'Help/prop_test')
-rw-r--r--Help/prop_test/TIMEOUT_AFTER_MATCH.rst37
1 files changed, 37 insertions, 0 deletions
diff --git a/Help/prop_test/TIMEOUT_AFTER_MATCH.rst b/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
new file mode 100644
index 0000000000..a191a9cc88
--- /dev/null
+++ b/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
@@ -0,0 +1,37 @@
+TIMEOUT_AFTER_MATCH
+-------------------
+
+Change a test's timeout duration after a matching line is encountered
+in its output.
+
+Usage
+^^^^^
+
+.. code-block:: cmake
+
+ add_test(mytest ...)
+ set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
+
+Description
+^^^^^^^^^^^
+
+Allow a test ``seconds`` to complete after ``regex`` is encountered in
+its output.
+
+When the test outputs a line that matches ``regex`` its start time is
+reset to the current time and its timeout duration is changed to
+``seconds``. Prior to this, the timeout duration is determined by the
+:prop_test:`TIMEOUT` property or the :variable:`CTEST_TEST_TIMEOUT`
+variable if either of these are set.
+
+:prop_test:`TIMEOUT_AFTER_MATCH` is useful for avoiding spurious
+timeouts when your test must wait for some system resource to become
+available before it can execute. Set :prop_test:`TIMEOUT` to a longer
+duration that accounts for resource acquisition and use
+:prop_test:`TIMEOUT_AFTER_MATCH` to control how long the actual test
+is allowed to run.
+
+If the required resource can be controlled by CTest you should use
+:prop_test:`RESOURCE_LOCK` instead of :prop_test:`TIMEOUT_AFTER_MATCH`.
+This property should be used when only the test itself can determine
+when its required resources are available.