summaryrefslogtreecommitdiffstatshomepage
path: root/tests/setup.sh
blob: 1457dd51ec948595ff9f73a758c01f04501347b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# This file should be sourced by all test-scripts
#
# Main functions:
#   prepare_tests(description) - setup for testing, i.e. create repos+config
#   run_test(description, script) - run one test, i.e. eval script
#
# Helper functions
#   cgit_query(querystring) - call cgit with the specified querystring
#   cgit_url(url) - call cgit with the specified virtual url
#
# Example script:
#
# . setup.sh
# prepare_tests "html validation"
# run_test 'repo index' 'cgit_url "/" | tidy -e'
# run_test 'repo summary' 'cgit_url "/foo" | tidy -e'


mkrepo() {
	name=$1
	count=$2
	dir=$PWD
	test -d $name && return
	printf "Creating testrepo %s\n" $name
	mkdir -p $name
	cd $name
	git init
	for ((n=1; n<=count; n++))
	do
		echo $n >file-$n
		git add file-$n
		git commit -m "commit $n"
	done
	if test "$3" = "testplus"
	then
		echo "hello" >a+b
		git add a+b
		git commit -m "add a+b"
		git branch "1+2"
	fi
	cd $dir
}

setup_repos()
{
	rm -rf trash/cache
	mkdir -p trash/cache
	mkrepo trash/repos/foo 5 >/dev/null
	mkrepo trash/repos/bar 50 >/dev/null
	mkrepo trash/repos/foo+bar 10 testplus >/dev/null
	cat >trash/cgitrc <<EOF
virtual-root=/
cache-root=$PWD/trash/cache

cache-size=1021
snapshots=tar.gz tar.bz zip
enable-log-filecount=1
enable-log-linecount=1
summary-log=5
summary-branches=5
summary-tags=5

repo.url=foo
repo.path=$PWD/trash/repos/foo/.git
# Do not specify a description for this repo, as it then will be assigned
# the constant value "[no description]" (which actually used to cause a
# segfault).

repo.url=bar
repo.path=$PWD/trash/repos/bar/.git
repo.desc=the bar repo

repo.url=foo+bar
repo.path=$PWD/trash/repos/foo+bar/.git
repo.desc=the foo+bar repo
EOF
}

prepare_tests()
{
	setup_repos
	rm -f test-output.log 2>/dev/null
	test_count=0
	test_failed=0
	echo "[$0]" "$@" >test-output.log
	echo "$@" "($0)"
}

tests_done()
{
	printf "\n"
	if test $test_failed -gt 0
	then
		printf "test: *** %s failure(s), logfile=%s\n" \
			$test_failed "$(pwd)/test-output.log"
		false
	fi
}

run_test()
{
	desc=$1
	script=$2
	((test_count++))
	printf "\ntest %d: name='%s'\n" $test_count "$desc" >>test-output.log
	printf "test %d: eval='%s'\n" $test_count "$2" >>test-output.log
	eval "$2" >>test-output.log 2>>test-output.log
	res=$?
	printf "test %d: exitcode=%d\n" $test_count $res >>test-output.log
	if test $res = 0
	then
		printf " %2d) %-60s [ok]\n" $test_count "$desc"
	else
		((test_failed++))
		printf " %2d) %-60s [failed]\n" $test_count "$desc"
	fi
}

cgit_query()
{
	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="$1" "$PWD/../cgit"
}

cgit_url()
{
	CGIT_CONFIG="$PWD/trash/cgitrc" QUERY_STRING="url=$1" "$PWD/../cgit"
}
656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707
body, table, form {
	padding: 0em;
	margin: 0em;
}

body {
	font-family: sans-serif;
	font-size: 10pt;
	color: #333;
	background: white;
	padding: 4px;
}

a {
	color: blue;
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

table {
      border-collapse: collapse;
}

table#header {
	width: 100%;
	margin-bottom: 1em;
}

table#header td.logo {
	width: 96px;
}

table#header td.main {
	font-size: 250%;
	padding-left: 10px;
	white-space: nowrap;
}

table#header td.main a {
	color: #000;
}

table#header td.form {
	text-align: right;
	vertical-align: bottom;
	padding-right: 1em;
	padding-bottom: 2px;
	white-space: nowrap;
}

table#header td.form form,
table#header td.form input,
table#header td.form select {
	font-size: 90%;
}

table#header td.sub {
	color: #777;
	border-top: solid 1px #ccc;
	padding-left: 10px;
}

table.tabs {
	/* border-bottom: solid 2px #ccc; */
	border-collapse: collapse;
	margin-top: 2em;
	margin-bottom: 0px;
	width: 100%;
}

table.tabs td {
	padding: 0px 1em;
	vertical-align: bottom;
}

table.tabs td a {
	padding: 2px 0.75em;
	color: #777;
	font-size: 110%;
}

table.tabs td a.active {
	color: #000;
	background-color: #ccc;
}

table.tabs td.form {
	text-align: right;
}

table.tabs td.form form {
	padding-bottom: 2px;
	font-size: 90%;
	white-space: nowrap;
}

