summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan@nathanm.com>2021-04-29 18:45:41 -0700
committerHans Kristian Rosbach <hk-github@circlestorm.org>2021-05-03 10:48:24 +0200
commit0733cb47997b94506ccfe429d7f81abc99b9ad2f (patch)
tree964bc68795045ca29c6d6212390809865b62eb50
parent78f07cc2c4281276655956999cc6eee982f621e5 (diff)
Print differences between expected output in test-compress cmake script and upload as artifacts.
-rw-r--r--.github/workflows/cmake.yml5
-rw-r--r--cmake/test-compress.cmake44
2 files changed, 42 insertions, 7 deletions
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
index 95d3b5a..8178e2a 100644
--- a/.github/workflows/cmake.yml
+++ b/.github/workflows/cmake.yml
@@ -441,4 +441,9 @@ jobs:
path: |
${{ matrix.build-dir || '.' }}/CMakeFiles/CMakeOutput.log
${{ matrix.build-dir || '.' }}/CMakeFiles/CMakeError.log
+ ${{ matrix.build-dir || '.' }}/Testing/Temporary/*.log
+ ${{ matrix.build-dir || '.' }}/test/**/*.diff
+ ${{ matrix.build-dir || '.' }}/test/**/*.hex
+ ${{ matrix.build-dir || '.' }}/test/**/*.gz*
+ ${{ matrix.build-dir || '.' }}/test/**/*.out
retention-days: 30
diff --git a/cmake/test-compress.cmake b/cmake/test-compress.cmake
index 4e90821..97c387d 100644
--- a/cmake/test-compress.cmake
+++ b/cmake/test-compress.cmake
@@ -64,14 +64,41 @@ set(OUTPUT_BASE "${CMAKE_CURRENT_BINARY_DIR}/test/${TEST_NAME}-${UNIQUE_ID}")
get_filename_component(OUTPUT_DIR "${OUTPUT_BASE}" DIRECTORY)
file(MAKE_DIRECTORY "${OUTPUT_DIR}")
+# Cleanup temporary files
macro(cleanup)
- # Cleanup temporary files
- file(REMOVE
- ${OUTPUT_BASE}.gz
- ${OUTPUT_BASE}.out
- ${OUTPUT_BASE}.gzip
- ${OUTPUT_BASE}.gzip.gz
- ${OUTPUT_BASE}.gzip.out)
+ if(NOT DEFINED ENV{CI})
+ file(REMOVE
+ ${OUTPUT_BASE}.gz
+ ${OUTPUT_BASE}.out
+ ${OUTPUT_BASE}.gzip
+ ${OUTPUT_BASE}.gzip.gz
+ ${OUTPUT_BASE}.gzip.out)
+ endif()
+endmacro()
+
+# Show differences between two files
+macro(diff src1 src2)
+ find_program(XXD xxd)
+ if(XXD)
+ find_program(DIFF diff)
+ if(DIFF)
+ set(XXD_COMMAND ${XXD} ${src1} ${src1}.hex)
+ execute_process(COMMAND ${XXD_COMMAND})
+ set(XXD_COMMAND ${XXD} ${src2} ${src2}.hex)
+ execute_process(COMMAND ${XXD_COMMAND})
+
+ set(DIFF_COMMAND ${DIFF} -u ${src1}.hex ${src2}.hex)
+ execute_process(COMMAND ${DIFF_COMMAND}
+ OUTPUT_FILE ${src2}.diff)
+
+ file(READ ${src2}.diff DIFF_OUTPUT)
+ message(STATUS ${DIFF_OUTPUT})
+
+ if(NOT DEFINED ENV{CI})
+ file(REMOVE ${src1}.hex ${src2}.hex ${src2}.diff)
+ endif()
+ endif()
+ endif()
endmacro()
# Compress input file
@@ -122,6 +149,7 @@ if(COMPARE)
RESULT_VARIABLE CMD_RESULT)
if(CMD_RESULT)
+ diff(${INPUT} ${OUTPUT_BASE}.out)
cleanup()
message(FATAL_ERROR "Compare minigzip decompress failed: ${CMD_RESULT}")
endif()
@@ -158,6 +186,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
RESULT_VARIABLE CMD_RESULT)
if(CMD_RESULT)
+ diff(${INPUT} ${OUTPUT_BASE}.gzip.out)
cleanup()
message(FATAL_ERROR "Compare gzip decompress failed: ${CMD_RESULT}")
endif()
@@ -209,6 +238,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
RESULT_VARIABLE CMD_RESULT)
if(CMD_RESULT)
+ diff(${INPUT} ${OUTPUT_BASE}.gzip)
cleanup()
message(FATAL_ERROR "Compare decompress gzip failed: ${CMD_RESULT}")
endif()