#
#
# Usage:
-# DEAL_II_ADD_TEST(category test_name comparison_file)
+# DEAL_II_ADD_TEST(category test_name comparison_file [ARGN])
#
# This macro assumes that a source file "./tests/category/<test_name>.cc"
# as well as the comparison file "./tests/category/<comparison_file>" is
# available in the testsuite. The output of compiled source file is
# compared against the file comparison file.
#
+# [ARGN] is an optional list of additional output lines passed down to the
+# run_test.cmake script and printed at the beginning of the test output.
+#
# This macro gets the following options from the comparison file name (have
# a look at the testsuite documentation for details):
# - usage of mpirun and number of simultaneous processes
-DTRGT=${_diff_target}
-DTEST=${_test_full}
-DEXPECT=${_expect}
+ -DADDITIONAL_OUTPUT=${ARGN}
-DDEAL_II_BINARY_DIR=${CMAKE_BINARY_DIR}
-P ${DEAL_II_SOURCE_DIR}/cmake/scripts/run_test.cmake
WORKING_DIRECTORY ${_test_directory}
# If TEST_PICKUP_REGEX is set, only tests matching the regex will be
# processed.
#
+# If TEST_OVERRIDE_LOCATION is set, a comparison file category/test.output
+# will be substituted by ${TEST_OVERRIDE_LOCATION}/category/test.output if
+# the latter exists.
+#
# Usage:
# DEAL_II_PICKUP_TESTS()
#
ENDIF()
ENDFOREACH()
+ #
+ # Respect TEST_OVERRIDE_LOCATION:
+ #
+
+ SET(_add_output)
+ IF(EXISTS ${TEST_OVERRIDE_LOCATION}/${_category}/${_test})
+ SET(_add_output
+ "Note: Default comparison file ${_comparison} overriden by"
+ "${TEST_OVERRIDE_LOCATION}/${_category}/${_test}"
+ )
+ SET(_comparison "${TEST_OVERRIDE_LOCATION}/${_category}/${_test}")
+ ENDIF()
+
IF(_define_test)
STRING(REGEX REPLACE "\\..*" "" _test ${_test})
- DEAL_II_ADD_TEST(${_category} ${_test} ${_comparison})
+ DEAL_II_ADD_TEST(${_category} ${_test} ${_comparison} ${_add_output})
ENDIF()
ENDFOREACH()
# (return value 0)
# Possible values are CONFIGURE, BUILD, RUN, DIFF, PASSED
#
+# ADDITIONAL_OUTPUT - A list of additional output lines that should be printed
+#
IF("${EXPECT}" STREQUAL "")
SET(EXPECT "PASSED")
# Print out the test result:
#
+FOREACH(_line ${ADDITIONAL_OUTPUT})
+ MESSAGE("Test ${TEST}: ${_line}")
+ENDFOREACH()
+
MESSAGE("Test ${TEST}: ${_stage}")
MESSAGE("=============================== OUTPUT BEGIN ===============================")
# environment or command line:
#
# TEST_DIFF
-# TEST_TIME_LIMIT
+# TEST_OVERRIDE_LOCATION
# TEST_PICKUP_REGEX
+# TEST_TIME_LIMIT
#
#
SET_IF_EMPTY(TEST_DIFF $ENV{TEST_DIFF})
SET_IF_EMPTY(TEST_TIME_LIMIT $ENV{TEST_TIME_LIMIT})
SET_IF_EMPTY(TEST_PICKUP_REGEX $ENV{TEST_PICKUP_REGEX})
+SET_IF_EMPTY(TEST_OVERRIDE_LOCATION $ENV{TEST_OVERRIDE_LOCATION})
#
# We need deal.II and Perl as external packages:
calling <code>make setup_tests</code>:
<pre>
- TEST_PICKUP_REGEX
- - A regular expression to select only a subset of tests during setup.
- An empty string is interpreted as a catchall (this is the default).
-
TEST_DIFF
- The diff tool and command line to use for comparison. If numdiff is
available it defaults to "numdiff -a 1e-6 -q", otherwise plain diff
TEST_TIME_LIMIT
- The time limit (in seconds) a single test is allowed to take. Defaults
to 180 seconds
+
+ TEST_PICKUP_REGEX
+ - A regular expression to select only a subset of tests during setup.
+ An empty string is interpreted as a catchall (this is the default).
+
+ TEST_OVERRIDE_LOCATION
+ - If TEST_OVERRIDE_LOCATION is set, a comparison file category/test.output
+ will be substituted by ${TEST_OVERRIDE_LOCATION}/category/test.output if
+ the latter exists.
</pre>
</p>