table.tabs td.form input,
table.tabs td.form select {
	font-size: 90%;
}

div.content {
	margin: 0px;
	padding: 2em;
	border-top: solid 3px #ccc;
	border-bottom: solid 3px #ccc;
}


table.list {
	width: 100%;
	border: none;
	border-collapse: collapse;
}

table.list tr {
	background: white;
}

table.list tr.logheader {
	background: #eee;
}

table.list tr:hover {
	background: #eee;
}

table.list tr.nohover:hover {
	background: white;
}

table.list th {
	font-weight: bold;
	/* color: #888;
	border-top: dashed 1px #888;
	border-bottom: dashed 1px #888;
	*/
	padding: 0.1em 0.5em 0.05em 0.5em;
	vertical-align: baseline;
}

table.list td {
	border: none;
	padding: 0.1em 0.5em 0.1em 0.5em;
}

table.list td.logsubject {
	font-family: monospace;
	font-weight: bold;
}

table.list td.logmsg {
	font-family: monospace;
	white-space: pre;
	padding: 1em 0.5em 2em 0.5em;
}

table.list td a {
	color: black;
}

table.list td a.ls-dir {
	font-weight: bold;
	color: #00f;
}

table.list td a:hover {
	color: #00f;
}

img {
	border: none;
}

input#switch-btn {
	margin: 2px 0px 0px 0px;
}

td#sidebar input.txt {
	width: 100%;
	margin: 2px 0px 0px 0px;
}

table#grid {
	margin: 0px;
}

td#content {
	vertical-align: top;
	padding: 1em 2em 1em 1em;
	border: none;
}

div#summary {
	vertical-align: top;
	margin-bottom: 1em;
}

table#downloads {
	float: right;
	border-collapse: collapse;
	border: solid 1px #777;
	margin-left: 0.5em;
	margin-bottom: 0.5em;
}

table#downloads th {
	background-color: #ccc;
}

div#blob {
	border: solid 1px black;
}

div.error {
	color: red;
	font-weight: bold;
	margin: 1em 2em;
}

a.ls-blob, a.ls-dir, a.ls-mod {
	font-family: monospace;
}

td.ls-size {
	text-align: right;
	font-family: monospace;
	width: 10em;
}

td.ls-mode {
	font-family: monospace;
	width: 10em;
}

table.blob {
	margin-top: 0.5em;
	border-top: solid 1px black;
}

table.blob td.lines {
	margin: 0; padding: 0 0 0 0.5em;
	vertical-align: top;
	color: black;
}

table.blob td.linenumbers {
	margin: 0; padding: 0 0.5em 0 0.5em;
	vertical-align: top;
	text-align: right;
	border-right: 1px solid gray;
}

table.blob pre {
	padding: 0; margin: 0;
}

table.blob a.no {
	color: gray;
	text-align: right;
	text-decoration: none;
}

table.blob a.no a:hover {
	color: black;
}

table.bin-blob {
	margin-top: 0.5em;
	border: solid 1px black;
}

table.bin-blob th {
	font-family: monospace;
	white-space: pre;
	border: solid 1px #777;
	padding: 0.5em 1em;
}

table.bin-blob td {
	font-family: monospace;
	white-space: pre;
	border-left: solid 1px #777;
	padding: 0em 1em;
}

table.nowrap td {
	white-space: nowrap;
}

table.commit-info {
	border-collapse: collapse;
	margin-top: 1.5em;
}

table.commit-info th {
	text-align: left;
	font-weight: normal;
	padding: 0.1em 1em 0.1em 0.1em;
	vertical-align: top;
}

table.commit-info td {
	font-weight: normal;
	padding: 0.1em 1em 0.1em 0.1em;
}

div.commit-subject {
	font-weight: bold;
	font-size: 125%;
	margin: 1.5em 0em 0.5em 0em;
	padding: 0em;
}

div.commit-msg {
	white-space: pre;
	font-family: monospace;
}

div.diffstat-header {
	font-weight: bold;
	padding-top: 1.5em;
}

table.diffstat {
	border-collapse: collapse;
	border: solid 1px #aaa;
	background-color: #eee;
}

table.diffstat th {
	font-weight: normal;
	text-align: left;
	text-decoration: underline;
	padding: 0.1em 1em 0.1em 0.1em;
	font-size: 100%;
}

table.diffstat td {
	padding: 0.2em 0.2em 0.1em 0.1em;
	font-size: 100%;
	border: none;
}

table.diffstat td.mode {
	white-space: nowrap;
}

table.diffstat td span.modechange {
	padding-left: 1em;
	color: red;
}

table.diffstat td.add a {
	color: green;
}

table.diffstat td.del a {
	color: red;
}

table.diffstat td.upd a {
	color: blue;
}

table.diffstat td.graph {
	width: 500px;
	vertical-align: middle;
}

table.diffstat td.graph table {
	border: none;
}

table.diffstat td.graph td {
	padding: 0px;
	border: 0px;
	height: 7pt;
}

table.diffstat td.graph td.add {
	background-color: #5c5;
}

table.diffstat td.graph td.rem {
	background-color: #c55;
}

