1 | #!/usr/bin/env bash
|
2 | #
|
3 | # Run ble.sh tests.
|
4 | #
|
5 | # Usage:
|
6 | # test/ble.sh <function name>
|
7 |
|
8 | set -o nounset
|
9 | set -o pipefail
|
10 | set -o errexit
|
11 |
|
12 | source test/common.sh
|
13 |
|
14 | readonly BASE_DIR=_clone/ble.sh
|
15 |
|
16 | clone() {
|
17 | local out=$BASE_DIR
|
18 | mkdir -p $out
|
19 | git clone --recursive --depth=50 --branch=osh \
|
20 | https://github.com/akinomyoga/ble.sh $out
|
21 | git clone --depth=50 \
|
22 | https://github.com/akinomyoga/contra.git $out/ext/contra.src
|
23 | }
|
24 |
|
25 | build() {
|
26 | # make ble.sh
|
27 | cd $BASE_DIR
|
28 | make
|
29 |
|
30 | # make contra for test
|
31 | cd ext/contra.src
|
32 | make
|
33 | cp src/contra ..
|
34 | }
|
35 |
|
36 | # https://superuser.com/questions/380772/removing-ansi-color-codes-from-text-stream
|
37 | filter-ansi() {
|
38 | sed 's/\x1b\[[0-9;]*m//g'
|
39 | }
|
40 |
|
41 | run-tests-osh-bash() {
|
42 | # Hm the tests detect ble.osh or ble.sh, this doesn't work
|
43 | run-tests-osh bash
|
44 | }
|
45 |
|
46 | run-tests-osh-py() {
|
47 | run-tests-osh ../../bin/osh
|
48 | }
|
49 |
|
50 | run-tests-osh-cpp() {
|
51 | # Find osh binary created by devtools/release-native.sh test-tar
|
52 | # test/wild-runner.sh uses it. We can't extract it over the repo.
|
53 | export-osh-cpp _tmp/native-tar-test opt
|
54 |
|
55 | run-tests-osh $OSH
|
56 | }
|
57 |
|
58 | run-tests-osh() {
|
59 | ### Source the 35K line file, but only run selected tests
|
60 |
|
61 | local osh=$1
|
62 |
|
63 | pushd $BASE_DIR
|
64 |
|
65 | # Fork of oshrc.test-util, to make it take less time
|
66 | local myscript=myscript
|
67 |
|
68 | cat >$myscript <<'EOF'
|
69 | #shopt -s eval_unsafe_arith
|
70 | HISTFILE=$HOME/.osh_history
|
71 |
|
72 | # Disabled for now, takes quite awhile
|
73 | # lib/test-canvas.sh \
|
74 |
|
75 | for script in \
|
76 | out/ble.osh \
|
77 | lib/test-main.sh \
|
78 | lib/test-util.sh \
|
79 | lib/test-decode.sh
|
80 | do
|
81 | echo
|
82 | echo "Running $script"
|
83 | echo
|
84 |
|
85 | time . $script
|
86 |
|
87 | echo
|
88 | echo "DONE Running $script"
|
89 | echo
|
90 | done
|
91 |
|
92 | exit
|
93 | EOF
|
94 |
|
95 | #wc -l oshrc.test-util
|
96 | #wc -l out/ble.osh
|
97 | #wc -l lib/test-util.sh
|
98 |
|
99 | # Shorter tests
|
100 | $osh --rcfile $myscript -i | filter-ansi
|
101 |
|
102 | #../../bin/osh -i --rcfile oshrc.test-util | filter-ansi
|
103 |
|
104 | # Longer tests
|
105 | # TODO: Run these with osh-cpp
|
106 | # ../../bin/osh out/ble.osh --test | filter-ansi
|
107 |
|
108 | popd
|
109 |
|
110 | echo DONE
|
111 | }
|
112 |
|
113 | # Seems to take about 12 seconds
|
114 | bash-suite() {
|
115 | ### Run the 35K line file with --test
|
116 |
|
117 | cd $BASE_DIR
|
118 |
|
119 | set +o errexit
|
120 | bash out/ble.sh --test | filter-ansi
|
121 | echo 'Failure suppressed'
|
122 |
|
123 | # Some failures, possibly due to old version of bash
|
124 |
|
125 | # 98.1% [section] ble/util: 1205/1228 (23 fail, 0 crash, 6 skip)
|
126 | # 100.0% [section] ble/canvas/trace (relative:confine:measure-bbox): 17/17 (0 fail, 0 crash, 0 skip)
|
127 | # 100.0% [section] ble/canvas/trace (cfuncs): 18/18 (0 fail, 0 crash, 0 skip)
|
128 | # 100.0% [section] ble/canvas/trace (justify): 30/30 (0 fail, 0 crash, 0 skip)
|
129 | # 100.0% [section] ble/canvas/trace-text: 11/11 (0 fail, 0 crash, 0 skip)
|
130 | # 100.0% [section] ble/textmap#update: 5/5 (0 fail, 0 crash, 0 skip)
|
131 | # 100.0% [section] ble/unicode/GraphemeCluster/c2break: 77/77 (0 fail, 0 crash, 0 skip)
|
132 | # 100.0% [section] ble/unicode/GraphemeCluster/c2break (GraphemeBreakTest.txt): 3251/3251 (0 fail, 0 crash, 0 skip)
|
133 | # 100.0% [section] ble/decode: 33/33 (0 fail, 0 crash, 0 skip)
|
134 | # 100.0% [section] ble/edit: 2/2 (0 fail, 0 crash, 0 skip)
|
135 | # 100.0% [section] ble/syntax: 22/22 (0 fail, 0 crash, 0 skip)
|
136 | # 100.0% [section] ble/complete: 7/7 (0 fail, 0 crash, 0 skip)
|
137 | }
|
138 |
|
139 | "$@"
|