run_coverage.sh - webdump_tests - Testfiles for webdump
HTML git clone git://git.codemadness.org/webdump_tests
DIR Log
DIR Files
DIR Refs
DIR README
---
run_coverage.sh (4735B)
---
1 #!/bin/sh
2 bin="$HOME/p/webdump/webdump"
3 expectstatus="0"
4
5 if ! test -x "$bin"; then
6 echo "$bin must exist and executable" >&2
7 exit 1
8 fi
9
10 test_usage_fail() {
11 cmd="$@"
12 echo | "$bin" "$@" #2>/dev/null
13 statuscode="$?"
14 if test "$statuscode" = "0"; then
15 echo "command should have failed but didn't: $bin $cmd" >&2
16 exit 1
17 fi
18 }
19
20 # must be an absolute URI
21 test_usage_fail -b invalid
22
23 # invalid option
24 test_usage_fail -X
25
26 # invalid selector (too deep, > 32 nodes).
27 test_usage_fail -s 'one,two,three,a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h'
28 test_usage_fail -u 'one,two,three,a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h'
29
30 # 256 byte limit per tag name, index, id and class.
31 test_usage_fail -s 'a012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
32 test_usage_fail -s 'a.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
33 test_usage_fail -s 'a#012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
34 test_usage_fail -s 'a@012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'
35
36 # invalid number for term width.
37 test_usage_fail -w plop
38
39 run() {
40 # # with crude timing information.
41 # starttime=$(echo | ts -m '%.s')
42 # echo -n "running $bin $@ < $f" >&2
43 # "$bin" "$@" >/dev/null 2>/dev/null
44 # endtime=$(echo | ts -m '%.s')
45 # duration=$(echo "$endtime - $starttime" | bc)
46 # echo ": $?, ($duration)" >&2
47
48 echo -n "running $bin $@ < $f" >&2
49 "$bin" "$@" >/dev/null 2>/dev/null
50 statuscode="$?"
51 echo ": ${statuscode}" >&2
52
53 if test "$statuscode" != "$expectstatus"; then
54 echo "FATAL"
55 exit 1
56 fi
57 }
58
59 runtests() {
60 baseurl="$1"
61 f="$2"
62
63 run -r < "$f"
64 run -l -i < "$f"
65 run -l -r < "$f"
66 run -l -i -r < "$f"
67 run -l -i -r -a < "$f"
68
69 run -b "$baseurl" -r < "$f"
70 run -l -i -b "$baseurl" -r < "$f"
71 run -a -l -i -b "$baseurl" -r < "$f"
72 run -a -l -i -b "$baseurl" < "$f"
73 run -a -I -l -i -b "$baseurl" < "$f"
74 run -8 -a -I -l -i -b "$baseurl" < "$f"
75 run -8 -d -a -I -l -i -b "$baseurl" < "$f"
76
77 # very short linewrap
78 run -w 10 -r < "$f"
79
80 # selectors
81 run -s 'main' -a -l -i -b "$baseurl" < "$f"
82 run -s 'main.class' -a -l -i -b "$baseurl" < "$f"
83 run -s 'main#id' -a -l -i -b "$baseurl" < "$f"
84 run -s 'main@1' -a -l -i -b "$baseurl" < "$f"
85 run -s 'a, td' -a -l -i -b "$baseurl" < "$f"
86 run -s 'a,td' -a -l -i -b "$baseurl" < "$f"
87
88 run -u 'main' -a -l -i -b "$baseurl" < "$f"
89 run -u 'main.class' -a -l -i -b "$baseurl" < "$f"
90 run -u 'main#id' -a -l -i -b "$baseurl" < "$f"
91 run -u 'main@1' -a -l -i -b "$baseurl" < "$f"
92 run -u 'a, td' -a -l -i -b "$baseurl" < "$f"
93 run -u 'a,td' -a -l -i -b "$baseurl" < "$f"
94
95 # -x
96 run -8 -d -a -I -l -i -x < "$f"
97 run -8 -d -a -I -l -i -x -b "$baseurl" < "$f"
98 run -x -s 'main' -a -l -i -b "$baseurl" < "$f"
99
100 # OSC8
101 run -o < "$f"
102 run -o -l < "$f"
103 run -o -i -l < "$f"
104 run -o -r -l < "$f"
105 run -o -r -i -l < "$f"
106 run -o -b "$baseurl" -r < "$f"
107 run -o -l -i -b "$baseurl" -r < "$f"
108 run -o -a -l -i -b "$baseurl" -r < "$f"
109 run -o -a -l -i -b "$baseurl" < "$f"
110 run -o -a -I -l -i -b "$baseurl" < "$f"
111 run -o -8 -a -I -l -i -b "$baseurl" < "$f"
112 run -o -8 -d -a -I -l -i -b "$baseurl" < "$f"
113 }
114
115 baseurl="http://codemadness.org/"
116 for f in realworld/* tests/*; do
117 runtests "$baseurl" "$f"
118 done
119
120 # test base URL combinations for specific tests.
121 while read -r baseurl; do
122 for f in tests/urls.html tests/base.html; do
123 runtests "$baseurl" "$f"
124 done
125 done <<!EOF
126 https://codemadness.org/
127 http://codemadness.org/
128 http://example.com
129 gopher://codemadness.org/1/git/sfeed
130 file://host/path
131 mysql://user@localhost:3306?get-server-public-key=true
132 ftp://user:password@[2001:db8::7]:2121/rfc/rfc1808.txt?q=bla#abc@def
133 !EOF
134
135 # these should fail:
136 expectstatus="1"
137 baseurl="http://codemadness.org/"
138 for f in tests/shouldfail/*; do
139 runtests "$baseurl" "$f"
140 done