summaryrefslogtreecommitdiff
path: root/tests/nonregression/checkmd5refs.cmake
blob: 80de4ea958957cd436fc5f4542393407a64325bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#  Copyright (c) 2014 Mathieu Malaterre <mathieu.malaterre@voxxl.com>
#
#  Redistribution and use is allowed according to the terms of the New
#  BSD license.
#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.

# check md5 refs
#
# This script will be used to make sure we never introduce a regression on any
# of the nonregression file.
#
# The approach is relatively simple, we compute a md5sum for each of the decode
# file. Anytime the md5sum is different from the reference one, we assume
# something went wrong and simply fails.  of course if could happen during the
# course of openjpeg development that the internals are changed that impact the
# decoding process that the output would be bitwise different (while PSNR would
# be kept identical).

#message("0: ${REFFILE}")
#message("1: ${CMAKE_CURRENT_BINARY_DIR}")
#message("2: ${FILENAME}")
file(GLOB globfiles "Temporary/${FILENAME}*.pgx" )
#message("6: ${globfiles}")

# REFFILE follow what md5sum -c would expect as input:
file(READ ${REFFILE} variable)
#string(REGEX REPLACE "\r?\n" ";" variable "${variable}")

foreach(pgxfullpath ${globfiles})
  get_filename_component(pgxfile ${pgxfullpath} NAME)
  #message("8: ${pgxfile}")
  execute_process(
    COMMAND ${CMAKE_COMMAND} -E md5sum ${pgxfile}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Temporary
    RESULT_VARIABLE res
    OUTPUT_VARIABLE output
    ERROR_VARIABLE  error_output
    OUTPUT_STRIP_TRAILING_WHITESPACE # important
  )
  
  # Pass the output back to ctest
  if(res)
    message(SEND_ERROR "md5 could not be computed, it failed with value ${res}. Output was: ${error_output}")
  endif()
  #message("3: ${output}")
  
  #message("4: ${variable}")
  string(REGEX MATCH "[0-9a-f]+  ${pgxfile}" output_var "${variable}")
  #message("5: ${output_var}")
  
  if("${output_var}" STREQUAL "${output}")
    #message("6: eqal")
  else()
    message(SEND_ERROR "not equal: [${output_var}] vs [${output}]")
  endif()
endforeach()