Skip to content

Commit 21eb16f

Browse files
committed
fix: enforce strict CLI warning policy
1 parent b841e40 commit 21eb16f

3 files changed

Lines changed: 50 additions & 23 deletions

File tree

‎CMakeLists.txt‎

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -146,29 +146,21 @@ function(vix_add_flag_if_supported tgt flag)
146146
endif()
147147
endfunction()
148148

149-
if (MSVC)
150-
vix_add_flag_if_supported(vix_cli /W4)
151-
vix_add_flag_if_supported(vix_cli /permissive-)
152-
vix_add_flag_if_supported(vix_installer /W4)
153-
vix_add_flag_if_supported(vix_installer /permissive-)
154-
vix_add_flag_if_supported(vix_release_tool /W4)
155-
vix_add_flag_if_supported(vix_release_tool /permissive-)
156-
else()
157-
vix_add_flag_if_supported(vix_cli -Wall)
158-
vix_add_flag_if_supported(vix_cli -Wextra)
159-
vix_add_flag_if_supported(vix_cli -Wshadow)
160-
vix_add_flag_if_supported(vix_cli -Wconversion)
161-
vix_add_flag_if_supported(vix_cli -Wformat=2)
162-
vix_add_flag_if_supported(vix_cli -Wpedantic)
163-
foreach(_distribution_tool vix_installer vix_release_tool)
164-
vix_add_flag_if_supported(${_distribution_tool} -Wall)
165-
vix_add_flag_if_supported(${_distribution_tool} -Wextra)
166-
vix_add_flag_if_supported(${_distribution_tool} -Wshadow)
167-
vix_add_flag_if_supported(${_distribution_tool} -Wconversion)
168-
vix_add_flag_if_supported(${_distribution_tool} -Wformat=2)
169-
vix_add_flag_if_supported(${_distribution_tool} -Wpedantic)
170-
endforeach()
171-
endif()
149+
function(vix_enable_cli_warnings tgt)
150+
if (MSVC)
151+
foreach(_flag /W4 /WX /permissive-)
152+
vix_add_flag_if_supported("${tgt}" "${_flag}")
153+
endforeach()
154+
else()
155+
foreach(_flag -Wall -Wextra -Wshadow -Wconversion -Wformat=2 -Wpedantic -Werror)
156+
vix_add_flag_if_supported("${tgt}" "${_flag}")
157+
endforeach()
158+
endif()
159+
endfunction()
160+
161+
vix_enable_cli_warnings(vix_cli)
162+
vix_enable_cli_warnings(vix_installer)
163+
vix_enable_cli_warnings(vix_release_tool)
172164

173165
# ----------------------------------------------------
174166
# Dependency resolution helpers

‎tests/CMakeLists.txt‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,3 +1141,12 @@ add_test(NAME vix_cli_run_execution_paths_contract
11411141
add_test(NAME vix_cli_run_compiled_dependency_contract
11421142
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/contracts/run/RunCompiledDependencyContractTest.sh ${CMAKE_BINARY_DIR}/vix)
11431143
set_tests_properties(vix_cli_run_cache_contract vix_cli_build_passthrough_contract PROPERTIES LABELS "contract")
1144+
1145+
# All C++ executables defined by this test directory are Vix-owned contract or
1146+
# unit tests. Apply the same strict diagnostics as the CLI and release tools.
1147+
get_property(_vix_cli_test_targets DIRECTORY PROPERTY BUILDSYSTEM_TARGETS)
1148+
foreach(_vix_cli_test_target IN LISTS _vix_cli_test_targets)
1149+
if (_vix_cli_test_target MATCHES "^vix_cli_")
1150+
vix_enable_cli_warnings("${_vix_cli_test_target}")
1151+
endif()
1152+
endforeach()

‎tests/TestsCommandContractCliTest.sh‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,46 @@ add_test(NAME network.alpha COMMAND test_fixture)
2323
set_tests_properties(network.alpha PROPERTIES LABELS "integration")
2424
add_test(NAME networkXalpha COMMAND test_fixture)
2525
add_test(NAME Network.alpha COMMAND test_fixture)
26+
add_executable(failure_fixture failure.cpp)
27+
add_test(NAME failure.case COMMAND failure_fixture)
2628
CMAKE
2729
cat >"$PROJECT/main.cpp" <<'CPP'
2830
int main() { return 0; }
2931
CPP
32+
cat >"$PROJECT/failure.cpp" <<'CPP'
33+
#include <iostream>
34+
int main() { std::cout << "CTEST_FAILURE_MARKER\n"; return 23; }
35+
CPP
3036

3137
FILTER_OUT="$("$VIX_BIN" test --dir "$PROJECT" 'network.')" || fail "literal test filter failed"
3238
grep -Fq 'network.alpha' <<<"$FILTER_OUT" || fail "literal filter omitted matching registration"
3339
if grep -Fq 'networkXalpha' <<<"$FILTER_OUT"; then fail "filter treated dot as a regex wildcard"; fi
3440
if 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

3653
CTEST_OUT="$("$VIX_BIN" test --dir "$PROJECT" --ctest -L integration -N)" || fail "terminal CTest forwarding failed"
3754
grep -Fq 'network.alpha' <<<"$CTEST_OUT" || fail "CTest label argument was not forwarded"
3855
if 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+
4066
assert_parse_rejected() {
4167
local expected="$1"
4268
shift

0 commit comments

Comments
 (0)