#! /bin/sh # # A very simple function test for gdiffmk.sh. # # Copyright (C) 2004-2020, 2023 Free Software Foundation, Inc. # Written by Mike Bianchi . # Subsequent modifications by G. Branden Robinson. # This file is part of the gdiffmk utility, which is part of groff. # groff is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # groff is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public # License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This file is part of GNU gdiffmk. # abs_top_out_dir is set by AM_TESTS_ENVIRONMENT (defined in # Makefile.am) when running "make check". gdiffmk=${abs_top_out_dir:-.}/gdiffmk # Locate directory containing our test artifacts. in_dir= for srcroot in . .. ../.. do # Look for a source file characteristic of the groff source tree. if ! [ -f "$srcroot"/ChangeLog.115 ] then continue fi d=$srcroot/contrib/gdiffmk/tests if [ -d "$d" ] then in_dir=$d break fi done # If we can't find it, we can't test. if [ -z "$in_dir" ] then echo "$0: cannot locate test artifact input directory" >&2 exit 77 # skip fi # Locate directory where we'll put the test output. out_dir= for buildroot in . .. ../.. do d=$buildroot/contrib/gdiffmk/tests if [ -d "$d" ] then out_dir=$d break fi done # If we can't find it, we can't test. if [ -z "$out_dir" ] then echo "$0: cannot locate test artifact output directory" >&2 exit 77 # skip fi exit_code=0 # Success failure_count=0 TestResult () { if cmp -s $1 $2 then echo $2 PASSED else echo '' echo $2 TEST FAILED diff $1 $2 echo '' exit_code=1 # Failure failure_count=`expr ${failure_count} + 1` fi } CleanUp () { rm -f ${out_dir}/result.* ${out_dir}/tmp_file.* ${tmpfile} } tmpfile=${TMPDIR:-/tmp}/$$ trap 'trap "" HUP INT QUIT TERM; CleanUp; kill -s INT $$' \ HUP INT QUIT TERM # Run tests. # 3 file arguments ResultFile=${out_dir}/result.1 ${gdiffmk} ${in_dir}/file1 ${in_dir}/file2 ${ResultFile} 2>${tmpfile} cat ${tmpfile} >>${ResultFile} TestResult ${in_dir}/baseline ${ResultFile} # OUTPUT to stdout by default ResultFile=${out_dir}/result.2 ${gdiffmk} ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline ${ResultFile} # OUTPUT to stdout via - argument ResultFile=${out_dir}/result.3 ${gdiffmk} ${in_dir}/file1 ${in_dir}/file2 - >${ResultFile} 2>&1 TestResult ${in_dir}/baseline ${ResultFile} # FILE1 from standard input via - argument ResultFile=${out_dir}/result.4 ${gdiffmk} - ${in_dir}/file2 <${in_dir}/file1 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline ${ResultFile} # FILE2 from standard input via - argument ResultFile=${out_dir}/result.5 ${gdiffmk} ${in_dir}/file1 - <${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline ${ResultFile} # Different values for addmark, changemark, deletemark ResultFile=${out_dir}/result.6 ${gdiffmk} -aA -cC -dD ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.6 ${ResultFile} # Different values for addmark, changemark, deletemark # Alternate format of -a -c and -d flag arguments ResultFile=${out_dir}/result.6a ${gdiffmk} -a A -c C -d D ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.6a ${ResultFile} # Test for accidental file overwrite. ResultFile=${out_dir}/result.7 TempFile=${out_dir}/tmp_file.7 cp ${in_dir}/file2 "$TempFile" ${gdiffmk} -aA -dD -cC ${in_dir}/file1 "$TempFile" "$TempFile" \ >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.7 ${ResultFile} # Test -D option ResultFile=${out_dir}/result.8 ${gdiffmk} -D ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.8 ${ResultFile} # Test -D and -M options ResultFile=${out_dir}/result.9 ${gdiffmk} -D -M '<<<<' '>>>>' \ ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.9 ${ResultFile} # Test -D and -M options # Alternate format of -M argument. ResultFile=${out_dir}/result.9a ${gdiffmk} -D -M'<<<<' '>>>>' \ ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.9a ${ResultFile} # Test -D and -B options ResultFile=${out_dir}/result.10 ${gdiffmk} -D -B ${in_dir}/file1 ${in_dir}/file2 >${ResultFile} 2>&1 TestResult ${in_dir}/baseline.10 ${ResultFile} echo failure_count ${failure_count} # You can comment out the following line to examine failing cases. CleanUp exit ${exit_code} # vim:set ai et sw=4 ts=4 tw=72: