Skip to content

Commit

Permalink
Enable warnings in tests
Browse files Browse the repository at this point in the history
Note that the fuzztest targets are not compiled with warnings enabled
because the FuzzTest and Abseil headers have compiler warnings.

Part 2 of the fix for
#2340.
  • Loading branch information
wantehchang authored Jul 31, 2024
1 parent cde6fcd commit cb39817
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ add_executable(aviftest aviftest.c)
if(AVIF_CODEC_LIBGAV1_ENABLED OR AVIF_LIBYUV_ENABLED)
set_target_properties(aviftest PROPERTIES LINKER_LANGUAGE "CXX")
endif()
target_link_libraries(aviftest avif)
target_link_libraries(aviftest avif avif_enable_warnings)
add_test(NAME aviftest COMMAND aviftest ${CMAKE_CURRENT_SOURCE_DIR}/data)
register_test_for_coverage(aviftest ${CMAKE_CURRENT_SOURCE_DIR}/data/)

Expand All @@ -35,23 +35,25 @@ if(AVIF_CODEC_LIBGAV1_ENABLED OR AVIF_LIBYUV_ENABLED)
set_target_properties(avifyuv PROPERTIES LINKER_LANGUAGE "CXX")
endif()

target_link_libraries(avifyuv avif)
target_link_libraries(avifyuv avif avif_enable_warnings)
foreach(AVIFYUV_MODE limited rgb) # Modes drift and premultiply take more than 2 minutes each so they are disabled.
add_test(NAME avifyuv_${AVIFYUV_MODE} COMMAND avifyuv -m ${AVIFYUV_MODE})
endforeach()

if(AVIF_ENABLE_FUZZTEST OR AVIF_ENABLE_GTEST OR AVIF_BUILD_APPS)
add_library(aviftest_helpers OBJECT gtest/aviftest_helpers.cc)
target_link_libraries(aviftest_helpers avif_apps avif)
target_link_libraries(aviftest_helpers PUBLIC avif_apps avif)
target_link_libraries(aviftest_helpers PRIVATE avif_enable_warnings)
add_library(aviftest_helpers_internal OBJECT gtest/aviftest_helpers.cc)
target_link_libraries(aviftest_helpers_internal avif_apps_internal avif_internal)
target_link_libraries(aviftest_helpers_internal PUBLIC avif_apps_internal avif_internal)
target_link_libraries(aviftest_helpers_internal PRIVATE avif_enable_warnings)
endif()

if(CMAKE_CXX_COMPILER_LOADED)
# Fuzz target without any fuzzing engine dependency. For easy reproduction of oss-fuzz issues.
add_executable(repro_avif_decode_fuzzer oss-fuzz/avif_decode_fuzzer.cc oss-fuzz/repro_fuzz.cc)
set_target_properties(repro_avif_decode_fuzzer PROPERTIES LINKER_LANGUAGE "CXX")
target_link_libraries(repro_avif_decode_fuzzer avif)
target_link_libraries(repro_avif_decode_fuzzer avif avif_enable_warnings)
# The test below exists for coverage and as a usage example: repro_avif_decode_fuzzer [reproducer file path]
add_test(NAME repro_avif_decode_fuzzer COMMAND repro_avif_decode_fuzzer
${CMAKE_CURRENT_SOURCE_DIR}/data/color_grid_alpha_nogrid.avif
Expand All @@ -65,35 +67,35 @@ endif()
# are considered as extra linked libraries.
macro(add_avif_gtest TEST_NAME)
add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc)
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest GTest::Main ${ARGN})
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest GTest::Main ${ARGN} avif_enable_warnings)
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
register_test_for_coverage(${TEST_NAME})
endmacro()
macro(add_avif_internal_gtest TEST_NAME)
add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc)
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest GTest::Main ${ARGN})
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest GTest::Main ${ARGN} avif_enable_warnings)
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
register_test_for_coverage(${TEST_NAME})
endmacro()
macro(add_avif_gtest_with_data TEST_NAME)
add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc)
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest ${ARGN})
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers GTest::GTest ${ARGN} avif_enable_warnings)
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/)
register_test_for_coverage(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/)
endmacro()
macro(add_avif_internal_gtest_with_data TEST_NAME)
add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc)
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest ${ARGN})
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal GTest::GTest ${ARGN} avif_enable_warnings)
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/)
register_test_for_coverage(${TEST_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/data/)
endmacro()

if(AVIF_ENABLE_GTEST)
check_avif_option(AVIF_GTEST TARGET GTest::GTest PKG_NAME GTest)
add_library(avifincrtest_helpers OBJECT gtest/avifincrtest_helpers.cc)
target_link_libraries(avifincrtest_helpers avif GTest::GTest)
target_link_libraries(avifincrtest_helpers avif GTest::GTest avif_enable_warnings)
add_library(avifincrtest_helpers_internal OBJECT gtest/avifincrtest_helpers.cc)
target_link_libraries(avifincrtest_helpers_internal avif_internal GTest::GTest)
target_link_libraries(avifincrtest_helpers_internal avif_internal GTest::GTest avif_enable_warnings)
endif()

if(AVIF_ENABLE_GTEST)
Expand Down Expand Up @@ -185,6 +187,9 @@ if(AVIF_ENABLE_FUZZTEST)
macro(add_avif_fuzztest TEST_NAME)
add_executable(${TEST_NAME} gtest/${TEST_NAME}.cc gtest/avif_fuzztest_helpers.cc ${ARGN})
# FuzzTest bundles GoogleTest so no need to link to gtest librairies.
# NOTE: FuzzTest and Abseil headers have compiler warnings (mostly
# -Wsign-compare and some -Wunused-parameter and -Wshorten-64-to-32),
# so we don't enable compiler warnings on the fuzztest targets.
target_link_libraries(${TEST_NAME} PRIVATE aviftest_helpers_internal)
link_fuzztest(${TEST_NAME})
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
Expand Down Expand Up @@ -238,7 +243,7 @@ if(AVIF_BUILD_APPS)
target_link_options(are_images_equal PRIVATE /MANIFEST:NO)
endif()
endif()
target_link_libraries(are_images_equal aviftest_helpers)
target_link_libraries(are_images_equal aviftest_helpers avif_enable_warnings)
add_test(NAME test_cmd COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cmd.sh ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/data
)
Expand Down

0 comments on commit cb39817

Please sign in to comment.