mirror of
https://github.com/fish-shell/fish-shell
synced 2024-11-10 15:14:44 +00:00
Allow running test suites independently
This makes test_low_level, test_interactive, test_invocation, and test_fishscript independent. This allows running a smaller subset of tests. To prevent all tests running in parallel, we also have new targets serial_test_low_level, serial_test_interactive, etc. which have the dependency chain that enforces serial execution.
This commit is contained in:
parent
db703c273d
commit
40d91b7e77
1 changed files with 55 additions and 35 deletions
|
@ -29,22 +29,6 @@ ENDIF()
|
||||||
# Copy littlecheck.py
|
# Copy littlecheck.py
|
||||||
CONFIGURE_FILE(build_tools/littlecheck.py littlecheck.py COPYONLY)
|
CONFIGURE_FILE(build_tools/littlecheck.py littlecheck.py COPYONLY)
|
||||||
|
|
||||||
# Create the 'test' target.
|
|
||||||
# Set a policy so CMake stops complaining about the name 'test'.
|
|
||||||
CMAKE_POLICY(PUSH)
|
|
||||||
IF(POLICY CMP0037)
|
|
||||||
CMAKE_POLICY(SET CMP0037 OLD)
|
|
||||||
ENDIF()
|
|
||||||
ADD_CUSTOM_TARGET(test)
|
|
||||||
CMAKE_POLICY(POP)
|
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(test_low_level
|
|
||||||
COMMAND env XDG_DATA_HOME=test/data XDG_CONFIG_HOME=test/home ./fish_tests
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
DEPENDS fish_tests
|
|
||||||
USES_TERMINAL)
|
|
||||||
ADD_DEPENDENCIES(test test_low_level tests_dir)
|
|
||||||
|
|
||||||
# Make the directory in which to run tests.
|
# Make the directory in which to run tests.
|
||||||
# Also symlink fish to where the tests expect it to be.
|
# Also symlink fish to where the tests expect it to be.
|
||||||
# Lastly put fish_test_helper there too.
|
# Lastly put fish_test_helper there too.
|
||||||
|
@ -81,30 +65,66 @@ ADD_CUSTOM_TARGET(test_prep
|
||||||
DEPENDS tests_buildroot_target
|
DEPENDS tests_buildroot_target
|
||||||
USES_TERMINAL)
|
USES_TERMINAL)
|
||||||
|
|
||||||
|
# Define our individual tests.
|
||||||
ADD_CUSTOM_TARGET(test_invocation
|
# Each test is conceptually independent.
|
||||||
COMMAND ./invocation.sh
|
# However when running all tests, we want to run them serially for sanity's sake.
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests/
|
# So define both a normal target, and a serial variant which enforces ordering.
|
||||||
DEPENDS test_prep test_low_level
|
FOREACH(TESTTYPE test serial_test)
|
||||||
USES_TERMINAL)
|
ADD_CUSTOM_TARGET(${TESTTYPE}_low_level
|
||||||
|
COMMAND env XDG_DATA_HOME=test/data XDG_CONFIG_HOME=test/home ./fish_tests
|
||||||
ADD_CUSTOM_TARGET(test_fishscript
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
COMMAND cd tests && ${TEST_ROOT_DIR}/bin/fish test.fish
|
DEPENDS fish_tests
|
||||||
DEPENDS test_prep test_invocation
|
|
||||||
USES_TERMINAL)
|
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(test_interactive
|
|
||||||
COMMAND cd tests && ${TEST_ROOT_DIR}/bin/fish interactive.fish
|
|
||||||
DEPENDS test_prep test_invocation test_fishscript
|
|
||||||
USES_TERMINAL)
|
USES_TERMINAL)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(test_high_level
|
ADD_CUSTOM_TARGET(${TESTTYPE}_invocation
|
||||||
DEPENDS test_invocation test_fishscript test_interactive)
|
COMMAND ./invocation.sh
|
||||||
ADD_DEPENDENCIES(test test_high_level)
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests/
|
||||||
|
DEPENDS test_prep
|
||||||
|
USES_TERMINAL)
|
||||||
|
|
||||||
|
ADD_CUSTOM_TARGET(${TESTTYPE}_fishscript
|
||||||
|
COMMAND cd tests && ${TEST_ROOT_DIR}/bin/fish test.fish
|
||||||
|
DEPENDS test_prep
|
||||||
|
USES_TERMINAL)
|
||||||
|
|
||||||
|
ADD_CUSTOM_TARGET(${TESTTYPE}_interactive
|
||||||
|
COMMAND cd tests && ${TEST_ROOT_DIR}/bin/fish interactive.fish
|
||||||
|
DEPENDS test_prep
|
||||||
|
USES_TERMINAL)
|
||||||
|
ENDFOREACH(testtype)
|
||||||
|
|
||||||
|
# Now add a dependency chain between the serial versions.
|
||||||
|
# This ensures they run in order.
|
||||||
|
ADD_DEPENDENCIES(serial_test_fishscript serial_test_low_level)
|
||||||
|
ADD_DEPENDENCIES(serial_test_invocation serial_test_fishscript)
|
||||||
|
ADD_DEPENDENCIES(serial_test_interactive serial_test_invocation)
|
||||||
|
|
||||||
|
|
||||||
|
ADD_CUSTOM_TARGET(serial_test_high_level
|
||||||
|
DEPENDS serial_test_invocation serial_test_interactive serial_test_fishscript)
|
||||||
|
|
||||||
|
# Create the 'test' target.
|
||||||
|
# Set a policy so CMake stops complaining about the name 'test'.
|
||||||
|
CMAKE_POLICY(PUSH)
|
||||||
|
IF(POLICY CMP0037)
|
||||||
|
CMAKE_POLICY(SET CMP0037 OLD)
|
||||||
|
ENDIF()
|
||||||
|
ADD_CUSTOM_TARGET(test)
|
||||||
|
CMAKE_POLICY(POP)
|
||||||
|
ADD_DEPENDENCIES(test serial_test_high_level)
|
||||||
|
|
||||||
# Group test targets into a TestTargets folder
|
# Group test targets into a TestTargets folder
|
||||||
SET_PROPERTY(TARGET test test_low_level test_high_level tests_dir
|
SET_PROPERTY(TARGET test tests_dir
|
||||||
|
test_low_level
|
||||||
|
test_fishscript
|
||||||
|
test_interactive
|
||||||
|
test_invocation
|
||||||
test_invocation test_fishscript test_prep
|
test_invocation test_fishscript test_prep
|
||||||
tests_buildroot_target
|
tests_buildroot_target
|
||||||
|
serial_test_high_level
|
||||||
|
serial_test_low_level
|
||||||
|
serial_test_fishscript
|
||||||
|
serial_test_interactive
|
||||||
|
serial_test_invocation
|
||||||
symlink_functions
|
symlink_functions
|
||||||
PROPERTY FOLDER cmake/TestTargets)
|
PROPERTY FOLDER cmake/TestTargets)
|
||||||
|
|
Loading…
Reference in a new issue