run-file () { local spec_name=$1; shift; local spec_file=spec/$spec_name.test.sh; local suite; suite=$(test/sh_spec.py --print-spec-suite $spec_file); local spec_subdir; case $suite in osh) spec_subdir='osh-cpp' ;; ysh) spec_subdir='ysh-cpp' ;; *) die "Invalid suite $suite" ;; esac; local base_dir=_tmp/spec/$spec_subdir; mkdir -v -p $base_dir; sh-spec $spec_file --timeout 10 --oils-bin-dir $PWD/bin --oils-cpp-bin-dir $REPO_ROOT/_bin/cxx-asan --tsv-output $base_dir/${spec_name}.tsv "$@" } ysh-regex: spec test case results

Results for ysh-regex.test.sh

statusoshosh-cpp
pass 3333
FAIL 11
total3434
caseoshosh-cppdescription
0pass pass /^.$/
1pass pass /.+/
2pass pass Repeat {1,3} etc.
3pass pass d+ digit+ !d+ !digit+
4pass pass Alternation and sequence
5pass pass Char Class Ranges
6pass pass Char Class Set
7pass pass Range with escaped characters
8pass pass Group ()
9pass pass Capture is acceptable as a group
10pass pass literal ''
11pass pass Single quotes and splicing (do what "foo $x ${x}" used to)
12pass pass @splice
13pass pass splice with capital letters
14pass pass Matching escaped tab character
15pass pass Match unicode char
16FAIL FAIL Match non-ASCII byte denoted using $'\xff' (TODO: LANG=C)
detailsdetails
17pass pass Match non-ASCII byte denoted using \xff
18pass pass ERE can express Unicode escapes that are in the ASCII range
19pass pass ERE can't express higher Unicode escapes
20pass pass non-ASCII bytes must be singleton terms, e.g. '\x7f\xff' is disallowed
21pass pass Matching escaped tab character
22pass pass Repeated String Literal With Single Char
23pass pass Error when unparenthesized string of more than one character is repeated
24pass pass Instead of $'foo\\bar' use 'foo' \\ 'bar'
25pass pass Negation of Character Class ![a-z]
26pass pass Posix and Perl class in class literals
27pass pass [!d] can't be negated because it's a literal character
28pass pass [!digit] can't be negated in POSIX ERE (but yes in Perl)
29pass pass Operator chars in char classes (bash-like)
30pass pass Operator chars in char classes (eggex)
31pass pass Matching ] and \ and ' and " in character classes
32pass pass Matching literal hyphen in character classes
33pass pass Char class special: ^ - ] \
66 passed, 0 OK, 0 not implemented, 0 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

osh16 Match non-ASCII byte denoted using $'\xff' (TODO: LANG=C)

[osh stdout] Expected ' 5b ff 5d 0a\nyes\nno\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
  var pat = /[ $'\xff' ]/;
               ^~
[ stdin ]:2: fatal: Use unquoted char literal for byte 255, which is >= 128 (avoid confusing a set of bytes with a sequence)
osh-cpp16 Match non-ASCII byte denoted using $'\xff' (TODO: LANG=C)

[osh-cpp stdout] Expected ' 5b ff 5d 0a\nyes\nno\n', got ''
[osh-cpp status] Expected 0, got 1

stdout:
stderr: 
  var pat = /[ $'\xff' ]/;
               ^~
[ stdin ]:2: fatal: Use unquoted char literal for byte 255, which is >= 128 (avoid confusing a set of bytes with a sequence)