15 def _run_test(self, syntax, content, expected):
16 """Utility run tests and prints extra contextual information.
17
18 Args:
19 syntax -- IDL grammar to use (either idlparser.WEBKIT_SYNTAX,
20 WEBIDL_SYNTAX or FREMONTCUT_SYNTAX). If None, will run
21 multiple tests, each with a different syntax.
22 content -- input text for the parser.
23 expected -- expected parse result.
24 """
25 if syntax is None:
26 self._run_test(idlparser.WEBIDL_SYNTAX, content, expected)
27 self._run_test(idlparser.WEBKIT_SYNTAX, content, expected)
28 self._run_test(idlparser.FREMONTCUT_SYNTAX, content, expected)
29 return
30
31 actual = None
32 error = None
33 ast = None
34 parseResult = None
35 try:
36 parser = idlparser.IDLParser(syntax)
37 ast = parser.parse(content)
38 node = idlnode.IDLFile(ast)
39 actual = node.to_dict() if node else None
40 except SyntaxError as e:
41 error = e
42 pass
43 if actual == expected:
44 return
45 else:
46 msg = '''
47SYNTAX : %s
48CONTENT :
49%s
50EXPECTED:
51%s
52ACTUAL :
53%s
54ERROR : %s
55AST :
56%s
57 ''' % (syntax, content, expected, actual, error, ast)
58 self.fail(msg)
59