meson: detect missing tests at configure time
It is quite easy for the list of integration tests to go out-of-sync without anybody noticing. Introduce a new configure-time check that verifies that all tests are wired up properly. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
c081e7340f
commit
0ed1512141
|
@ -1092,6 +1092,42 @@ integration_tests = [
|
||||||
't9903-bash-prompt.sh',
|
't9903-bash-prompt.sh',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Sanity check that we are not missing any tests present in 't/'. This check
|
||||||
|
# only runs once at configure time and is thus best-effort, only. It is
|
||||||
|
# sufficient to catch missing test suites in our CI though.
|
||||||
|
foreach glob, tests : {
|
||||||
|
't[0-9][0-9][0-9][0-9]-*.sh': integration_tests,
|
||||||
|
'unit-tests/t-*.c': unit_test_programs,
|
||||||
|
'unit-tests/u-*.c': clar_test_suites,
|
||||||
|
}
|
||||||
|
actual_tests = run_command(shell, '-c', 'ls ' + glob,
|
||||||
|
check: true,
|
||||||
|
env: script_environment,
|
||||||
|
).stdout().strip().split('\n')
|
||||||
|
|
||||||
|
if tests != actual_tests
|
||||||
|
missing_tests = [ ]
|
||||||
|
foreach actual_test : actual_tests
|
||||||
|
if actual_test not in tests
|
||||||
|
missing_tests += actual_test
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if missing_tests.length() > 0
|
||||||
|
error('Test files found, but not configured:\n\n - ' + '\n - '.join(missing_tests))
|
||||||
|
endif
|
||||||
|
|
||||||
|
superfluous_tests = [ ]
|
||||||
|
foreach integration_test : tests
|
||||||
|
if integration_test not in actual_tests
|
||||||
|
superfluous_tests += integration_test
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if superfluous_tests.length() > 0
|
||||||
|
error('Test files configured, but not found:\n\n - ' + '\n - '.join(superfluous_tests))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
# GIT_BUILD_DIR needs to be Unix-style without drive prefixes as it get added
|
# GIT_BUILD_DIR needs to be Unix-style without drive prefixes as it get added
|
||||||
# to the PATH variable. And given that drive prefixes contain a colon we'd
|
# to the PATH variable. And given that drive prefixes contain a colon we'd
|
||||||
# otherwise end up with a broken PATH if we didn't convert it.
|
# otherwise end up with a broken PATH if we didn't convert it.
|
||||||
|
|
Loading…
Reference in New Issue