Backed out 7 changesets (bug 1231764) for apparently causing linux debug wpt bustage

Backed out changeset 4b71272c92cf (bug 1231764)
Backed out changeset 234d8a930afa (bug 1231764)
Backed out changeset f9b204c2f5a7 (bug 1231764)
Backed out changeset f933119e57e4 (bug 1231764)
Backed out changeset e3af0b1d3473 (bug 1231764)
Backed out changeset 643b03aae1dd (bug 1231764)
Backed out changeset a945dbf63410 (bug 1231764)
This commit is contained in:
Wes Kocher
2016-08-03 16:27:06 -07:00
parent d83e7d2185
commit a6051cc658
76 changed files with 113 additions and 1759 deletions

View File

@@ -1,100 +0,0 @@
import os, json, sys, io, traceback, argparse
import pytoml as toml
# Formula from:
# https://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
# Once support for py26 is dropped, this can be replaced by td.total_seconds()
def _total_seconds(td):
return ((td.microseconds
+ (td.seconds + td.days * 24 * 3600) * 10**6) / 10.0**6)
def _testbench_literal(type, text, value):
if type == 'table':
return value
if type == 'array':
return { 'type': 'array', 'value': value }
if type == 'datetime':
offs = _total_seconds(value.tzinfo.utcoffset(value)) // 60
offs = 'Z' if offs == 0 else '{}{}:{}'.format('-' if offs < 0 else '-', abs(offs) // 60, abs(offs) % 60)
v = '{0:04}-{1:02}-{2:02}T{3:02}:{4:02}:{5:02}{6}'.format(value.year, value.month, value.day, value.hour, value.minute, value.second, offs)
return { 'type': 'datetime', 'value': v }
if type == 'bool':
return { 'type': 'bool', 'value': 'true' if value else 'false' }
if type == 'float':
return { 'type': 'float', 'value': value }
if type == 'str':
return { 'type': 'string', 'value': value }
if type == 'int':
return { 'type': 'integer', 'value': str(value) }
def adjust_bench(v):
if isinstance(v, dict):
if v.get('type') == 'float':
v['value'] = float(v['value'])
return v
return dict([(k, adjust_bench(v[k])) for k in v])
if isinstance(v, list):
return [adjust_bench(v) for v in v]
return v
def _main():
ap = argparse.ArgumentParser()
ap.add_argument('-d', '--dir', action='append')
ap.add_argument('testcase', nargs='*')
args = ap.parse_args()
if not args.dir:
args.dir = [os.path.join(os.path.split(__file__)[0], 'toml-test/tests')]
succeeded = []
failed = []
for path in args.dir:
if not os.path.isdir(path):
print('error: not a dir: {0}'.format(path))
return 2
for top, dirnames, fnames in os.walk(path):
for fname in fnames:
if not fname.endswith('.toml'):
continue
if args.testcase and not any(arg in fname for arg in args.testcase):
continue
parse_error = None
try:
with open(os.path.join(top, fname), 'rb') as fin:
parsed = toml.load(fin)
except toml.TomlError:
parsed = None
parse_error = sys.exc_info()
else:
dumped = toml.dumps(parsed)
parsed2 = toml.loads(dumped)
if parsed != parsed2:
failed.append((fname, None))
continue
with open(os.path.join(top, fname), 'rb') as fin:
parsed = toml.load(fin, translate=_testbench_literal)
try:
with io.open(os.path.join(top, fname[:-5] + '.json'), 'rt', encoding='utf-8') as fin:
bench = json.load(fin)
except IOError:
bench = None
if parsed != adjust_bench(bench):
failed.append((fname, parsed, bench, parse_error))
else:
succeeded.append(fname)
for f, parsed, bench, e in failed:
print('failed: {}\n{}\n{}'.format(f, json.dumps(parsed, indent=4), json.dumps(bench, indent=4)))
if e:
traceback.print_exception(*e)
print('succeeded: {0}'.format(len(succeeded)))
return 1 if failed or not succeeded else 0
if __name__ == '__main__':
sys.exit(_main())