mirror of
https://github.com/github/codeql.git
synced 2026-05-03 04:39:29 +02:00
Codegen: allow annotations to replace bases and drop fields
This commit is contained in:
@@ -884,6 +884,56 @@ def test_annotate_not_underscore():
|
||||
"""
|
||||
|
||||
|
||||
def test_annotate_replace_bases():
|
||||
@load
|
||||
class data:
|
||||
class Root:
|
||||
pass
|
||||
|
||||
class A(Root):
|
||||
pass
|
||||
|
||||
class B(Root):
|
||||
pass
|
||||
|
||||
class C(B):
|
||||
pass
|
||||
|
||||
class Derived(A, B):
|
||||
pass
|
||||
|
||||
@defs.annotate(Derived, replace_bases={B: C})
|
||||
class _:
|
||||
pass
|
||||
assert data.classes == {
|
||||
"Root": schema.Class("Root", derived={"A", "B"}),
|
||||
"A": schema.Class("A", bases=["Root"], derived={"Derived"}),
|
||||
"B": schema.Class("B", bases=["Root"], derived={"C"}),
|
||||
"C": schema.Class("C", bases=["B"], derived={"Derived"}),
|
||||
"Derived": schema.Class("Derived", bases=["A", "C"]),
|
||||
}
|
||||
|
||||
|
||||
def test_annotate_drop_field():
|
||||
@load
|
||||
class data:
|
||||
class Root:
|
||||
x: defs.int
|
||||
y: defs.string
|
||||
z: defs.boolean
|
||||
|
||||
@defs.annotate(Root)
|
||||
class _:
|
||||
y: defs.drop
|
||||
|
||||
assert data.classes == {
|
||||
"Root": schema.Class("Root", properties=[
|
||||
schema.SingleProperty("x", "int"),
|
||||
schema.SingleProperty("z", "boolean"),
|
||||
]),
|
||||
}
|
||||
|
||||
|
||||
def test_test_with_unknown_string():
|
||||
with pytest.raises(schema.Error):
|
||||
@load
|
||||
|
||||
Reference in New Issue
Block a user