tests: Add GTK directive error tests

This commit is contained in:
James Westman 2022-03-28 14:18:17 -05:00
parent f197e68589
commit 4cf966eafa
7 changed files with 11 additions and 4 deletions

View file

@ -34,14 +34,17 @@ class GtkDirective(AstNode):
if self.tokens["version"] not in ["4.0"]: if self.tokens["version"] not in ["4.0"]:
err = CompileError("Only GTK 4 is supported") err = CompileError("Only GTK 4 is supported")
if self.tokens["version"].startswith("4"): if self.tokens["version"].startswith("4"):
err.hint("Expected the GIR version, not an exact version number. Use `using Gtk 4.0;`.") err.hint("Expected the GIR version, not an exact version number. Use 'using Gtk 4.0;'.")
else: else:
err.hint("Expected `using Gtk 4.0;`") err.hint("Expected 'using Gtk 4.0;'")
raise err raise err
@property @property
def gir_namespace(self): def gir_namespace(self):
# validate the GTK version first to make sure the more specific error
# message is emitted
self.gtk_version()
return gir.get_namespace("Gtk", self.tokens["version"]) return gir.get_namespace("Gtk", self.tokens["version"])

View file

@ -44,8 +44,6 @@ class UI(AstNode):
try: try:
gir_ctx.add_namespace(self.children[GtkDirective][0].gir_namespace) gir_ctx.add_namespace(self.children[GtkDirective][0].gir_namespace)
except CompileError as e: except CompileError as e:
e.start = self.children[GtkDirective][0].group.start
e.end = self.children[GtkDirective][0].group.end
self._gir_errors.append(e) self._gir_errors.append(e)
for i in self.children[Import]: for i in self.children[Import]:

View file

@ -0,0 +1 @@
using Gtk 3.0;

View file

@ -0,0 +1 @@
1,11,3,Only GTK 4 is supported

View file

@ -0,0 +1 @@
using Gtk 4.6;

View file

@ -0,0 +1 @@
1,11,3,Only GTK 4 is supported

View file

@ -178,6 +178,8 @@ class TestSamples(unittest.TestCase):
self.assert_sample_error("duplicate_obj_id") self.assert_sample_error("duplicate_obj_id")
self.assert_sample_error("enum_member_dne") self.assert_sample_error("enum_member_dne")
self.assert_sample_error("filters_in_non_file_filter") self.assert_sample_error("filters_in_non_file_filter")
self.assert_sample_error("gtk_3")
self.assert_sample_error("gtk_exact_version")
self.assert_sample_error("invalid_bool") self.assert_sample_error("invalid_bool")
self.assert_sample_error("layout_in_non_widget") self.assert_sample_error("layout_in_non_widget")
self.assert_sample_error("ns_not_imported") self.assert_sample_error("ns_not_imported")