tests: Auto-discover test files

This commit is contained in:
James Westman 2023-05-13 18:30:42 -05:00
parent 9346ee039e
commit 83d11ccb8c
2 changed files with 35 additions and 132 deletions

View file

@ -1,3 +0,0 @@
using Gtk 4.0;
NotARealWidget {}

View file

@ -159,140 +159,46 @@ class TestSamples(unittest.TestCase):
except: except:
pass pass
self.assert_sample("accessibility") # list the samples directory
self.assert_sample("action_widgets") samples = [
if have_adw_1_4: f.stem
self.assert_sample("adw_breakpoint") for f in Path(__file__).parent.glob("samples/*.blp")
self.assert_sample("child_type") if not f.stem.endswith("_dec")
self.assert_sample("combo_box_text") ]
self.assert_sample("comments") for sample in samples:
self.assert_sample("enum") REQUIRE_ADW_1_4 = ["adw_breakpoint"]
self.assert_sample("expr_closure", skip_run=True) # The closure doesn't exist
self.assert_sample(
"expr_closure_args", skip_run=True
) # The closure doesn't exist
self.assert_sample("expr_lookup")
self.assert_sample("file_filter")
self.assert_sample("flags")
self.assert_sample("id_prop")
self.assert_sample("layout")
self.assert_sample("list_factory")
self.assert_sample("menu")
self.assert_sample("numbers")
self.assert_sample("object_prop")
self.assert_sample(
"parseable", skip_run=True
) # The image resource doesn't exist
self.assert_sample("property")
self.assert_sample("property_binding")
self.assert_sample("responses", skip_run=not have_adw)
self.assert_sample("signal", skip_run=True) # The callback doesn't exist
self.assert_sample("size_group")
self.assert_sample("string_list")
self.assert_sample("strings")
self.assert_sample("style")
self.assert_sample("subscope")
self.assert_sample(
"template", skip_run=True
) # The template class doesn't exist
self.assert_sample(
"template_binding", skip_run=True
) # The template class doesn't exist
self.assert_sample(
"template_binding_extern", skip_run=True
) # The template class doesn't exist
self.assert_sample(
"template_no_parent", skip_run=True
) # The template class doesn't exist
self.assert_sample("translated")
self.assert_sample(
"typeof", skip_run=True
) # The custom object type doesn't exist
self.assert_sample("uint")
self.assert_sample(
"unchecked_class", skip_run=True
) # The custom object type doesn't exist
self.assert_sample("using")
def test_sample_errors(self): SKIP_RUN = [
have_adw = False "expr_closure",
have_adw_1_4 = False "expr_closure_args",
"parseable",
"signal",
"template",
"template_binding",
"template_binding_extern",
"template_no_parent",
"typeof",
"unchecked_class",
]
try: if sample in REQUIRE_ADW_1_4 and not have_adw_1_4:
import gi continue
gi.require_version("Adw", "1") with self.subTest(sample):
from gi.repository import Adw self.assert_sample(sample, skip_run=sample in SKIP_RUN)
have_adw = True # list the sample_errors directory
Adw.init() sample_errors = [
if Adw.MINOR_VERSION >= 4: f.stem for f in Path(__file__).parent.glob("sample_errors/*.blp")
have_adw_1_4 = True ]
except: for sample_error in sample_errors:
pass REQUIRE_ADW_1_4 = ["adw_breakpoint"]
self.assert_sample_error("a11y_in_non_widget") if sample_error in REQUIRE_ADW_1_4 and not have_adw_1_4:
self.assert_sample_error("a11y_prop_dne") continue
self.assert_sample_error("a11y_prop_obj_dne")
self.assert_sample_error("a11y_prop_type") with self.subTest(sample_error):
self.assert_sample_error("abstract_class") self.assert_sample_error(sample_error)
self.assert_sample_error("action_widget_float_response")
self.assert_sample_error("action_widget_have_no_id")
self.assert_sample_error("action_widget_multiple_default")
self.assert_sample_error("action_widget_in_invalid_container")
self.assert_sample_error("action_widget_response_dne")
self.assert_sample_error("action_widget_negative_response")
if have_adw_1_4:
self.assert_sample_error("adw_breakpoint")
self.assert_sample_error("bitfield_member_dne")
self.assert_sample_error("children")
self.assert_sample_error("class_assign")
self.assert_sample_error("class_dne")
self.assert_sample_error("consecutive_unexpected_tokens")
self.assert_sample_error("does_not_implement")
self.assert_sample_error("duplicate_obj_id")
self.assert_sample_error("duplicates")
self.assert_sample_error("empty")
self.assert_sample_error("enum_member_dne")
self.assert_sample_error("expected_semicolon")
self.assert_sample_error("expr_cast_conversion")
self.assert_sample_error("expr_cast_needed")
self.assert_sample_error("expr_closure_not_cast")
self.assert_sample_error("expr_lookup_dne")
self.assert_sample_error("expr_lookup_no_properties")
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("inline_menu")
self.assert_sample_error("invalid_bool")
self.assert_sample_error("layout_in_non_widget")
self.assert_sample_error("legacy_template")
self.assert_sample_error("list_factory")
self.assert_sample_error("menu_no_id")
self.assert_sample_error("menu_toplevel_attribute")
self.assert_sample_error("no_import_version")
self.assert_sample_error("ns_not_found")
self.assert_sample_error("ns_not_imported")
self.assert_sample_error("not_a_class")
self.assert_sample_error("object_dne")
self.assert_sample_error("obj_in_string_list")
self.assert_sample_error("obj_prop_type")
self.assert_sample_error("property_dne")
self.assert_sample_error("read_only_properties")
self.assert_sample_error("signal_dne")
self.assert_sample_error("signal_object_dne")
self.assert_sample_error("size_group_non_widget")
self.assert_sample_error("size_group_obj_dne")
self.assert_sample_error("strv")
self.assert_sample_error("styles_in_non_widget")
self.assert_sample_error("subscope")
self.assert_sample_error("template_parent")
self.assert_sample_error("two_templates")
self.assert_sample_error("uint")
self.assert_sample_error("using_invalid_namespace")
self.assert_sample_error("warn_old_bind")
self.assert_sample_error("warn_old_extern")
self.assert_sample_error("widgets_in_non_size_group")
def test_decompiler(self): def test_decompiler(self):
self.assert_decompile("accessibility_dec") self.assert_decompile("accessibility_dec")