aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar John Keeping <john@keeping.me.uk>2013-04-01 23:09:05 (JST)
committerGravatar Jason A. Donenfeld <Jason@zx2c4.com>2013-04-09 05:27:11 (JST)
commitc95cc5ec56dbb7394015eb18201403be6d80f69b (patch)
tree7014b96a1a1408b5291532c0c442082aba693a80
parent8a92df033e974af6338b530a0d78d1bdb0b0f918 (diff)
downloadcgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.zip
cgit-c95cc5ec56dbb7394015eb18201403be6d80f69b.tar.gz
tests: use Git's test framework
This allows tests to run in parallel as well as letting us use "prove" or another TAP harness to run the tests. Git's test framework requires Git to be fully built before letting any tests run, so add a new target to the top-level Makefile which builds all of Git instead of just libgit.a and make the "test" target depend on that. Signed-off-by: John Keeping <john@keeping.me.uk>
-rw-r--r--Makefile7
-rwxr-xr-xtests/setup.sh130
-rwxr-xr-xtests/t0001-validate-git-versions.sh28
-rwxr-xr-xtests/t0010-validate-html.sh31
-rwxr-xr-xtests/t0020-validate-cache.sh32
-rwxr-xr-xtests/t0101-index.sh25
-rwxr-xr-xtests/t0102-summary.sh35
-rwxr-xr-xtests/t0103-log.sh33
-rwxr-xr-xtests/t0104-tree.sh33
-rwxr-xr-xtests/t0105-commit.sh41
-rwxr-xr-xtests/t0106-diff.sh21
-rwxr-xr-xtests/t0107-snapshot.sh77
-rwxr-xr-xtests/t0108-patch.sh37
13 files changed, 239 insertions, 291 deletions
diff --git a/Makefile b/Makefile
index 59edab0..ed29b3a 100644
--- a/Makefile
+++ b/Makefile
@@ -66,7 +66,10 @@ all:: cgit
66cgit: 66cgit:
67 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk ../cgit NO_CURL=1 67 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) -f ../cgit.mk ../cgit NO_CURL=1
68 68
69test: all 69git:
70 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1
71
72test: all git
70 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all 73 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all
71 74
72install: all 75install: all
@@ -145,7 +148,7 @@ get-git:
145tags: 148tags:
146 $(QUIET_TAGS)find . -name '*.[ch]' | xargs ctags 149 $(QUIET_TAGS)find . -name '*.[ch]' | xargs ctags
147 150
148.PHONY: all cgit get-git 151.PHONY: all cgit git get-git
149.PHONY: clean clean-doc cleanall 152.PHONY: clean clean-doc cleanall
150.PHONY: doc doc-html doc-man doc-pdf 153.PHONY: doc doc-html doc-man doc-pdf
151.PHONY: install install-doc install-html install-man install-pdf 154.PHONY: install install-doc install-html install-man install-pdf
diff --git a/tests/setup.sh b/tests/setup.sh
index e3c6c17..81e7220 100755
--- a/tests/setup.sh
+++ b/tests/setup.sh
@@ -15,46 +15,48 @@
15# run_test 'repo index' 'cgit_url "/" | tidy -e' 15# run_test 'repo index' 'cgit_url "/" | tidy -e'
16# run_test 'repo summary' 'cgit_url "/foo" | tidy -e' 16# run_test 'repo summary' 'cgit_url "/foo" | tidy -e'
17 17
18unset CDPATH 18: ${TEST_DIRECTORY=$(pwd)/../git/t}
19TEST_NO_CREATE_REPO=YesPlease
20. "$TEST_DIRECTORY"/test-lib.sh
21
22# Prepend the directory containing cgit to PATH.
23PATH="$(pwd)/../..:$PATH"
19 24
20mkrepo() { 25mkrepo() {
21 name=$1 26 name=$1
22 count=$2 27 count=$2
23 dir=$PWD 28 test_create_repo "$name"
24 test -d "$name" && return 29 (
25 printf "Creating testrepo %s\n" "$name" 30 cd "$name"
26 mkdir -p "$name" 31 n=1
27 cd "$name" 32 while test $n -le $count
28 git init 33 do
29 n=1 34 echo $n >file-$n
30 while test $n -le $count 35 git add file-$n
31 do 36 git commit -m "commit $n"
32 echo $n >file-$n 37 n=$(expr $n + 1)
33 git add file-$n 38 done
34 git commit -m "commit $n" 39 if test "$3" = "testplus"
35 n=$(expr $n + 1) 40 then
36 done 41 echo "hello" >a+b
37 if test "$3" = "testplus" 42 git add a+b
38 then 43 git commit -m "add a+b"
39 echo "hello" >a+b 44 git branch "1+2"
40 git add a+b 45 fi
41 git commit -m "add a+b" 46 )
42 git branch "1+2"
43 fi
44 cd "$dir"
45} 47}
46 48
47setup_repos() 49setup_repos()
48{ 50{
49 rm -rf trash/cache 51 rm -rf cache
50 mkdir -p trash/cache 52 mkdir -p cache
51 mkrepo trash/repos/foo 5 >/dev/null 53 mkrepo repos/foo 5 >/dev/null
52 mkrepo trash/repos/bar 50 >/dev/null 54 mkrepo repos/bar 50 >/dev/null
53 mkrepo trash/repos/foo+bar 10 testplus >/dev/null 55 mkrepo repos/foo+bar 10 testplus >/dev/null
54 mkrepo "trash/repos/with space" 2 >/dev/null 56 mkrepo "repos/with space" 2 >/dev/null
55 cat >trash/cgitrc <<EOF 57 cat >cgitrc <<EOF
56virtual-root=/ 58virtual-root=/
57cache-root=$PWD/trash/cache 59cache-root=$PWD/cache
58 60
59cache-size=1021 61cache-size=1021
60snapshots=tar.gz tar.bz zip 62snapshots=tar.gz tar.bz zip
@@ -66,83 +68,33 @@ summary-tags=5
66clone-url=git://example.org/\$CGIT_REPO_URL.git 68clone-url=git://example.org/\$CGIT_REPO_URL.git
67 69
68repo.url=foo 70repo.url=foo
69repo.path=$PWD/trash/repos/foo/.git 71repo.path=$PWD/repos/foo/.git
70# Do not specify a description for this repo, as it then will be assigned 72# Do not specify a description for this repo, as it then will be assigned
71# the constant value "[no description]" (which actually used to cause a 73# the constant value "[no description]" (which actually used to cause a
72# segfault). 74# segfault).
73 75
74repo.url=bar 76repo.url=bar
75repo.path=$PWD/trash/repos/bar/.git 77repo.path=$PWD/repos/bar/.git
76repo.desc=the bar repo 78repo.desc=the bar repo
77 79
78repo.url=foo+bar 80repo.url=foo+bar
79repo.path=$PWD/trash/repos/foo+bar/.git 81repo.path=$PWD/repos/foo+bar/.git
80repo.desc=the foo+bar repo 82repo.desc=the foo+bar repo
81 83
82repo.url=with space 84repo.url=with space
83repo.path=$PWD/trash/repos/with space/.git 85repo.path=$PWD/repos/with space/.git
84repo.desc=spaced repo 86repo.desc=spaced repo
85EOF 87EOF
86} 88}
87 89
88prepare_tests()
89{
90 setup_repos
91 rm -f test-output.log 2>/dev/null
92 test_count=0
93 test_failed=0
94 echo "[$0]" "$@" >test-output.log
95 echo "$@" "($0)"
96}
97
98tests_done()
99{
100 printf "\n"
101 if test $test_failed -gt 0
102 then
103 printf "test: *** %s failure(s), logfile=%s\n" \
104 $test_failed "$(pwd)/test-output.log"