spec test index / oilshell.org
31 passed, 3 OK, 1 not implemented, 1 BUG, 15 failed, 0 timeouts, 0 cases skipped 15 failed under osh
| osh | 0 @() matches exactly one of the patterns [osh stdout] Expected 'bar.cc bar.h baz.h foo.cc foo.h\n', got '@(*.cc|*.h)\n' stdout: @(*.cc|*.h)stderr: |
| osh | 1 ?() matches 0 or 1 [osh stdout] Expected 'foo. foo.cc foo.h\n', got 'foo.?(cc|h)\n' stdout: foo.?(cc|h)stderr: |
| osh | 2 *() matches 0 or more [osh stdout] Expected 'eg1/_ eg1/_One eg1/_OneOne eg1/_OneTwo eg1/_TwoTwo\n', got 'eg1/_*(One|Two)\n' stdout: eg1/_*(One|Two)stderr: |
| osh | 3 +() matches 1 or more [osh stdout] Expected 'eg2/_One eg2/_OneOne eg2/_OneTwo eg2/_TwoTwo\n', got 'eg2/_+(One|Two)\n' stdout: eg2/_+(One|Two)stderr: |
| osh | 4 !(*.h|*.cc) to match everything except C++ [osh stdout] Expected 'extglob2/bar.py extglob2/baz.py extglob2/foo.py\n', got 'extglob2/!(*.h|*.cc)\n' stdout: extglob2/!(*.h|*.cc)stderr: |
| osh | 5 Two adjacent alternations [osh stdout] Expected '2/ab 2/ac 2/cb 2/cc\n2/ab 2/ac 2/bb 2/bc 2/cb 2/cc\n2/ab 2/ac\n', got '2/!(b)@(b|c)\n2/!(b)?@(b|c)\n2/!(b)a@(b|c)\n' stdout: 2/!(b)@(b|c) 2/!(b)?@(b|c) 2/!(b)a@(b|c)stderr: |
| osh | 6 Nested extended glob pattern [osh stdout] Expected 'eg6/ab eg6/az\neg6/ac eg6/ad eg6/az\n', got 'eg6/a@(!(c|d))\neg6/a!(@(ab|b*))\n' stdout: eg6/a@(!(c|d)) eg6/a!(@(ab|b*))stderr: |
| osh | 7 Extended glob patterns with spaces [osh stdout] Expected "['eg4/a b', 'eg4/foo']\n", got "['eg4/@(a b|foo)']\n" stdout: ['eg4/@(a b|foo)']stderr: |
| osh | 8 Filenames with spaces [osh stdout] Expected "['eg5/a bcd', 'eg5/a bde']\n", got "['eg5/a @(bcd|bde|zzz)']\n" stdout: ['eg5/a @(bcd|bde|zzz)']stderr: |
| mksh | 9 nullglob with extended glob stdout: ['eg6/@(no|matches)']stderr: mksh: <stdin>[1]: shopt: not found mksh: <stdin>[2]: shopt: not found mkdir: cannot create directory ‘eg6’: File exists |
| osh | 9 nullglob with extended glob [osh stdout] Expected '[]\n', got "['eg6/@(no|matches)']\n" stdout: ['eg6/@(no|matches)']stderr: mkdir: cannot create directory ‘eg6’: File exists |
| mksh | 10 glob other punctuation chars (lexer mode) stdout: ['__#', '__&&', '__<>', '__{}', '__|']
stderr: mksh: <stdin>[1]: shopt: not found |
| osh | 10 glob other punctuation chars (lexer mode) [osh stdout] Expected "['__<>', '__|', '__{}', '__&&', '__#']\n", got "['@(__<>|__{}|__||__#|__&&)']\n" stdout: ['@(__<>|__{}|__||__#|__&&)']
stderr: |
| mksh | 11 dynamic extglob from variable stdout: eg3/@(foo|bar) eg3/@(foo|bar)stderr: mksh: <stdin>[1]: shopt: not found |
| osh | 11 dynamic extglob from variable [osh stdout] Expected 'eg3/bar eg3/foo eg3/@(foo|bar)\n', got 'eg3/@(foo|bar) eg3/@(foo|bar)\n' stdout: eg3/@(foo|bar) eg3/@(foo|bar)stderr: |
| mksh | 13 Extended glob as argument to ${undef:-} (dynamic globbing) stdout: bar.py foo.py spam.py @(foo|bar).pystderr: mksh: <stdin>[1]: shopt: not found |
| osh | 13 Extended glob as argument to ${undef:-} (dynamic globbing) [osh stdout] Expected 'bar.py foo.py spam.py\nbar.py foo.py\n', got 'bar.py foo.py spam.py\n@(foo|bar).py\n' stdout: bar.py foo.py spam.py @(foo|bar).pystderr: |
| mksh | 14 Extended glob in assignment builtin stdout: status=1stderr: mksh: <stdin>[1]: shopt: not found mksh: <stdin>[5]: typeset: -@: unknown option |
| osh | 15 Extended glob in same word as array [osh stdout] Expected "['a b', 'c']\n['star', 'glob', 'a b c.py']\n['star', 'extglob', 'a b c.cc', 'a b c.py']\n['at', 'extglob', 'a b', 'cee.cc', 'cee.py']\n", got "['a b', 'c']\n['star', 'glob', 'a b c.py']\n['star', 'extglob', 'a b c*@(.py|cc)']\n['at', 'extglob', 'a b', 'c*@(.py|cc)']\n" stdout: ['a b', 'c'] ['star', 'glob', 'a b c.py'] ['star', 'extglob', 'a b c*@(.py|cc)'] ['at', 'extglob', 'a b', 'c*@(.py|cc)']stderr: |
| osh | 16 In Array Literal and for loop [osh stdout] Expected 'bar.py\nfoo.py\n---\nzzz bar.py foo.py\n', got '@(fo*|bar).py\n---\nzzz @(fo*|bar).py\n' stdout: @(fo*|bar).py --- zzz @(fo*|bar).pystderr: |