1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
from vulture import core
dc = core.DEFAULT_CONFIDENCE
def check_min_confidence(code, min_confidence, expected):
v = core.Vulture(verbose=True)
v.scan(code)
detected = {
item.name: item.confidence
for item in v.get_unused_code(min_confidence=min_confidence)
}
assert detected == expected
def test_confidence_import():
code = """\
import foo
"""
check_min_confidence(code, 50, {"foo": 90})
check_min_confidence(code, 100, {})
def test_confidence_unreachable():
code = """\
def foo():
return
bar()
foo()
"""
check_min_confidence(code, 50, {"return": 100})
check_min_confidence(code, 100, {"return": 100})
def test_function_arg():
code = """\
def foo(a):
b = 3
foo(5)
"""
check_min_confidence(code, 50, {"a": 100, "b": dc})
check_min_confidence(code, dc, {"a": 100, "b": dc})
check_min_confidence(code, 100, {"a": 100})
def test_confidence_class():
code = """\
class Foo:
pass
"""
check_min_confidence(code, 50, {"Foo": dc})
check_min_confidence(code, 100, {})
def test_confidence_attr():
code = "A.b = 'something'"
check_min_confidence(code, 50, {"b": dc})
check_min_confidence(code, 100, {})
def test_confidence_props():
code = """\
class Foo:
@property
def some_prop():
pass
Foo()
"""
check_min_confidence(code, 50, {"some_prop": dc})
check_min_confidence(code, 100, {})
def test_confidence_async_def():
code = """\
async def foo():
if bar():
pass
else:
print("Else")
"""
check_min_confidence(code, 50, {"foo": dc})
check_min_confidence(code, 75, {})
|