diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7948d584a..10564a075 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,30 +30,3 @@ jobs: bin/package make && : default regression tests with SHOPTs disabled && bin/shtests - - MacOS: - name: macOS - runs-on: macos-latest - steps: - - name: Checkout sources - uses: actions/checkout@v2 - - name: Build - run: bin/package make - - name: Regression tests - run: | - PS4="$PS4[ci.yml] " - set -o xtrace - export TZ=UTC - ulimit -n 1024 - : default regression tests && - bin/shtests && - : regression tests with OS-provided UTF-8 locales && - LANG=nl_NL.UTF-8 bin/shtests --locale --nocompile && - LANG=ja_JP.UTF-8 bin/shtests --locale --nocompile && - : disable most SHOPTs, rebuild ksh && - sed -E -i.orig \ - '/^SHOPT (2DMATCH|AUDIT|BGX|BRACEPAT|DYNAMIC|EDPREDICT|ESH|FIXEDARRAY|HISTEXPAND|MULTIBYTE|NAMESPACE|OPTIMIZE|SUID_EXEC|STATS|VSH)=/ s/=1/=0/' \ - src/cmd/ksh93/SHOPT.sh && - bin/package make && - : default regression tests with SHOPTs disabled && - bin/shtests diff --git a/src/cmd/ksh93/tests/bracket.sh b/src/cmd/ksh93/tests/bracket.sh index 52b598a79..7365e570f 100755 --- a/src/cmd/ksh93/tests/bracket.sh +++ b/src/cmd/ksh93/tests/bracket.sh @@ -265,11 +265,9 @@ test '(' = ')' && err_exit '"test ( = )" should not be true' [[ $($SHELL -c "case Q in ~(Fi)q | \$'\E') print ok;;esac" 2> /dev/null) == ok ]] || err_exit '~(Fi)q | \E not working in case command' locales=$'\n'$(command -p locale -a 2>/dev/null)$'\n' -for l in C en_US.ISO8859-1 en_US.ISO8859-15 en_US.UTF-8 -do if [[ ! $locales == *$'\n'"${l}"$'\n'* ]] || - [[ $("$SHELL" -c "LC_COLLATE=${l}" 2>&1) ]] - then print -u2 "\t${Command}[$LINENO]: warning: cannot test unavailable locale: ${l}" - continue +for l in C C.UTF-8 en_US.ISO8859-1 en_US.ISO8859-15 en_US.UTF-8 +do if [[ $l != C* && ( $locales != *$'\n'"${l}"$'\n'* || -n $("$SHELL" -c "LC_COLLATE=${l}" 2>&1) ) ]] + then continue fi export LC_COLLATE=$l set -- \ diff --git a/src/cmd/ksh93/tests/pty.sh b/src/cmd/ksh93/tests/pty.sh index 02e406802..bcd7ab49b 100755 --- a/src/cmd/ksh93/tests/pty.sh +++ b/src/cmd/ksh93/tests/pty.sh @@ -46,11 +46,14 @@ integer Errors=0 lineno=1 [[ -d $tmp && -w $tmp && $tmp == "$PWD" ]] || { err\_exit "$LINENO" '$tmp not set; run this from shtests. Aborting.'; exit 1; } whence -q pty || { err\_exit "$LINENO" "pty command not found -- tests skipped"; exit 0; } -# On FreeBSD, the stty command does not appear to work correctly on a pty pseudoterminal. +# On FreeBSD, the OS-provided stty command does not appear to work correctly on a pty pseudoterminal. # To avoid a couple of false regressions, we have to set 'erase' and 'kill' on the real terminal. -stty_restore=$(stty -g) || { err\_exit "$LINENO" "could not save terminal state -- tests skipped"; exit 0; } -trap 'stty "$stty_restore"' EXIT # note: on ksh, the EXIT trap is also triggered for termination due to a signal -stty erase ^H kill ^X +if builtin stty 2>/dev/null +then PATH=/opt/ast/bin:$PATH +elif test -t 1 2>/dev/null 1>/dev/tty && stty_restore=$(stty -g) +then trap 'stty "$stty_restore"' EXIT # note: on ksh, the EXIT trap is also triggered for termination due to a signal + stty erase ^H kill ^X +fi bintrue=$(whence -p true)