Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
76
third-party/vendor/regex-automata-0.1.10/data/tests/fowler/fowler-to-toml
vendored
Executable file
76
third-party/vendor/regex-automata-0.1.10/data/tests/fowler/fowler-to-toml
vendored
Executable file
|
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
import argparse
|
||||
import os.path as path
|
||||
|
||||
|
||||
def read_tests(f):
|
||||
basename, _ = path.splitext(path.basename(f))
|
||||
tests = []
|
||||
prev_pattern = None
|
||||
|
||||
for lineno, line in enumerate(open(f), 1):
|
||||
fields = list(filter(None, map(str.strip, line.split('\t'))))
|
||||
if not (4 <= len(fields) <= 5) \
|
||||
or 'E' not in fields[0] or fields[0][0] == '#':
|
||||
continue
|
||||
|
||||
terse_opts, pat, text, sgroups = fields[0:4]
|
||||
groups = [] # groups as integer ranges
|
||||
if sgroups == 'NOMATCH':
|
||||
groups = []
|
||||
elif ',' in sgroups:
|
||||
noparen = map(lambda s: s.strip('()'), sgroups.split(')('))
|
||||
for g in noparen:
|
||||
s, e = map(str.strip, g.split(','))
|
||||
groups.append([int(s), int(e)])
|
||||
break
|
||||
else:
|
||||
# This skips tests that should result in an error.
|
||||
# There aren't many, so I think we can just capture those
|
||||
# manually. Possibly fix this in future.
|
||||
continue
|
||||
|
||||
opts = []
|
||||
if text == "NULL":
|
||||
text = ""
|
||||
if pat == 'SAME':
|
||||
pat = prev_pattern
|
||||
if '$' in terse_opts:
|
||||
pat = pat.encode('utf-8').decode('unicode_escape')
|
||||
text = text.encode('utf-8').decode('unicode_escape')
|
||||
text = text.encode('unicode_escape').decode('utf-8')
|
||||
opts.append('escaped')
|
||||
else:
|
||||
opts.append('escaped')
|
||||
text = text.encode('unicode_escape').decode('utf-8')
|
||||
if 'i' in terse_opts:
|
||||
opts.append('case-insensitive')
|
||||
|
||||
pat = pat.encode('unicode_escape').decode('utf-8')
|
||||
pat = pat.replace('\\\\', '\\')
|
||||
tests.append({
|
||||
'name': '"%s%d"' % (basename, lineno),
|
||||
'options': repr(opts),
|
||||
'pattern': "'''%s'''" % pat,
|
||||
'input': "'''%s'''" % text,
|
||||
'matches': str(groups),
|
||||
})
|
||||
prev_pattern = pat
|
||||
return tests
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Generate match tests from an AT&T POSIX test file.')
|
||||
aa = parser.add_argument
|
||||
aa('datfile', help='A dat AT&T POSIX test file.')
|
||||
args = parser.parse_args()
|
||||
|
||||
tests = read_tests(args.datfile)
|
||||
for t in tests:
|
||||
print('[[tests]]')
|
||||
for k, v in t.items():
|
||||
print('%s = %s' % (k, v))
|
||||
print('')
|
||||
Loading…
Add table
Add a link
Reference in a new issue