blob: 2c6847107299716637264001b075cb8863b21197 [file] [log] [blame]
# CMake tests for libtiff (common functionality)
#
# Copyright © 2015 Open Microscopy Environment / University of Dundee
# Written by Roger Leigh <rleigh@codelibre.net>
#
# Permission to use, copy, modify, distribute, and sell this software and
# its documentation for any purpose is hereby granted without fee, provided
# that (i) the above copyright notices and this permission notice appear in
# all copies of the software and related documentation, and (ii) the names of
# Sam Leffler and Silicon Graphics may not be used in any advertising or
# publicity relating to the software without the specific, prior written
# permission of Sam Leffler and Silicon Graphics.
#
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
#
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
# Run a test command, and print out any observed output discrepancies
macro(test_command command)
file(MAKE_DIRECTORY "${OBSERVED_DIR}")
if(STDIN)
set(input INPUT_FILE "${STDIN}")
endif()
string(REGEX REPLACE ";" " " display_args "${ARGN}")
message(STATUS "Running ${command} ${display_args}")
set(ENV{XERCESC_NLS_HOME} "${NLS_HOME}")
execute_process(
COMMAND "${command}" ${ARGN}
RESULT_VARIABLE TEST_STATUS
${input}
OUTPUT_FILE "${OBSERVED_DIR}/${NAME}.log"
ERROR_FILE "${OBSERVED_DIR}/${NAME}.log"
WORKING_DIRECTORY "${WORKDIR}")
if(TEST_STATUS AND NOT EXPECT_FAIL)
message(FATAL_ERROR "Returned failed status ${TEST_STATUS}")
endif()
if(NOT TEST_STATUS AND EXPECT_FAIL)
message(FATAL_ERROR "Unexpected success")
endif()
# Replace timings in output, and convert newlines for safe comparison
file(READ "${OBSERVED_DIR}/${NAME}.log" output)
string(REGEX REPLACE " *[0-9]+ *ms *" "{timing removed}" output "${output}")
file(WRITE "${OBSERVED_DIR}/${NAME}-mod.log" ${output})
configure_file("${OBSERVED_DIR}/${NAME}-mod.log" "${OBSERVED_DIR}/${NAME}.log"
@ONLY NEWLINE_STYLE UNIX)
configure_file("${EXPECTED_DIR}/${NAME}.log" "${OBSERVED_DIR}/${NAME}-exp.log"
@ONLY NEWLINE_STYLE UNIX)
file(REMOVE "${OBSERVED_DIR}/${NAME}-mod.log")
file(READ "${OBSERVED_DIR}/${NAME}.log" observed)
file(READ "${OBSERVED_DIR}/${NAME}-exp.log" expected)
# If the observed and expected logs differ, output a diff and fail
if(NOT observed STREQUAL expected)
if(DIFF)
execute_process(COMMAND ${DIFF} -u "${OBSERVED_DIR}/${NAME}-exp.log" "${OBSERVED_DIR}/${NAME}.log")
endif()
file(REMOVE "${OBSERVED_DIR}/${NAME}-exp.log")
message(FATAL_ERROR "Observed output does not match expected output")
endif()
file(REMOVE "${OBSERVED_DIR}/${NAME}-exp.log")
endmacro()
# Add the directory containing libxerces-c to the PATH (Windows only)
if(WIN32)
get_filename_component(LIBXERCES_C_DIR "${LIBXERCES_C}" DIRECTORY)
file(TO_NATIVE_PATH "${LIBXERCES_C_DIR}" LIBXERCES_C_DIR)
set(ENV{PATH} "${LIBXERCES_C_DIR};$ENV{PATH}")
endif()
if(CYGWIN)
get_filename_component(LIBXERCES_C_DIR "${LIBXERCES_C}" DIRECTORY)
file(TO_NATIVE_PATH "${LIBXERCES_C_DIR}" LIBXERCES_C_DIR)
set(ENV{PATH} "${LIBXERCES_C_DIR}:$ENV{PATH}")
endif()
test_command("${PROGRAM}" ${ARGS})