1#!/usr/bin/env bash 2# 3# Copyright (c) 2005 Junio C Hamano 4# 5 6test_description='the test framework itself.' 7. $(dirname "$0")/test-lib.sh || exit 1 8 9################################################################ 10# Test harness 11test_begin_subtest 'success is reported like this' 12test_expect_success ':' 13 14test_begin_subtest 'test runs if prerequisite is satisfied' 15test_set_prereq HAVEIT 16test_expect_success 'test_have_prereq HAVEIT' 17 18test_begin_subtest 'tests clean up after themselves' 19clean=no 20test_expect_success 'test_when_finished clean=yes' 21 22test_begin_subtest 'tests clean up even after a failure' 23cleaner=no 24test_expect_code 1 'test_when_finished cleaner=yes && (exit 1)' 25 26if test $clean$cleaner != yesyes 27then 28 say "bug in test framework: cleanup commands do not work reliably" 29 exit 1 30fi 31 32test_begin_subtest 'failure to clean up causes the test to fail' 33test_expect_code 2 'test_when_finished "(exit 2)"' 34 35EXPECTED=$NOTMUCH_SRCDIR/test/test.expected-output 36suppress_diff_date () { 37 sed -e 's/\(.*\-\-\- test-verbose\.4\.\expected\).*/\1/' \ 38 -e 's/\(.*\+\+\+ test-verbose\.4\.\output\).*/\1/' 39} 40 41test_begin_subtest "Ensure that test output is suppressed unless the test fails" 42output=$(cd $TEST_DIRECTORY; NOTMUCH_TEST_QUIET= $NOTMUCH_SRCDIR/test/test-verbose 2>&1 | suppress_diff_date) 43expected=$(cat $EXPECTED/test-verbose-no | suppress_diff_date) 44test_expect_equal "$output" "$expected" 45 46test_begin_subtest "Ensure that -v does not suppress test output" 47output=$(cd $TEST_DIRECTORY; NOTMUCH_TEST_QUIET= $NOTMUCH_SRCDIR/test/test-verbose -v 2>&1 | suppress_diff_date) 48expected=$(cat $EXPECTED/test-verbose-yes | suppress_diff_date) 49# Do not include the results of test-verbose in totals 50rm $TEST_DIRECTORY/test-results/test-verbose 51rm -r $TEST_DIRECTORY/tmp.test-verbose 52test_expect_equal "$output" "$expected" 53 54 55################################################################ 56# Test mail store prepared in test-lib.sh 57 58test_begin_subtest 'test that mail store was created' 59test_expect_success 'test -d "${MAIL_DIR}"' 60 61test_begin_subtest 'mail store should be empty' 62find "${MAIL_DIR}" -type f -print >should-be-empty 63test_expect_success 'cmp -s /dev/null should-be-empty' 64 65test_begin_subtest 'NOTMUCH_CONFIG is set and points to an existing file' 66test_expect_success 'test -f "${NOTMUCH_CONFIG}"' 67 68test_begin_subtest 'PATH is set to build directory' 69test_expect_equal \ 70 "$(dirname ${TEST_DIRECTORY})" \ 71 "$(echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,')" 72 73test_begin_subtest 'notmuch is compiled with debugging symbols' 74readelf --sections $(command -v notmuch) | grep \.debug 75test_expect_equal 0 $? 76 77test_done 78