div.diffstat-summary {
	color: #888;
	padding-top: 0.5em;
}

table.diff {
	width: 100%;
}

table.diff td {
	font-family: monospace;
	white-space: pre;
}

table.diff td div.head {
	font-weight: bold;
	margin-top: 1em;
	color: black;
}

table.diff td div.hunk {
	color: #009;
}

table.diff td div.add {
	color: green;
}

table.diff td div.del {
	color: red;
}

.sha1 {
	font-family: monospace;
	font-size: 90%;
}

.left {
	text-align: left;
}

.right {
	text-align: right;
}

table.list td.reposection {
	font-style: italic;
	color: #888;
}

a.button {
	font-size: 80%;
	padding: 0em 0.5em;
}

a.primary {
	font-size: 100%;
}

a.secondary {
	font-size: 90%;
}

td.toplevel-repo {

}

table.list td.sublevel-repo {
	padding-left: 1.5em;
}

div.pager {
	text-align: center;
	margin: 1em 0em 0em 0em;
}

div.pager a {
	color: #777;
	margin: 0em 0.5em;
}

span.age-mins {
	font-weight: bold;
	color: #080;
}

span.age-hours {
	color: #080;
}

span.age-days {
	color: #040;
}

span.age-weeks {
	color: #444;
}

span.age-months {
	color: #888;
}

span.age-years {
	color: #bbb;
}
div.footer {
	margin-top: 0.5em;
	text-align: center;
	font-size: 80%;
	color: #ccc;
}
a.branch-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #88ff88;
	border: solid 1px #007700;
}
a.tag-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ffff88;
	border: solid 1px #777700;
}
a.remote-deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ccccff;
	border: solid 1px #000077;
}
a.deco {
	margin: 0px 0.5em;
	padding: 0px 0.25em;
	background-color: #ff8888;
	border: solid 1px #770000;
}

div.commit-subject a {
	margin-left: 1em;
	font-size: 75%;
}

table.stats {
	border: solid 1px black;
	border-collapse: collapse;
}

table.stats th {
	text-align: left;
	padding: 1px 0.5em;
	background-color: #eee;
	border: solid 1px black;
}

table.stats td {
	text-align: right;
	padding: 1px 0.5em;
	border: solid 1px black;
}

table.stats td.total {
	font-weight: bold;
	text-align: left;
}

table.stats td.sum {
	color: #c00;
	font-weight: bold;
/*	background-color: #eee; */
}

table.stats td.left {
	text-align: left;
}

table.vgraph {
	border-collapse: separate;
	border: solid 1px black;
	height: 200px;
}

table.vgraph th {
	background-color: #eee;
	font-weight: bold;
	border: solid 1px white;
	padding: 1px 0.5em;
}

table.vgraph td {
	vertical-align: bottom;
	padding: 0px 10px;
}

table.vgraph div.bar {
	background-color: #eee;
}

table.hgraph {
	border: solid 1px black;
	width: 800px;
}

table.hgraph th {
	background-color: #eee;
	font-weight: bold;
	border: solid 1px black;
	padding: 1px 0.5em;
}

table.hgraph td {
	vertical-align: center;
	padding: 2px 2px;
}

table.hgraph div.bar {
	background-color: #eee;
	height: 1em;
}

table.ssdiff {
	width: 100%;
}

table.ssdiff td {
	font-size: 75%;
	font-family: monospace;
	white-space: pre;
	padding: 1px 4px 1px 4px;
	border-left: solid 1px #aaa;
	border-right: solid 1px #aaa;
}

table.ssdiff td.add {
	color: black;
	background: #cfc;
	min-width: 50%;
}

table.ssdiff td.add_dark {
	color: black;
	background: #aca;
	min-width: 50%;
}

table.ssdiff span.add {
	background: #cfc;
	font-weight: bold;
}

table.ssdiff td.del {
	color: black;
	background: #fcc;
	min-width: 50%;
}

table.ssdiff td.del_dark {
	color: black;
	background: #caa;
	min-width: 50%;
}

table.ssdiff span.del {
	background: #fcc;
	font-weight: bold;
}

table.ssdiff td.changed {
	color: black;
	background: #ffc;
	min-width: 50%;
}

table.ssdiff td.changed_dark {
	color: black;
	background: #cca;
	min-width: 50%;
}

table.ssdiff td.lineno {
	color: black;
	background: #eee;
	text-align: right;
	width: 3em;
	min-width: 3em;
}

table.ssdiff td.hunk {
	color: #black;
	background: #ccf;
	border-top: solid 1px #aaa;
	border-bottom: solid 1px #aaa;
}

table.ssdiff td.head {
	border-top: solid 1px #aaa;
	border-bottom: solid 1px #aaa;
}

table.ssdiff td.head div.head {
	font-weight: bold;
	color: black;
}

table.ssdiff td.foot {
	border-top: solid 1px #aaa;
        border-left: none;
        border-right: none;
        border-bottom: none;
}

table.ssdiff td.space {
	border: none;
}

table.ssdiff td.space div {
	min-height: 3em;
}