| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import imp | 5 import imp |
| 6 import os.path | 6 import os.path |
| 7 import sys | 7 import sys |
| 8 import unittest | 8 import unittest |
| 9 | 9 |
| 10 def _GetDirAbove(dirname): | 10 def _GetDirAbove(dirname): |
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 with self.assertRaisesRegexp( | 954 with self.assertRaisesRegexp( |
| 955 parser.ParseError, | 955 parser.ParseError, |
| 956 r"^my_file\.mojom:1: Error: Unexpected '=':\n" | 956 r"^my_file\.mojom:1: Error: Unexpected '=':\n" |
| 957 r"\[=MyName\] struct MyStruct {};$"): | 957 r"\[=MyName\] struct MyStruct {};$"): |
| 958 parser.Parse(source3, "my_file.mojom") | 958 parser.Parse(source3, "my_file.mojom") |
| 959 | 959 |
| 960 def testValidImports(self): | 960 def testValidImports(self): |
| 961 """Tests parsing import statements.""" | 961 """Tests parsing import statements.""" |
| 962 | 962 |
| 963 # One import (no module statement). | 963 # One import (no module statement). |
| 964 source1 = "import \"somedir/my.mojom\"" | 964 source1 = "import \"somedir/my.mojom\";" |
| 965 expected1 = ast.Mojom( | 965 expected1 = ast.Mojom( |
| 966 None, | 966 None, |
| 967 ast.ImportList(ast.Import("somedir/my.mojom")), | 967 ast.ImportList(ast.Import("somedir/my.mojom")), |
| 968 []) | 968 []) |
| 969 self.assertEquals(parser.Parse(source1, "my_file.mojom"), expected1) | 969 self.assertEquals(parser.Parse(source1, "my_file.mojom"), expected1) |
| 970 | 970 |
| 971 # Two imports (no module statement). | 971 # Two imports (no module statement). |
| 972 source2 = """\ | 972 source2 = """\ |
| 973 import "somedir/my1.mojom" | 973 import "somedir/my1.mojom"; |
| 974 import "somedir/my2.mojom" | 974 import "somedir/my2.mojom"; |
| 975 """ | 975 """ |
| 976 expected2 = ast.Mojom( | 976 expected2 = ast.Mojom( |
| 977 None, | 977 None, |
| 978 ast.ImportList([ast.Import("somedir/my1.mojom"), | 978 ast.ImportList([ast.Import("somedir/my1.mojom"), |
| 979 ast.Import("somedir/my2.mojom")]), | 979 ast.Import("somedir/my2.mojom")]), |
| 980 []) | 980 []) |
| 981 self.assertEquals(parser.Parse(source2, "my_file.mojom"), expected2) | 981 self.assertEquals(parser.Parse(source2, "my_file.mojom"), expected2) |
| 982 | 982 |
| 983 # Imports with module statement. | 983 # Imports with module statement. |
| 984 source3 = """\ | 984 source3 = """\ |
| 985 import "somedir/my1.mojom" | 985 import "somedir/my1.mojom"; |
| 986 import "somedir/my2.mojom" | 986 import "somedir/my2.mojom"; |
| 987 module my_module {} | 987 module my_module {} |
| 988 """ | 988 """ |
| 989 expected3 = ast.Mojom( | 989 expected3 = ast.Mojom( |
| 990 ast.Module(('IDENTIFIER', 'my_module'), None), | 990 ast.Module(('IDENTIFIER', 'my_module'), None), |
| 991 ast.ImportList([ast.Import("somedir/my1.mojom"), | 991 ast.ImportList([ast.Import("somedir/my1.mojom"), |
| 992 ast.Import("somedir/my2.mojom")]), | 992 ast.Import("somedir/my2.mojom")]), |
| 993 []) | 993 []) |
| 994 self.assertEquals(parser.Parse(source3, "my_file.mojom"), expected3) | 994 self.assertEquals(parser.Parse(source3, "my_file.mojom"), expected3) |
| 995 | 995 |
| 996 def testInvalidImports(self): | 996 def testInvalidImports(self): |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1009 source2 = """\ | 1009 source2 = """\ |
| 1010 import // Missing string. | 1010 import // Missing string. |
| 1011 module {} | 1011 module {} |
| 1012 """ | 1012 """ |
| 1013 with self.assertRaisesRegexp( | 1013 with self.assertRaisesRegexp( |
| 1014 parser.ParseError, | 1014 parser.ParseError, |
| 1015 r"^my_file\.mojom:2: Error: Unexpected 'module':\n" | 1015 r"^my_file\.mojom:2: Error: Unexpected 'module':\n" |
| 1016 r" *module {}$"): | 1016 r" *module {}$"): |
| 1017 parser.Parse(source2, "my_file.mojom") | 1017 parser.Parse(source2, "my_file.mojom") |
| 1018 | 1018 |
| 1019 source3 = """\ |
| 1020 import "foo.mojom" // Missing semicolon. |
| 1021 module {} |
| 1022 """ |
| 1023 with self.assertRaisesRegexp( |
| 1024 parser.ParseError, |
| 1025 r"^my_file\.mojom:2: Error: Unexpected 'module':\n" |
| 1026 r" *module {}$"): |
| 1027 parser.Parse(source3, "my_file.mojom") |
| 1028 |
| 1019 def testValidNullableTypes(self): | 1029 def testValidNullableTypes(self): |
| 1020 """Tests parsing nullable types.""" | 1030 """Tests parsing nullable types.""" |
| 1021 | 1031 |
| 1022 source = """\ | 1032 source = """\ |
| 1023 struct MyStruct { | 1033 struct MyStruct { |
| 1024 int32? a; // This is actually invalid, but handled at a different | 1034 int32? a; // This is actually invalid, but handled at a different |
| 1025 // level. | 1035 // level. |
| 1026 string? b; | 1036 string? b; |
| 1027 array<int32> ? c; | 1037 array<int32> ? c; |
| 1028 array<string ? > ? d; | 1038 array<string ? > ? d; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1093 }; | 1103 }; |
| 1094 """ | 1104 """ |
| 1095 with self.assertRaisesRegexp( | 1105 with self.assertRaisesRegexp( |
| 1096 parser.ParseError, | 1106 parser.ParseError, |
| 1097 r"^my_file\.mojom:2: Error: Unexpected '&':\n" | 1107 r"^my_file\.mojom:2: Error: Unexpected '&':\n" |
| 1098 r" *some_interface\?& a;$"): | 1108 r" *some_interface\?& a;$"): |
| 1099 parser.Parse(source3, "my_file.mojom") | 1109 parser.Parse(source3, "my_file.mojom") |
| 1100 | 1110 |
| 1101 if __name__ == "__main__": | 1111 if __name__ == "__main__": |
| 1102 unittest.main() | 1112 unittest.main() |
| OLD | NEW |