@@ -480,13 +480,13 @@ def test_test_properties_skipped(opts, generate_tests):
480480 write (opts .ql_test_output / "Derived" / "test.swift" )
481481 assert generate_tests ([
482482 schema .Class ("Base" , derived = {"Derived" }, properties = [
483- schema .SingleProperty ("x" , "string" , pragmas = ["skip_qltest " , "foo" ]),
484- schema .RepeatedProperty ("y" , "int" , pragmas = ["bar" , "skip_qltest " ]),
483+ schema .SingleProperty ("x" , "string" , pragmas = ["qltest_skip " , "foo" ]),
484+ schema .RepeatedProperty ("y" , "int" , pragmas = ["bar" , "qltest_skip " ]),
485485 ]),
486486 schema .Class ("Derived" , bases = {"Base" }, properties = [
487- schema .PredicateProperty ("a" , pragmas = ["skip_qltest " ]),
487+ schema .PredicateProperty ("a" , pragmas = ["qltest_skip " ]),
488488 schema .OptionalProperty (
489- "b" , "int" , pragmas = ["bar" , "skip_qltest " , "baz" ]),
489+ "b" , "int" , pragmas = ["bar" , "qltest_skip " , "baz" ]),
490490 ]),
491491 ]) == {
492492 "Derived/Derived.ql" : ql .ClassTester (class_name = "Derived" ),
@@ -496,7 +496,7 @@ def test_test_properties_skipped(opts, generate_tests):
496496def test_test_base_class_skipped (opts , generate_tests ):
497497 write (opts .ql_test_output / "Derived" / "test.swift" )
498498 assert generate_tests ([
499- schema .Class ("Base" , derived = {"Derived" }, pragmas = ["skip_qltest " , "foo" ], properties = [
499+ schema .Class ("Base" , derived = {"Derived" }, pragmas = ["qltest_skip " , "foo" ], properties = [
500500 schema .SingleProperty ("x" , "string" ),
501501 schema .RepeatedProperty ("y" , "int" ),
502502 ]),
@@ -510,12 +510,54 @@ def test_test_final_class_skipped(opts, generate_tests):
510510 write (opts .ql_test_output / "Derived" / "test.swift" )
511511 assert generate_tests ([
512512 schema .Class ("Base" , derived = {"Derived" }),
513- schema .Class ("Derived" , bases = {"Base" }, pragmas = ["skip_qltest " , "foo" ], properties = [
513+ schema .Class ("Derived" , bases = {"Base" }, pragmas = ["qltest_skip " , "foo" ], properties = [
514514 schema .SingleProperty ("x" , "string" ),
515515 schema .RepeatedProperty ("y" , "int" ),
516516 ]),
517517 ]) == {}
518518
519519
520+ def test_test_class_hierarchy_collapse (opts , generate_tests ):
521+ write (opts .ql_test_output / "Base" / "test.swift" )
522+ assert generate_tests ([
523+ schema .Class ("Base" , derived = {"D1" , "D2" }, pragmas = ["foo" , "qltest_collapse_hierarchy" ]),
524+ schema .Class ("D1" , bases = {"Base" }, properties = [schema .SingleProperty ("x" , "string" )]),
525+ schema .Class ("D2" , bases = {"Base" }, derived = {"D3" }, properties = [schema .SingleProperty ("y" , "string" )]),
526+ schema .Class ("D3" , bases = {"D2" }, properties = [schema .SingleProperty ("z" , "string" )]),
527+ ]) == {
528+ "Base/Base.ql" : ql .ClassTester (class_name = "Base" ),
529+ }
530+
531+
532+ def test_test_class_hierarchy_uncollapse (opts , generate_tests ):
533+ for d in ("Base" , "D3" , "D4" ):
534+ write (opts .ql_test_output / d / "test.swift" )
535+ assert generate_tests ([
536+ schema .Class ("Base" , derived = {"D1" , "D2" }, pragmas = ["foo" , "qltest_collapse_hierarchy" ]),
537+ schema .Class ("D1" , bases = {"Base" }, properties = [schema .SingleProperty ("x" , "string" )]),
538+ schema .Class ("D2" , bases = {"Base" }, derived = {"D3" , "D4" }, pragmas = ["qltest_uncollapse_hierarchy" , "bar" ]),
539+ schema .Class ("D3" , bases = {"D2" }),
540+ schema .Class ("D4" , bases = {"D2" }),
541+ ]) == {
542+ "Base/Base.ql" : ql .ClassTester (class_name = "Base" ),
543+ "D3/D3.ql" : ql .ClassTester (class_name = "D3" ),
544+ "D4/D4.ql" : ql .ClassTester (class_name = "D4" ),
545+ }
546+
547+
548+ def test_test_class_hierarchy_uncollapse_at_final (opts , generate_tests ):
549+ for d in ("Base" , "D3" ):
550+ write (opts .ql_test_output / d / "test.swift" )
551+ assert generate_tests ([
552+ schema .Class ("Base" , derived = {"D1" , "D2" }, pragmas = ["foo" , "qltest_collapse_hierarchy" ]),
553+ schema .Class ("D1" , bases = {"Base" }, properties = [schema .SingleProperty ("x" , "string" )]),
554+ schema .Class ("D2" , bases = {"Base" }, derived = {"D3" }),
555+ schema .Class ("D3" , bases = {"D2" }, pragmas = ["qltest_uncollapse_hierarchy" , "bar" ]),
556+ ]) == {
557+ "Base/Base.ql" : ql .ClassTester (class_name = "Base" ),
558+ "D3/D3.ql" : ql .ClassTester (class_name = "D3" ),
559+ }
560+
561+
520562if __name__ == '__main__' :
521563 sys .exit (pytest .main ([__file__ ] + sys .argv [1 :]))
0 commit comments