@@ -23,20 +23,46 @@ add_test(NAME network.alpha COMMAND test_fixture)
2323set_tests_properties(network.alpha PROPERTIES LABELS "integration")
2424add_test(NAME networkXalpha COMMAND test_fixture)
2525add_test(NAME Network.alpha COMMAND test_fixture)
26+ add_executable(failure_fixture failure.cpp)
27+ add_test(NAME failure.case COMMAND failure_fixture)
2628CMAKE
2729cat > " $PROJECT /main.cpp" << 'CPP '
2830int main() { return 0; }
2931CPP
32+ cat > " $PROJECT /failure.cpp" << 'CPP '
33+ #include <iostream>
34+ int main() { std::cout << "CTEST_FAILURE_MARKER\n"; return 23; }
35+ CPP
3036
3137FILTER_OUT=" $( " $VIX_BIN " test --dir " $PROJECT " ' network.' ) " || fail " literal test filter failed"
3238grep -Fq ' network.alpha' <<< " $FILTER_OUT" || fail " literal filter omitted matching registration"
3339if grep -Fq ' networkXalpha' <<< " $FILTER_OUT" ; then fail " filter treated dot as a regex wildcard" ; fi
3440if grep -Fq ' Network.alpha' <<< " $FILTER_OUT" ; then fail " filter was not case-sensitive" ; fi
41+ if grep -Eiq ' ninja:|no work to do|Building CXX object|Linking CXX|Configuring done|Generating done|cmake --build' <<< " $FILTER_OUT" ; then
42+ fail " successful external test build exposed backend chatter"
43+ fi
44+
45+ LIST_OUT=" $( " $VIX_BIN " test --dir " $PROJECT " --list) " || fail " --list failed"
46+ for test_name in network.alpha networkXalpha Network.alpha; do
47+ grep -Fq " $test_name " <<< " $LIST_OUT" || fail " --list omitted registered test: $test_name "
48+ done
49+ if grep -Fq ' 100% tests passed' <<< " $LIST_OUT" ; then
50+ fail " --list ran tests instead of listing registrations"
51+ fi
3552
3653CTEST_OUT=" $( " $VIX_BIN " test --dir " $PROJECT " --ctest -L integration -N) " || fail " terminal CTest forwarding failed"
3754grep -Fq ' network.alpha' <<< " $CTEST_OUT" || fail " CTest label argument was not forwarded"
3855if grep -Fq ' networkXalpha' <<< " $CTEST_OUT" ; then fail " CTest label filter was not applied" ; fi
3956
57+ if CTEST_FAILURE_OUT=" $( " $VIX_BIN " test --dir " $PROJECT " --ctest -R ' ^failure\.case$' 2>&1 ) " ; then
58+ fail " failing CTest case unexpectedly succeeded through --ctest"
59+ else
60+ CTEST_FAILURE_STATUS=$?
61+ fi
62+ [[ " $CTEST_FAILURE_STATUS " -ne 0 ]] || fail " failing CTest case lost its non-zero exit status"
63+ grep -Fq ' CTEST_FAILURE_MARKER' <<< " $CTEST_FAILURE_OUT" ||
64+ fail " --ctest did not preserve failing test output"
65+
4066assert_parse_rejected () {
4167 local expected=" $1 "
4268 shift
0 commit comments