1#!/bin/bash
2# Export tool testing script
3#
4# Version: 20170901
5
6EXIT_SUCCESS=0;
7EXIT_FAILURE=1;
8EXIT_IGNORE=77;
9
10OPTION_SETS="";
11OPTIONS="-d";
12
13INPUT_GLOB="*";
14
15test_callback()
16{
17	local TMPDIR=$1;
18	local TEST_SET_DIRECTORY=$2;
19	local TEST_OUTPUT=$3;
20	local TEST_EXECUTABLE=$4;
21	local TEST_INPUT=$5;
22	shift 5;
23	local ARGUMENTS=$@;
24
25	TEST_EXECUTABLE=$( readlink_f "${TEST_EXECUTABLE}" );
26	INPUT_FILE_FULL_PATH=$( readlink_f "${INPUT_FILE}" );
27
28	(cd ${TMPDIR} && run_test_with_input_and_arguments "${TEST_EXECUTABLE}" "${INPUT_FILE_FULL_PATH}" ${ARGUMENTS[@]} ${OPTIONS[@]});
29	local RESULT=$?;
30
31	local TEST_LOG="${TEST_OUTPUT}.log";
32
33	if test "${PLATFORM}" = "Darwin";
34	then
35		(cd ${TMPDIR} && find "'${INPUT_NAME}.export'" -type f -exec md5 {} \; | sort -k 2 > "'${TEST_LOG}'");
36	else
37		(cd ${TMPDIR} && find "'${INPUT_NAME}.export'" -type f -exec md5sum {} \; | sort -k 2 > "'${TEST_LOG}'");
38	fi
39
40	local TEST_RESULTS="${TMPDIR}/${TEST_LOG}";
41	local STORED_TEST_RESULTS="${TEST_SET_DIRECTORY}/${TEST_LOG}.gz";
42
43	if test -f "'${STORED_TEST_RESULTS}'";
44	then
45		# Using zcat here since zdiff has issues on Mac OS X.
46		# Note that zcat on Mac OS X requires the input from stdin.
47		zcat < "'${STORED_TEST_RESULTS}'" | diff "'${TEST_RESULTS}'" -;
48		RESULT=$?;
49	else
50		gzip "'${TEST_RESULTS}'";
51
52		mv "'${TEST_RESULTS}.gz'" ${TEST_SET_DIRECTORY};
53	fi
54	return ${RESULT};
55}
56
57if ! test -z ${SKIP_TOOLS_TESTS};
58then
59	exit ${EXIT_IGNORE};
60fi
61
62TEST_EXECUTABLE="../pfftools/pffexport";
63
64if ! test -x "${TEST_EXECUTABLE}";
65then
66	TEST_EXECUTABLE="../pfftools/pffexport.exe";
67fi
68
69if ! test -x "${TEST_EXECUTABLE}";
70then
71	echo "Missing test executable: ${TEST_EXECUTABLE}";
72
73	exit ${EXIT_FAILURE};
74fi
75
76TEST_RUNNER="tests/test_runner.sh";
77
78if ! test -f "${TEST_RUNNER}";
79then
80	TEST_RUNNER="./test_runner.sh";
81fi
82
83if ! test -f "${TEST_RUNNER}";
84then
85	echo "Missing test runner: ${TEST_RUNNER}";
86
87	exit ${EXIT_FAILURE};
88fi
89
90PLATFORM=`uname -s`;
91
92source ${TEST_RUNNER};
93
94assert_availability_binary find;
95
96if test "${PLATFORM}" = "Darwin";
97then
98	assert_availability_binary md5;
99else
100	assert_availability_binary md5sum;
101fi
102
103run_test_on_input_directory "pffexport" "pffexport" "with_callback" "${OPTION_SETS}" "${TEST_EXECUTABLE}" "input" "${INPUT_GLOB}" "${OPTIONS}";
104RESULT=$?;
105
106exit ${RESULT};
107
108