mirror of
https://github.com/mandiant/capa.git
synced 2026-04-28 11:53:20 -07:00
fix: address Optional member access and type mismatch in tests (chunk 6)
- test_binexport_accessors.py: type: ignore on .expression accesses guarded by test assertions - test_freeze_dynamic.py: assert isinstance DynamicFeatureExtractor before compare_extractors - test_binja_features.py: type: ignore on binaryninja guarded by skipif decorator
This commit is contained in:
committed by
Willi Ballenthin
parent
2b536e2f53
commit
89a365fa3d
@@ -523,18 +523,18 @@ def test_pattern_matching():
|
||||
|
||||
# 0x210184: ldrb w2, [x0, x1]
|
||||
# query: ldrb reg0, [reg1(not-stack), reg2] ; capture reg2"
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210184).expression.symbol == "x1"
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210184).expression.symbol == "x1"
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210184).expression.symbol == "x1" # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210184).expression.symbol == "x1" # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
# 0x210198: mov x2, x1
|
||||
# query: mov reg0, reg1 ; capture reg0"),
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210198).expression.symbol == "x2"
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210198).expression.symbol == "x2"
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210198).expression.symbol == "x2" # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210198).expression.symbol == "x2" # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
# 0x210190: add x1, x1, 0x1
|
||||
# query: add reg, reg, #int ; capture #int
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210190).expression.immediate == 1
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210190).expression.immediate == 1
|
||||
assert match_address(BE2_EXTRACTOR, queries, 0x210190).expression.immediate == 1 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR, queries, 0x210190).expression.immediate == 1 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
|
||||
BE2_EXTRACTOR_687 = fixtures.get_binexport_extractor(
|
||||
@@ -553,8 +553,8 @@ def test_pattern_matching_exclamation():
|
||||
# note this captures the sp
|
||||
# 0x107918: stp x20, x19, [sp,0xFFFFFFFFFFFFFFE0]!
|
||||
# query: stp reg, reg, [reg, #int]! ; capture #int
|
||||
assert match_address(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0
|
||||
assert match_address(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
|
||||
def test_pattern_matching_stack():
|
||||
@@ -566,8 +566,8 @@ def test_pattern_matching_stack():
|
||||
# compare this with the test above (exclamation)
|
||||
# 0x107918: stp x20, x19, [sp, 0xFFFFFFFFFFFFFFE0]!
|
||||
# query: stp reg, reg, [reg(stack), #int]! ; capture #int
|
||||
assert match_address(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0
|
||||
assert match_address(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_687, queries, 0x107918).expression.immediate == 0xFFFFFFFFFFFFFFE0 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
|
||||
def test_pattern_matching_not_stack():
|
||||
@@ -593,5 +593,5 @@ def test_pattern_matching_x86():
|
||||
|
||||
# 0x4018c0: LEA ECX, [EBX+0x2]
|
||||
# query: cmp|lea reg, [reg(not-stack) + #int0] ; capture #int0
|
||||
assert match_address(BE2_EXTRACTOR_MIMI, queries, 0x4018C0).expression.immediate == 2
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_MIMI, queries, 0x4018C0).expression.immediate == 2
|
||||
assert match_address(BE2_EXTRACTOR_MIMI, queries, 0x4018C0).expression.immediate == 2 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
assert match_address_with_be2(BE2_EXTRACTOR_MIMI, queries, 0x4018C0).expression.immediate == 2 # type: ignore[union-attr] # test assertion; match returns non-None for these addresses
|
||||
|
||||
@@ -69,5 +69,5 @@ def test_standalone_binja_backend():
|
||||
|
||||
@pytest.mark.skipif(binja_present is False, reason="Skip binja tests if the binaryninja Python API is not installed")
|
||||
def test_binja_version():
|
||||
version = binaryninja.core_version_info()
|
||||
version = binaryninja.core_version_info() # type: ignore[possibly-undefined] # guarded by skipif binja_present
|
||||
assert (version.major, version.minor) >= (5, 3)
|
||||
|
||||
@@ -145,6 +145,7 @@ def test_freeze_str_roundtrip():
|
||||
load = capa.features.freeze.loads
|
||||
dump = capa.features.freeze.dumps
|
||||
reanimated = load(dump(EXTRACTOR))
|
||||
assert isinstance(reanimated, DynamicFeatureExtractor)
|
||||
compare_extractors(EXTRACTOR, reanimated)
|
||||
|
||||
|
||||
@@ -152,6 +153,7 @@ def test_freeze_bytes_roundtrip():
|
||||
load = capa.features.freeze.load
|
||||
dump = capa.features.freeze.dump
|
||||
reanimated = load(dump(EXTRACTOR))
|
||||
assert isinstance(reanimated, DynamicFeatureExtractor)
|
||||
compare_extractors(EXTRACTOR, reanimated)
|
||||
|
||||
|
||||
@@ -163,5 +165,6 @@ def test_freeze_load_sample(tmpdir):
|
||||
Path(o.strpath).write_bytes(capa.features.freeze.dump(extractor))
|
||||
|
||||
null_extractor = capa.features.freeze.load(Path(o.strpath).read_bytes())
|
||||
assert isinstance(null_extractor, DynamicFeatureExtractor)
|
||||
|
||||
compare_extractors(extractor, null_extractor)
|
||||
|
||||
Reference in New Issue
Block a user