151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| #
 | |
| # Copyright (C) 2007 The Android Open Source Project
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| # Set up prog to be the path of this script, including following symlinks,
 | |
| # and set up progdir to be the fully-qualified pathname of its directory.
 | |
| prog="$0"
 | |
| while [ -h "${prog}" ]; do
 | |
|     newProg=`/bin/ls -ld "${prog}"`
 | |
|     newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
 | |
|     if expr "x${newProg}" : 'x/' >/dev/null; then
 | |
|         prog="${newProg}"
 | |
|     else
 | |
|         progdir=`dirname "${prog}"`
 | |
|         prog="${progdir}/${newProg}"
 | |
|     fi
 | |
| done
 | |
| oldwd=`pwd`
 | |
| progdir=`dirname "${prog}"`
 | |
| cd "${progdir}"
 | |
| progdir=`pwd`
 | |
| prog="${progdir}"/`basename "${prog}"`
 | |
| 
 | |
| info="info.txt"
 | |
| run="run"
 | |
| expected="expected.txt"
 | |
| output="out.txt"
 | |
| skip="SKIP"
 | |
| 
 | |
| dev_mode="no"
 | |
| if [ "x$1" = "x--dev" ]; then
 | |
|     dev_mode="yes"
 | |
|     shift
 | |
| fi
 | |
| 
 | |
| update_mode="no"
 | |
| if [ "x$1" = "x--update" ]; then
 | |
|     update_mode="yes"
 | |
|     shift
 | |
| fi
 | |
| 
 | |
| usage="no"
 | |
| if [ "x$1" = "x--help" ]; then
 | |
|     usage="yes"
 | |
| else
 | |
|     if [ "x$1" = "x" ]; then
 | |
|         testdir=`basename "$oldwd"`
 | |
|     else
 | |
|         testdir="$1"
 | |
|     fi
 | |
| 
 | |
|     if [ '!' -d "$testdir" ]; then
 | |
|         td2=`echo ${testdir}-*`
 | |
|         if [ '!' -d "$td2" ]; then
 | |
|             echo "${testdir}: no such test directory" 1>&2
 | |
|             usage="yes"
 | |
|         fi
 | |
|         testdir="$td2"
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if [ "$usage" = "yes" ]; then
 | |
|     prog=`basename $prog`
 | |
|     (
 | |
|         echo "usage:"
 | |
|         echo "  $prog --help             Print this message."
 | |
|         echo "  $prog testname           Run test normally."
 | |
|         echo "  $prog --dev testname     Development mode (dump to stdout)."
 | |
|         echo "  $prog --update testname  Update mode (replace expected.txt)."
 | |
|         echo "  Omitting the test name uses the current directory as the test."
 | |
|     ) 1>&2
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| td_info="$testdir"/"$info"
 | |
| td_run="$testdir"/"$run"
 | |
| td_expected="$testdir"/"$expected"
 | |
| td_skip="$testdir"/"$skip"
 | |
| 
 | |
| if [ -r "$td_skip" ]; then
 | |
|     exit 2
 | |
| fi
 | |
| 
 | |
| tmpdir=/tmp/test-$$
 | |
| 
 | |
| if [ '!' '(' -r "$td_info" -a -r "$td_run" -a -r "$td_expected" ')' ]; then
 | |
|     echo "${testdir}: missing files" 1>&2
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # copy the test to a temp dir and run it
 | |
| 
 | |
| echo "${testdir}: running..." 1>&2
 | |
| 
 | |
| rm -rf "$tmpdir"
 | |
| cp -Rp "$testdir" "$tmpdir"
 | |
| cd "$tmpdir"
 | |
| chmod 755 "$run"
 | |
| 
 | |
| #PATH="${progdir}/../build/bin:${PATH}"
 | |
| 
 | |
| good="no"
 | |
| if [ "$dev_mode" = "yes" ]; then
 | |
|     "./$run" 2>&1
 | |
|     echo "exit status: $?" 1>&2
 | |
|     good="yes"
 | |
| elif [ "$update_mode" = "yes" ]; then
 | |
|     "./$run" >"${progdir}/$td_expected" 2>&1
 | |
|     good="yes"
 | |
| else
 | |
|     "./$run" >"$output" 2>&1
 | |
|     cmp -s "$expected" "$output"
 | |
|     if [ "$?" = "0" ]; then
 | |
|         # output == expected
 | |
|         good="yes"
 | |
|         echo "$testdir"': succeeded!' 1>&2
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if [ "$good" = "yes" ]; then
 | |
|     cd "$oldwd"
 | |
|     rm -rf "$tmpdir"
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| (
 | |
|     echo "${testdir}: FAILED!"
 | |
|     echo ' '
 | |
|     echo '#################### info'
 | |
|     cat "$info" | sed 's/^/# /g'
 | |
|     echo '#################### diffs'
 | |
|     diff -u "$expected" "$output"
 | |
|     echo '####################'
 | |
|     echo ' '
 | |
|     echo "files left in $tmpdir"
 | |
| ) 1>&2
 | |
| 
 | |
| exit 1
 |