| 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 | "$@"
|