Blame MakeTools/Test/buildmsgs_test.sh

Packit 857059
#! /bin/bash
Packit 857059
# BEGIN_ICS_COPYRIGHT8 ****************************************
Packit 857059
# 
Packit 857059
# Copyright (c) 2015, Intel Corporation
Packit 857059
# 
Packit 857059
# Redistribution and use in source and binary forms, with or without
Packit 857059
# modification, are permitted provided that the following conditions are met:
Packit 857059
# 
Packit 857059
#     * Redistributions of source code must retain the above copyright notice,
Packit 857059
#       this list of conditions and the following disclaimer.
Packit 857059
#     * Redistributions in binary form must reproduce the above copyright
Packit 857059
#       notice, this list of conditions and the following disclaimer in the
Packit 857059
#       documentation and/or other materials provided with the distribution.
Packit 857059
#     * Neither the name of Intel Corporation nor the names of its contributors
Packit 857059
#       may be used to endorse or promote products derived from this software
Packit 857059
#       without specific prior written permission.
Packit 857059
# 
Packit 857059
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Packit 857059
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit 857059
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Packit 857059
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
Packit 857059
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit 857059
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Packit 857059
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Packit 857059
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Packit 857059
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit 857059
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 857059
# 
Packit 857059
# END_ICS_COPYRIGHT8   ****************************************
Packit 857059
Packit 857059
failed=0
Packit 857059
tests=0
Packit 857059
log=test.$$
Packit 857059
cmd="perl ../buildmsgs.pl"
Packit 857059
Packit 857059
error() {
Packit 857059
	echo $*
Packit 857059
	[ -s $log ] && cat $log
Packit 857059
	let failed+=1
Packit 857059
}
Packit 857059
Packit 857059
test_file() {
Packit 857059
	let tests+=1
Packit 857059
	out=`basename $1 .msg`_Messages
Packit 857059
	if $cmd $1 > $log 2>&1 ; then
Packit 857059
		if [ -s $log ] ; then
Packit 857059
			error "Unexpected output from buildmsgs.pl $1"
Packit 857059
			return 1
Packit 857059
		else
Packit 857059
			for file in $out.*; do
Packit 857059
				echo "diff expect/$file $file" > $log
Packit 857059
				diff expect/$file $file >> $log
Packit 857059
				if [ $? != 0 ]; then
Packit 857059
					error "$file"
Packit 857059
					return 1
Packit 857059
				fi
Packit 857059
			done
Packit 857059
		fi
Packit 857059
	else
Packit 857059
		error "buildmsgs.pl $1 FAILED"
Packit 857059
		return 1
Packit 857059
	fi
Packit 857059
	rm $out.*
Packit 857059
	return 0
Packit 857059
}
Packit 857059
Packit 857059
# regression tests
Packit 857059
for msg in *.msg; do
Packit 857059
	echo -n "$msg: "
Packit 857059
	if test_file $msg; then
Packit 857059
		echo "PASSED"
Packit 857059
	else
Packit 857059
		echo "FAILED"
Packit 857059
	fi
Packit 857059
done
Packit 857059
Packit 857059
# check error output
Packit 857059
echo -n "Errors: "
Packit 857059
let tests+=1
Packit 857059
if $cmd 'ErrTest.in' > $log 2> 'ErrTest.err'; then
Packit 857059
	error "No error returned"
Packit 857059
	echo "FAILED"
Packit 857059
elif [ -s $log ]; then
Packit 857059
	error "Unexpected output to stdout"
Packit 857059
	echo "FAILED"
Packit 857059
elif [ -f "ErrTest_Messages.c" ] || [ -f "ErrTest_Messages.h" ]; then
Packit 857059
	error "Output files created"
Packit 857059
	echo "FAILED"
Packit 857059
else
Packit 857059
	echo "diff expect/ErrTest.err ErrTest.err" > $log
Packit 857059
	diff expect/ErrTest.err ErrTest.err >> $log
Packit 857059
	if [ $? != 0 ]; then
Packit 857059
		error "ErrTest.err"
Packit 857059
		echo "FAILED"
Packit 857059
	else
Packit 857059
		echo "PASSED"
Packit 857059
		rm ErrTest.err
Packit 857059
	fi
Packit 857059
fi
Packit 857059
Packit 857059
# check format strings
Packit 857059
echo -n "Formats: "
Packit 857059
let tests+=1
Packit 857059
if $cmd --test < Formats.in > Formats.out 2> $log ; then
Packit 857059
	if [ -s $log ]; then
Packit 857059
		error "Unexpect output to stderr"
Packit 857059
		echo "FAILED"
Packit 857059
	else
Packit 857059
		echo "diff expect/Formats.out Formats.out" > $log
Packit 857059
		diff expect/Formats.out Formats.out >> $log
Packit 857059
		if [ $? != 0 ]; then
Packit 857059
			error "Formats.out"
Packit 857059
			echo "FAILED"
Packit 857059
		else
Packit 857059
			echo "PASSED"
Packit 857059
			rm Formats.out
Packit 857059
		fi
Packit 857059
	fi
Packit 857059
else
Packit 857059
	error "Error returned"
Packit 857059
	echo "FAILED"
Packit 857059
fi
Packit 857059
Packit 857059
let passed=tests-failed
Packit 857059
echo "$tests Tests Run, $passed Passed, $failed Failed"
Packit 857059
Packit 857059
rm $log
Packit 857059
Packit 857059
if [ $failed != 0 ]
Packit 857059
then
Packit 857059
	exit 1
Packit 857059
else
Packit 857059
	exit 0
Packit 857059
fi
Packit 857059