# Define a list of file which should be gracefully rejected:
set(BLACKLIST_JPEG2000
- empty
+ broken.jp2
+ broken2.jp2
+ broken3.jp2
+ broken4.jp2
+ gdal_fuzzer_assert_in_opj_j2k_read_SQcd_SQcc.patch.jp2
+ gdal_fuzzer_check_comp_dx_dy.jp2
+ gdal_fuzzer_check_number_of_tiles.jp2
+ gdal_fuzzer_unchecked_numresolutions.jp2
)
file(GLOB_RECURSE OPJ_DATA_NR_LIST
string(REGEX MATCH ${INPUT_FILENAME_NAME} bad_jpeg2000 ${BLACKLIST_JPEG2000})
# Dump the input image
- add_test(NR-${INPUT_FILENAME_NAME}-dump
- ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
+ add_test(NAME NR-${INPUT_FILENAME_NAME}-dump
+ COMMAND opj_dump
-i ${INPUT_FILENAME}
-o ${TEMP}/${INPUT_FILENAME_NAME}.txt
-v
else()
# Compare the dump output with the baseline
- add_test(NR-${INPUT_FILENAME_NAME}-compare_dump2base
- ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
+ add_test(NAME NR-${INPUT_FILENAME_NAME}-compare_dump2base
+ COMMAND compare_dump_files
-b ${BASELINE_NR}/opj_v2_${INPUT_FILENAME_NAME_WE}.txt
-t ${TEMP}/${INPUT_FILENAME_NAME}.txt
)
string(REGEX MATCH "^!" FAILED_TEST_FOUND ${EXE_NAME})
if (FAILED_TEST_FOUND)
- # Manage the different cases with the failed sign to remove the first argument which must be image_to_j2k
+ # Manage the different cases with the failed sign to remove the first argument which must be opj_compress
set(FAILED_TEST_FOUND_1 0)
- string(REGEX MATCH "^!image_to_j2k$|^!j2k_to_image$" FAILED_TEST_FOUND_1 ${EXE_NAME})
+ string(REGEX MATCH "^!opj_compress$|^!opj_decompress$" FAILED_TEST_FOUND_1 ${EXE_NAME})
if (FAILED_TEST_FOUND_1)
set(FAILED_TEST_FOUND_2 0)
list(GET CMD_ARG_LIST 1 EXE_NAME)
- string(REGEX MATCH "^image_to_j2k$|^j2k_to_image$" FAILED_TEST_FOUND_2 ${EXE_NAME})
+ string(REGEX MATCH "^opj_compress$|^opj_decompress$" FAILED_TEST_FOUND_2 ${EXE_NAME})
if (FAILED_TEST_FOUND_2)
else ()
- message( FATAL_ERROR "${EXE_NAME} is not the right executable name to encode file (try to use image_to_j2k or j2k_to_image)")
+ message( FATAL_ERROR "${EXE_NAME} is not the right executable name to encode file (try to use opj_compress or opj_decompress)")
endif ()
endif ()
else ()
- # Check if the first argument is equal to image_to_j2k
- string(REGEX MATCH "^image_to_j2k$|^j2k_to_image$" EXE_NAME_FOUND ${EXE_NAME})
+ # Check if the first argument is equal to opj_compress
+ string(REGEX MATCH "^opj_compress$|^opj_decompress$" EXE_NAME_FOUND ${EXE_NAME})
if(EXE_NAME_FOUND)
- string(REGEX MATCH "image_to_j2k" ENC_TEST_FOUND ${EXE_NAME})
+ string(REGEX MATCH "opj_compress" ENC_TEST_FOUND ${EXE_NAME})
else()
- message( FATAL_ERROR "${EXE_NAME} is not the right executable name to encode file (try to use image_to_j2k)")
+ message( FATAL_ERROR "${EXE_NAME} is not the right executable name to encode file (try to use opj_compress)")
endif()
math(EXPR IT_TEST_ENC "${IT_TEST_ENC}+1" )
# Encode an image into the jpeg2000 format
- add_test(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
- ${EXECUTABLE_OUTPUT_PATH}/image_to_j2k
+ add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode
+ COMMAND opj_compress
${CMD_ARG_LIST_2}
)
else()
# Dump the encoding file
- add_test(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
- ${EXECUTABLE_OUTPUT_PATH}/j2k_dump
+ add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-dump
+ COMMAND opj_dump
-i ${OUTPUT_FILENAME}
-o ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt
)
NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode)
# Compare the dump file with the baseline
- add_test(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
- ${EXECUTABLE_OUTPUT_PATH}/compare_dump_files
+ add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dump2base
+ COMMAND compare_dump_files
-b ${BASELINE_NR}/opj_v2_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.txt
-t ${OUTPUT_FILENAME}-ENC-${IT_TEST_ENC}.txt
)
# Decode the encoding file with kakadu expand command
if (KDU_EXPAND_EXECUTABLE)
- add_test(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
- ${KDU_EXPAND_EXECUTABLE}
+ add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-decode-ref
+ COMMAND ${KDU_EXPAND_EXECUTABLE}
-i ${OUTPUT_FILENAME}
-o ${OUTPUT_FILENAME}.raw
)
NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-encode)
# Compare the decoding file with baseline generated from the kdu_expand and baseline.j2k
- add_test(NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
- ${EXECUTABLE_OUTPUT_PATH}/compareRAWimages
+ add_test(NAME NR-ENC-${INPUT_FILENAME_NAME}-${IT_TEST_ENC}-compare_dec-ref-out2base
+ COMMAND compareRAWimages
-b ${BASELINE_NR}/opj_${OUTPUT_FILENAME_NAME_WE}-ENC-${IT_TEST_ENC}.raw
-t ${OUTPUT_FILENAME}.raw
)
math(EXPR IT_TEST_DEC "${IT_TEST_DEC}+1" )
# Decode the input image
- add_test(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
- ${EXECUTABLE_OUTPUT_PATH}/j2k_to_image
+ add_test(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode
+ COMMAND opj_decompress
${CMD_ARG_LIST_2}
)
set_tests_properties(NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode PROPERTIES WILL_FAIL TRUE)
else()
+ # if not failed, check against registered md5:
+ add_test(NAME NR-DEC-${INPUT_FILENAME_NAME}-${IT_TEST_DEC}-decode-md5 COMMAND ${CMAKE_COMMAND}
+ -DREFFILE:STRING=${CMAKE_CURRENT_SOURCE_DIR}/md5refs.txt
+ -DFILENAME:STRING=${INPUT_FILENAME_NAME}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/checkmd5refs.cmake)
+
# FIXME: add a compare2base function base on raw which
# can output png diff files if necesary