Results for extglob-match.test.sh

statusbashmkshkshtoyshsushbrushosh
pass 2922261232825
ok 0100003
N-I 0200001
BUG 0400000
FAIL 00328610
total29292929292929
casebashmkshkshtoyshsushbrushoshdescription
0pass pass pass FAIL pass pass pass @ matches exactly one
details
1pass pass pass FAIL pass pass pass @() with variable arms
details
2pass N-I pass FAIL pass pass ok extglob in variable
detailsdetailsdetails
3pass pass pass FAIL FAIL pass pass Matching literal '@(cc)'
detailsdetails
4pass BUG pass FAIL pass pass pass nested @()
detailsdetails
5pass pass pass FAIL FAIL pass pass nested @() with quotes and vars
detailsdetails
6pass pass pass FAIL pass pass pass ? matches 0 or 1
details
7pass pass pass FAIL pass pass pass + matches 1 or more
details
8pass pass pass FAIL pass pass pass * matches 0 or more
details
9pass pass pass FAIL pass pass pass simple repetition with *(foo) and +(Foo)
details
10pass pass pass FAIL pass pass pass ! matches none
details
11pass pass pass FAIL pass pass pass match is anchored
details
12pass pass pass FAIL pass pass pass repeated match is anchored
details
13pass pass pass FAIL pass pass pass repetition with glob
details
14pass pass pass FAIL pass pass pass No brace expansion in ==
details
15pass pass pass FAIL pass pass pass adjacent extglob
details
16pass pass pass FAIL pass pass pass nested extglob
details
17pass pass pass FAIL pass pass pass extglob empty string
details
18pass pass pass FAIL pass pass pass extglob empty pattern
details
19pass pass pass FAIL FAIL pass pass case with extglob
detailsdetails
20pass pass pass FAIL FAIL pass pass [[ $x == !($str) ]]
detailsdetails
21pass ok FAIL FAIL FAIL FAIL ok Turning extglob on changes the meaning of [[ !(str) ]] in bash
detailsdetailsdetailsdetailsdetailsdetails
22pass pass pass FAIL FAIL pass pass With extglob on, !($str) on the left or right of == has different meanings
detailsdetails
23pass BUG FAIL FAIL pass pass ok extglob inside arg word
detailsdetailsdetailsdetails
24pass N-I FAIL pass pass pass pass extglob is not detected in regex!
detailsdetails
25pass BUG pass FAIL pass pass pass regular glob of single unicode char
detailsdetails
26pass BUG pass FAIL pass pass pass extended glob of single unicode char
detailsdetails
27pass pass pass FAIL pass pass N-I Extended glob in ${x//pat/replace}
detailsdetails
28pass pass pass FAIL pass pass pass Extended glob in ${x%PATTERN}
details
154 passed, 4 OK, 3 not implemented, 4 BUG, 38 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

toysh0 @ matches exactly one

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh1 @() with variable arms

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
mksh2 extglob in variable

stdout:
FALSE
FALSE
FALSE
stderr:
mksh: <stdin>[1]: shopt: not found
toysh2 extglob in variable

[toysh stdout] Expected 'TRUE\nTRUE\nFALSE\nFALSE\nFALSE\n', got 'FALSE\nFALSE\nFALSE\n'

stdout:
FALSE
FALSE
FALSE
stderr:
sh: shopt: No such file or directory
[[: too many arguments
[[: too many arguments
osh2 extglob in variable

stdout:
stderr: 
  g=--@(help|verbose)
    ^~
[ stdin ]:3: fatal: extended glob not allowed in this word
toysh3 Matching literal '@(cc)'

[toysh stdout] Expected 'status=0\nstatus=1\nstatus=0\nstatus=1\n', got 'status=1\nstatus=1\nstatus=1\nstatus=1\n'

stdout:
status=1
status=1
status=1
status=1
stderr:
sh: shopt: No such file or directory
sush3 Matching literal '@(cc)'

[sush stdout] Expected 'status=0\nstatus=1\nstatus=0\nstatus=1\n', got 'status=0\nstatus=0\nstatus=0\nstatus=0\n'

stdout:
status=0
status=0
status=0
status=0
stderr:
mksh4 nested @()

stdout:
FALSE
stderr:
mksh: <stdin>[1]: shopt: not found
toysh4 nested @()

[toysh stdout] Expected 'TRUE\nTRUE\nTRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh5 nested @() with quotes and vars

[toysh stdout] Expected 'TRUE\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
sh: shopt: No such file or directory
sush5 nested @() with quotes and vars

[sush stdout] Expected 'TRUE\n', got ''
[sush status] Expected 0, got 1

stdout:
stderr: 
toysh6 ? matches 0 or 1

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh7 + matches 1 or more

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh8 * matches 0 or more

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh9 simple repetition with *(foo) and +(Foo)

[toysh stdout] Expected 'TRUE\nTRUE\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
sh: shopt: No such file or directory
toysh10 ! matches none

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh11 match is anchored

[toysh stdout] Expected 'FALSE\nFALSE\nTRUE\n', got 'FALSE\nFALSE\n'
[toysh status] Expected 0, got 1

stdout:
FALSE
FALSE
stderr:
sh: shopt: No such file or directory
toysh12 repeated match is anchored

[toysh stdout] Expected 'FALSE\nFALSE\nTRUE\n', got 'FALSE\nFALSE\n'
[toysh status] Expected 0, got 1

stdout:
FALSE
FALSE
stderr:
sh: shopt: No such file or directory
toysh13 repetition with glob

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh14 No brace expansion in ==

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
[[: too many arguments
toysh15 adjacent extglob

[toysh stdout] Expected 'TRUE\nTRUE\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
sh: shopt: No such file or directory
toysh16 nested extglob

[toysh stdout] Expected 'TRUE\nTRUE\nTRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh17 extglob empty string

[toysh stdout] Expected 'FALSE\nTRUE\n', got 'FALSE\n'
[toysh status] Expected 0, got 1

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
toysh18 extglob empty pattern

[toysh stdout] Expected 'TRUE\nTRUE\nFALSE\nFALSE\n', got 'FALSE\nFALSE\n'

stdout:
FALSE
FALSE
stderr:
sh: shopt: No such file or directory
toysh19 case with extglob

[toysh stdout] Expected 'A\nA\nU\nB\nC\nD\n', got 'U\n'
[toysh status] Expected 0, got -6

stdout:
U
stderr:
sh: shopt: No such file or directory
free(): invalid pointer
sush19 case with extglob

[sush stdout] Expected 'A\nA\nU\nB\nC\nD\n', got 'A\nU\nC\n'

stdout:
A
U
C
stderr:
toysh20 [[ $x == !($str) ]]

[toysh stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
[[: too many arguments
sush20 [[ $x == !($str) ]]

[sush stdout] Expected 'TRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
mksh21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

stdout:
TRUE
TRUE
TRUE
stderr:
mksh: <stdin>[5]: shopt: not found
ksh21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

[ksh stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n'

stdout:
TRUE
TRUE
TRUE
stderr:
E: ksh: <stdin>[5]: shopt: inaccessible or not found
toysh21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

[toysh stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n'

stdout:
TRUE
TRUE
TRUE
stderr:
sh: shopt: No such file or directory
sush21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

[sush stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nFALSE\nTRUE\n'
[sush status] Expected 0, got 1

stdout:
TRUE
FALSE
TRUE
stderr:
brush21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

[brush stdout] Expected 'TRUE\nFALSE\nTRUE\nTRUE\n', got 'TRUE\nTRUE\nTRUE\n'

stdout:
TRUE
TRUE
TRUE
stderr:
osh21 Turning extglob on changes the meaning of [[ !(str) ]] in bash

stdout:
stderr: 
  [[ !($empty) ]]  && echo TRUE   # test if $empty is empty
     ^~
[ stdin ]:3: fatal: extended glob not allowed in this word
toysh22 With extglob on, !($str) on the left or right of == has different meanings

[toysh stdout] Expected 'TRUE\n', got ''
[toysh status] Expected 0, got 1

stdout:
stderr: 
sh: shopt: No such file or directory
sush22 With extglob on, !($str) on the left or right of == has different meanings

[sush stdout] Expected 'TRUE\n', got ''
[sush status] Expected 0, got 2

stdout:
stderr: 
mksh23 extglob inside arg word

stdout:
TRUE
FALSE
stderr:
mksh: <stdin>[1]: shopt: not found
ksh23 extglob inside arg word

[ksh stdout] Expected 'TRUE\nTRUE\nFALSE\n', got 'TRUE\nFALSE\n'

stdout:
TRUE
FALSE
stderr:
E: ksh: <stdin>[1]: shopt: inaccessible or not found
toysh23 extglob inside arg word

[toysh stdout] Expected 'TRUE\nTRUE\nFALSE\n', got 'FALSE\n'

stdout:
FALSE
stderr:
sh: shopt: No such file or directory
osh23 extglob inside arg word

stdout:
TRUE
stderr:
  [[ foo == ${unset:-@(foo|bar)} ]] && echo TRUE
                     ^~
[ stdin ]:3: fatal: Extended glob not allowed in this word
mksh24 extglob is not detected in regex!

stdout:
stderr: 
mksh: <stdin>[1]: shopt: not found
mksh: <stdin>[2]: syntax error: '=~' unexpected operator/operand
ksh24 extglob is not detected in regex!

[ksh stdout] Expected 'FALSE\n', got ''
[ksh status] Expected 0, got 1

stdout:
stderr: 
E: ksh: <stdin>[1]: shopt: inaccessible or not found
E: ksh: <stdin>[2]: syntax error: unexpected operator/operand '=~'
mksh25 regular glob of single unicode char

stdout:
0
1
stderr:
mksh: <stdin>[1]: shopt: not found
toysh25 regular glob of single unicode char

[toysh stdout] Expected '0\n0\n', got '1\n1\n'

stdout:
1
1
stderr:
sh: shopt: No such file or directory
mksh26 extended glob of single unicode char

stdout:
0
1
stderr:
mksh: <stdin>[1]: shopt: not found
toysh26 extended glob of single unicode char

[toysh stdout] Expected '0\n0\n', got '1\n1\n'

stdout:
1
1
stderr:
sh: shopt: No such file or directory
toysh27 Extended glob in ${x//pat/replace}

[toysh stdout] Expected 'foZ\n', got 'foo.py\n'

stdout:
foo.py
stderr:
sh: shopt: No such file or directory
osh27 Extended glob in ${x//pat/replace}

stdout:
stderr: 
  echo ${x//@(?.py)/Z}
            ^~
[ stdin ]:3: fatal: extended globs not supported in ${x//GLOB/}
toysh28 Extended glob in ${x%PATTERN}

[toysh stdout] Expected 'strip % foo\nstrip %% foo\nstrip # .py\nstrip ## .py\n' Got 'strip % foo.py\nstrip %% foo.py\nstrip # foo.py\nstrip ## foo.py\n'

stdout:
strip %  foo.py
strip %% foo.py
strip #  foo.py
strip ## foo.py
stderr:
sh: shopt: No such file or directory