import WebIDL def WebIDLTest(parser, harness): # Check that error messages put the '^' in the right place. threw = False input = """\ // This is a comment. interface Foo { }; /* This is also a comment. */ interface ?""" try: parser.parse(input) parser.finish() except WebIDL.WebIDLError as e: threw = True lines = str(e).split("\n") harness.check(len(lines), 3, "Expected number of lines in error message") harness.ok( lines[0].endswith("line 6:10"), 'First line of error should end with "line 6:10", but was "%s".' % lines[0], ) harness.check( lines[1], "interface ?", "Second line of error message is the line which caused the error.", ) harness.check( lines[2], " " * (len("interface ?") - 1) + "^", "Correct column pointer in error message.", ) harness.ok(threw, "Should have thrown.")