⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.py.svn-base

📁 Google浏览器V8内核代码
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
    return (path[0], path[1:])class TestConfiguration(object):  def __init__(self, context, root):    self.context = context    self.root = root  def Contains(self, path, file):    if len(path) > len(file):      return False    for i in xrange(len(path)):      if not path[i].match(file[i]):        return False    return True  def GetTestStatus(self, sections, defs):    passclass TestSuite(object):  def __init__(self, name):    self.name = name  def GetName(self):    return self.nameclass TestRepository(TestSuite):  def __init__(self, path):    normalized_path = abspath(path)    super(TestRepository, self).__init__(basename(normalized_path))    self.path = normalized_path    self.is_loaded = False    self.config = None  def GetConfiguration(self, context):    if self.is_loaded:      return self.config    self.is_loaded = True    file = None    try:      (file, pathname, description) = imp.find_module('testcfg', [ self.path ])      module = imp.load_module(self.path, file, pathname, description)      self.config = module.GetConfiguration(context, self.path)    finally:      if file:        file.close()    return self.config  def GetBuildRequirements(self, path, context):    return self.GetConfiguration(context).GetBuildRequirements()  def ListTests(self, current_path, path, context, mode):    return self.GetConfiguration(context).ListTests(current_path, path, mode)  def GetTestStatus(self, context, sections, defs):    self.GetConfiguration(context).GetTestStatus(sections, defs)class LiteralTestSuite(TestSuite):  def __init__(self, tests):    super(LiteralTestSuite, self).__init__('root')    self.tests = tests  def GetBuildRequirements(self, path, context):    (name, rest) = CarCdr(path)    result = [ ]    for test in self.tests:      if not name or name.match(test.GetName()):        result += test.GetBuildRequirements(rest, context)    return result  def ListTests(self, current_path, path, context, mode):    (name, rest) = CarCdr(path)    result = [ ]    for test in self.tests:      test_name = test.GetName()      if not name or name.match(test_name):        full_path = current_path + [test_name]        result += test.ListTests(full_path, path, context, mode)    return result  def GetTestStatus(self, context, sections, defs):    for test in self.tests:      test.GetTestStatus(context, sections, defs)PREFIX = {'debug': '_g', 'release': ''}class Context(object):  def __init__(self, workspace, buildspace, verbose, vm, timeout, processor):    self.workspace = workspace    self.buildspace = buildspace    self.verbose = verbose    self.vm_root = vm    self.timeout = timeout    self.processor = processor  def GetVm(self, mode):    name = self.vm_root + PREFIX[mode]    if platform.system() == 'Windows':      return name + '.exe'    else:      return namedef RunTestCases(all_cases, progress):  def DoSkip(case):    return SKIP in c.outcomes or SLOW in c.outcomes  cases_to_run = [ c for c in all_cases if not DoSkip(c) ]  progress = PROGRESS_INDICATORS[progress](cases_to_run)  return progress.Run()def BuildRequirements(context, requirements, mode, scons_flags):  command_line = (['scons', '-Y', context.workspace, 'mode=' + ",".join(mode)]                  + requirements                  + scons_flags)  output = ExecuteNoCapture(command_line, context)  return output.exit_code == 0# -------------------------------------------# --- T e s t   C o n f i g u r a t i o n ---# -------------------------------------------SKIP = 'skip'FAIL = 'fail'PASS = 'pass'OKAY = 'okay'TIMEOUT = 'timeout'CRASH = 'crash'SLOW = 'slow'class Expression(object):  passclass Constant(Expression):  def __init__(self, value):    self.value = value  def Evaluate(self, env, defs):    return self.valueclass Variable(Expression):  def __init__(self, name):    self.name = name  def GetOutcomes(self, env, defs):    if self.name in env: return ListSet([env[self.name]])    else: return Nothing()class Outcome(Expression):  def __init__(self, name):    self.name = name  def GetOutcomes(self, env, defs):    if self.name in defs:      return defs[self.name].GetOutcomes(env, defs)    else:      return ListSet([self.name])class Set(object):  passclass ListSet(Set):  def __init__(self, elms):    self.elms = elms  def __str__(self):    return "ListSet%s" % str(self.elms)  def Intersect(self, that):    if not isinstance(that, ListSet):      return that.Intersect(self)    return ListSet([ x for x in self.elms if x in that.elms ])  def Union(self, that):    if not isinstance(that, ListSet):      return that.Union(self)    return ListSet(self.elms + [ x for x in that.elms if x not in self.elms ])  def IsEmpty(self):    return len(self.elms) == 0class Everything(Set):  def Intersect(self, that):    return that  def Union(self, that):    return self  def IsEmpty(self):    return Falseclass Nothing(Set):  def Intersect(self, that):    return self  def Union(self, that):    return that  def IsEmpty(self):    return Trueclass Operation(Expression):  def __init__(self, left, op, right):    self.left = left    self.op = op    self.right = right  def Evaluate(self, env, defs):    if self.op == '||' or self.op == ',':      return self.left.Evaluate(env, defs) or self.right.Evaluate(env, defs)    elif self.op == 'if':      return False    elif self.op == '==':      inter = self.left.GetOutcomes(env, defs).Intersect(self.right.GetOutcomes(env, defs))      return not inter.IsEmpty()    else:      assert self.op == '&&'      return self.left.Evaluate(env, defs) and self.right.Evaluate(env, defs)  def GetOutcomes(self, env, defs):    if self.op == '||' or self.op == ',':      return self.left.GetOutcomes(env, defs).Union(self.right.GetOutcomes(env, defs))    elif self.op == 'if':      if self.right.Evaluate(env, defs): return self.left.GetOutcomes(env, defs)      else: return Nothing()    else:      assert self.op == '&&'      return self.left.GetOutcomes(env, defs).Intersect(self.right.GetOutcomes(env, defs))def IsAlpha(str):  for char in str:    if not (char.isalpha() or char.isdigit() or char == '_'):      return False  return Trueclass Tokenizer(object):  """A simple string tokenizer that chops expressions into variables,  parens and operators"""  def __init__(self, expr):    self.index = 0    self.expr = expr    self.length = len(expr)    self.tokens = None  def Current(self, length = 1):    if not self.HasMore(length): return ""    return self.expr[self.index:self.index+length]  def HasMore(self, length = 1):    return self.index < self.length + (length - 1)  def Advance(self, count = 1):    self.index = self.index + count  def AddToken(self, token):    self.tokens.append(token)  def SkipSpaces(self):    while self.HasMore() and self.Current().isspace():      self.Advance()  def Tokenize(self):    self.tokens = [ ]    while self.HasMore():      self.SkipSpaces()      if not self.HasMore():        return None      if self.Current() == '(':        self.AddToken('(')        self.Advance()      elif self.Current() == ')':        self.AddToken(')')        self.Advance()      elif self.Current() == '$':        self.AddToken('$')        self.Advance()      elif self.Current() == ',':        self.AddToken(',')        self.Advance()      elif IsAlpha(self.Current()):        buf = ""        while self.HasMore() and IsAlpha(self.Current()):          buf += self.Current()          self.Advance()        self.AddToken(buf)      elif self.Current(2) == '&&':        self.AddToken('&&')        self.Advance(2)      elif self.Current(2) == '||':        self.AddToken('||')        self.Advance(2)      elif self.Current(2) == '==':        self.AddToken('==')        self.Advance(2)      else:        return None    return self.tokensclass Scanner(object):  """A simple scanner that can serve out tokens from a given list"""  def __init__(self, tokens):    self.tokens = tokens    self.length = len(tokens)    self.index = 0  def HasMore(self):    return self.index < self.length  def Current(self):    return self.tokens[self.index]  def Advance(self):    self.index = self.index + 1def ParseAtomicExpression(scan):  if scan.Current() == "true":    scan.Advance()    return Constant(True)  elif scan.Current() == "false":    scan.Advance()    return Constant(False)  elif IsAlpha(scan.Current()):    name = scan.Current()    scan.Advance()    return Outcome(name.lower())  elif scan.Current() == '$':    scan.Advance()    if not IsAlpha(scan.Current()):      return None    name = scan.Current()    scan.Advance()    return Variable(name.lower())  elif scan.Current() == '(':    scan.Advance()    result = ParseLogicalExpression(scan)    if (not result) or (scan.Current() != ')'):      return None    scan.Advance()    return result  else:    return NoneBINARIES = ['==']def ParseOperatorExpression(scan):  left = ParseAtomicExpression(scan)  if not left: return None  while scan.HasMore() and (scan.Current() in BINARIES):

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -