1#!/bin/sh 2# 3# Copyright (c) 2005 Junio C Hamano 4# 5 6# For repeatability, reset the environment to known value. 7LANG=C 8LC_ALL=C 9PAGER=cat 10TZ=UTC 11export LANG LC_ALL PAGER TZ 12unset AUTHOR_DATE 13unset AUTHOR_EMAIL 14unset AUTHOR_NAME 15unset COMMIT_AUTHOR_EMAIL 16unset COMMIT_AUTHOR_NAME 17unset GIT_ALTERNATE_OBJECT_DIRECTORIES 18unset GIT_AUTHOR_DATE 19unset GIT_AUTHOR_EMAIL 20unset GIT_AUTHOR_NAME 21unset GIT_COMMITTER_EMAIL 22unset GIT_COMMITTER_NAME 23unset GIT_DIFF_OPTS 24unset GIT_DIR 25unset GIT_EXTERNAL_DIFF 26unset GIT_INDEX_FILE 27unset GIT_OBJECT_DIRECTORY 28unset SHA1_FILE_DIRECTORIES 29unset SHA1_FILE_DIRECTORY 30 31# Each test should start with something like this, after copyright notices: 32# 33# test_description='Description of this test... 34# This test checks if command xyzzy does the right thing... 35# ' 36# . ./test-lib.sh 37 38error () { 39echo"* error: $*" 40trap-exit 41exit1 42} 43 44say () { 45echo"* $*" 46} 47 48test"${test_description}"!=""|| 49error "Test script did not set test_description." 50 51whiletest"$#"-ne0 52do 53case"$1"in 54-d|--d|--de|--deb|--debu|--debug) 55 debug=t;shift;; 56-i|--i|--im|--imm|--imme|--immed|--immedi|--immedia|--immediat|--immediate) 57 immediate=t;shift;; 58-h|--h|--he|--hel|--help) 59echo"$test_description" 60exit0;; 61-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose) 62 verbose=t;shift;; 63*) 64break;; 65esac 66done 67 68exec5>&1 69iftest"$verbose"="t" 70then 71exec4>&2 3>&1 72else 73exec4>/dev/null 3>/dev/null 74fi 75 76test_failure=0 77test_count=0 78 79trap'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1'exit 80 81 82# You are not expected to call test_ok_ and test_failure_ directly, use 83# the text_expect_* functions instead. 84 85test_ok_ () { 86 test_count=$(expr "$test_count" + 1) 87 say " ok$test_count: $@" 88} 89 90test_failure_ () { 91 test_count=$(expr "$test_count" + 1) 92 test_failure=$(expr "$test_failure" + 1); 93 say "FAIL$test_count:$1" 94shift 95echo"$@"|sed-e's/^/ /' 96test"$immediate"=""|| {trap-exit;exit1; } 97} 98 99 100test_debug () { 101test"$debug"=""||eval"$1" 102} 103 104test_run_ () { 105eval>&3 2>&4"$1" 106 eval_ret="$?" 107return0 108} 109 110test_expect_failure () { 111test"$#"=2|| 112 error "bug in the test script: not 2 parameters to test-expect-failure" 113 say >&3"expecting failure:$2" 114 test_run_ "$2" 115if["$?"=0-a"$eval_ret"!=0] 116then 117 test_ok_ "$1" 118else 119 test_failure_ "$@" 120fi 121} 122 123test_expect_success () { 124test"$#"=2|| 125 error "bug in the test script: not 2 parameters to test-expect-success" 126 say >&3"expecting success:$2" 127 test_run_ "$2" 128if["$?"=0-a"$eval_ret"=0] 129then 130 test_ok_ "$1" 131else 132 test_failure_ "$@" 133fi 134} 135 136test_done () { 137trap-exit 138case"$test_failure"in 1390) 140# We could: 141# cd .. && rm -fr trash 142# but that means we forbid any tests that use their own 143# subdirectory from calling test_done without coming back 144# to where they started from. 145# The Makefile provided will clean this test area so 146# we will leave things as they are. 147 148 say "passed all$test_counttest(s)" 149exit0;; 150 151*) 152 say "failed$test_failureamong$test_counttest(s)" 153exit1;; 154 155esac 156} 157 158# Test the binaries we have just built. The tests are kept in 159# t/ subdirectory and are run in trash subdirectory. 160PATH=$(pwd)/..:$PATH 161 162# Test repository 163test=trash 164rm-fr"$test" 165mkdir"$test" 166cd"$test" 167git-init-db --template=../../templates/blt/2>/dev/null || 168error "cannot run git-init-db" 169 170mv .git/hooks .git/hooks-disabled 171