| Index: tools/testrunner/local/statusfile.py
|
| diff --git a/tools/testrunner/local/statusfile.py b/tools/testrunner/local/statusfile.py
|
| deleted file mode 100644
|
| index bf1de45f66f5bc938caef6f95668a7c3581a3e73..0000000000000000000000000000000000000000
|
| --- a/tools/testrunner/local/statusfile.py
|
| +++ /dev/null
|
| @@ -1,145 +0,0 @@
|
| -# Copyright 2012 the V8 project authors. All rights reserved.
|
| -# Redistribution and use in source and binary forms, with or without
|
| -# modification, are permitted provided that the following conditions are
|
| -# met:
|
| -#
|
| -# * Redistributions of source code must retain the above copyright
|
| -# notice, this list of conditions and the following disclaimer.
|
| -# * Redistributions in binary form must reproduce the above
|
| -# copyright notice, this list of conditions and the following
|
| -# disclaimer in the documentation and/or other materials provided
|
| -# with the distribution.
|
| -# * Neither the name of Google Inc. nor the names of its
|
| -# contributors may be used to endorse or promote products derived
|
| -# from this software without specific prior written permission.
|
| -#
|
| -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| -
|
| -
|
| -# These imports are required for the on-demand conversion from
|
| -# old to new status file format.
|
| -from os.path import exists
|
| -from os.path import getmtime
|
| -
|
| -from . import old_statusfile
|
| -
|
| -
|
| -# These outcomes can occur in a TestCase's outcomes list:
|
| -SKIP = "SKIP"
|
| -FAIL = "FAIL"
|
| -PASS = "PASS"
|
| -OKAY = "OKAY"
|
| -TIMEOUT = "TIMEOUT"
|
| -CRASH = "CRASH"
|
| -SLOW = "SLOW"
|
| -# These are just for the status files and are mapped below in DEFS:
|
| -FAIL_OK = "FAIL_OK"
|
| -PASS_OR_FAIL = "PASS_OR_FAIL"
|
| -
|
| -ALWAYS = "ALWAYS"
|
| -
|
| -KEYWORDS = {}
|
| -for key in [SKIP, FAIL, PASS, OKAY, TIMEOUT, CRASH, SLOW, FAIL_OK,
|
| - PASS_OR_FAIL, ALWAYS]:
|
| - KEYWORDS[key] = key
|
| -
|
| -DEFS = {FAIL_OK: [FAIL, OKAY],
|
| - PASS_OR_FAIL: [PASS, FAIL]}
|
| -
|
| -# Support arches, modes to be written as keywords instead of strings.
|
| -VARIABLES = {ALWAYS: True}
|
| -for var in ["debug", "release", "android_arm", "android_ia32", "arm", "ia32",
|
| - "mipsel", "x64"]:
|
| - VARIABLES[var] = var
|
| -
|
| -
|
| -def DoSkip(outcomes):
|
| - return SKIP in outcomes or SLOW in outcomes
|
| -
|
| -
|
| -def IsFlaky(outcomes):
|
| - return ((PASS in outcomes) and (FAIL in outcomes) and
|
| - (not CRASH in outcomes) and (not OKAY in outcomes))
|
| -
|
| -
|
| -def IsFailOk(outcomes):
|
| - return (FAIL in outcomes) and (OKAY in outcomes)
|
| -
|
| -
|
| -def _AddOutcome(result, new):
|
| - global DEFS
|
| - if new in DEFS:
|
| - mapped = DEFS[new]
|
| - if type(mapped) == list:
|
| - for m in mapped:
|
| - _AddOutcome(result, m)
|
| - elif type(mapped) == str:
|
| - _AddOutcome(result, mapped)
|
| - else:
|
| - result.add(new)
|
| -
|
| -
|
| -def _ParseOutcomeList(rule, outcomes, target_dict, variables):
|
| - result = set([])
|
| - if type(outcomes) == str:
|
| - outcomes = [outcomes]
|
| - for item in outcomes:
|
| - if type(item) == str:
|
| - _AddOutcome(result, item)
|
| - elif type(item) == list:
|
| - if not eval(item[0], variables): continue
|
| - for outcome in item[1:]:
|
| - assert type(outcome) == str
|
| - _AddOutcome(result, outcome)
|
| - else:
|
| - assert False
|
| - if len(result) == 0: return
|
| - if rule in target_dict:
|
| - target_dict[rule] |= result
|
| - else:
|
| - target_dict[rule] = result
|
| -
|
| -
|
| -def ReadStatusFile(path, variables):
|
| - # As long as the old-format .status files are authoritative, just
|
| - # create the converted version on demand and cache it to speed up
|
| - # subsequent runs.
|
| - if path.endswith(".status"):
|
| - newpath = path + "2"
|
| - if not exists(newpath) or getmtime(newpath) < getmtime(path):
|
| - print "Converting status file."
|
| - converted = old_statusfile.ConvertNotation(path).GetOutput()
|
| - with open(newpath, 'w') as f:
|
| - f.write(converted)
|
| - path = newpath
|
| -
|
| - with open(path) as f:
|
| - global KEYWORDS
|
| - contents = eval(f.read(), KEYWORDS)
|
| -
|
| - rules = {}
|
| - wildcards = {}
|
| - variables.update(VARIABLES)
|
| - for section in contents:
|
| - assert type(section) == list
|
| - assert len(section) == 2
|
| - if not eval(section[0], variables): continue
|
| - section = section[1]
|
| - assert type(section) == dict
|
| - for rule in section:
|
| - assert type(rule) == str
|
| - if rule[-1] == '*':
|
| - _ParseOutcomeList(rule, section[rule], wildcards, variables)
|
| - else:
|
| - _ParseOutcomeList(rule, section[rule], rules, variables)
|
| - return rules, wildcards
|
|
|