コード例 #1
0
ファイル: idl_node.py プロジェクト: yubb/chromium.src
 def Error(self, msg):
   self.errors += 1
   ErrOut.LogLine(self.filename, self.lineno, 0, ' %s %s' %
                  (str(self), msg))
   if self.filenode:
     errcnt = self.filenode.GetProperty('ERRORS', 0)
     self.filenode.SetProperty('ERRORS', errcnt + 1)
コード例 #2
0
ファイル: idl_node.py プロジェクト: PlutoVR/metachromium
 def Error(self, msg):
     """Log an error for this object."""
     self.errors += 1
     ErrOut.LogLine(self._filename, self.lineno, 0,
                    ' %s %s' % (str(self), msg))
     filenode = self.GetProperty('FILE')
     if filenode:
         errcnt = filenode.GetProperty('ERRORS')
         if not errcnt:
             errcnt = 0
         filenode.SetProperty('ERRORS', errcnt + 1)
コード例 #3
0
  def ParseFile(self, filename):
    date = time.ctime(os.path.getmtime(filename))
    data = open(filename).read()
    if self.verbose:
      InfoOut.Log("Parsing %s" % filename)
    try:
      out = self.ParseData(data, filename)

      # If we have a src root specified, remove it from the path
      srcroot = GetOption('srcroot')
      if srcroot and filename.find(srcroot) == 0:
        filename = filename[len(srcroot) + 1:]
      filenode = IDLFile(filename, out, self.parse_errors + self.lex_errors)
      filenode.SetProperty('DATETIME', date)
      return filenode

    except Exception as e:
      ErrOut.LogLine(filename, self.last.lineno, self.last.lexpos,
                     'Internal parsing error - %s.' % str(e))
      raise
コード例 #4
0
    def p_error(self, t):
        filename = self.lexobj.filename
        self.parse_errors += 1
        if t:
            lineno = t.lineno
            pos = t.lexpos
            prev = self.yaccobj.symstack[-1]
            if type(prev) == lex.LexToken:
                msg = "Unexpected %s after %s." % (TokenTypeName(t),
                                                   TokenTypeName(prev))
            else:
                msg = "Unexpected %s." % (t.value)
        else:
            lineno = self.last.lineno
            pos = self.last.lexpos
            msg = "Unexpected end of file after %s." % TokenTypeName(self.last)
            self.yaccobj.restart()

        # Attempt to remap the error to a friendlier form
        if msg in ERROR_REMAP:
            msg = ERROR_REMAP[msg]

        # Log the error
        ErrOut.LogLine(filename, lineno, pos, msg)
コード例 #5
0
def TestErrors(filename, filenode):
    nodelist = filenode.GetChildren()

    lexer = IDLLexer()
    data = open(filename).read()
    lexer.SetData(filename, data)

    pass_comments = []
    fail_comments = []
    while True:
        tok = lexer.lexobj.token()
        if tok == None: break
        if tok.type == 'COMMENT':
            args = tok.value[3:-3].split()
            if args[0] == 'OK':
                pass_comments.append((tok.lineno, ' '.join(args[1:])))
            else:
                if args[0] == 'FAIL':
                    fail_comments.append((tok.lineno, ' '.join(args[1:])))
    obj_list = []
    for node in nodelist:
        obj_list.extend(FlattenTree(node))

    errors = 0

    #
    # Check for expected successes
    #
    obj_cnt = len(obj_list)
    pass_cnt = len(pass_comments)
    if obj_cnt != pass_cnt:
        InfoOut.Log("Mismatched pass (%d) vs. nodes built (%d)." %
                    (pass_cnt, obj_cnt))
        InfoOut.Log("PASS: %s" % [x[1] for x in pass_comments])
        InfoOut.Log("OBJS: %s" % obj_list)
        errors += 1
        if pass_cnt > obj_cnt: pass_cnt = obj_cnt

    for i in range(pass_cnt):
        line, comment = pass_comments[i]
        if obj_list[i] != comment:
            ErrOut.LogLine(filename, line, None,
                           "OBJ %s : EXPECTED %s\n" % (obj_list[i], comment))
            errors += 1

    #
    # Check for expected errors
    #
    err_list = ErrOut.DrainLog()
    err_cnt = len(err_list)
    fail_cnt = len(fail_comments)
    if err_cnt != fail_cnt:
        InfoOut.Log("Mismatched fail (%d) vs. errors seen (%d)." %
                    (fail_cnt, err_cnt))
        InfoOut.Log("FAIL: %s" % [x[1] for x in fail_comments])
        InfoOut.Log("ERRS: %s" % err_list)
        errors += 1
        if fail_cnt > err_cnt: fail_cnt = err_cnt

    for i in range(fail_cnt):
        line, comment = fail_comments[i]
        err = err_list[i].strip()

        if err_list[i] != comment:
            ErrOut.Log("%s(%d) Error\n\tERROR : %s\n\tEXPECT: %s" %
                       (filename, line, err_list[i], comment))
            errors += 1

    # Clear the error list for the next run
    err_list = []
    return errors
コード例 #6
0
ファイル: idl_node.py プロジェクト: Devic1573/Chromium
 def Error(self, msg):
     self.errors += 1
     ErrOut.LogLine(self.filename, self.lineno, 0,
                    ' %s %s' % (str(self), msg))
     if self.lineno == 46: raise Exception("huh?")