コード例 #1
0
def test_assignment_not_counted_as_reference(git_dir, capsys):
    git_dir.join('f.py').write('x = 1')
    git_dir.join('g.py').write('import f\nf.x = 2')
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'x is never read, defined in f.py:1\n'
コード例 #2
0
def test_ignore_unused_arguments_stubs(git_dir):
    git_dir.join('f.py').write(
        'import abc\n'
        'from typing import overload\n'
        'class C:\n'
        '    @abc.abstractmethod\n'
        '    def func(self, arg1):\n'
        '        pass\n'
        'def func2(arg2):\n'
        '    pass\n'
        'def func3(arg3):\n'
        '    pass\n'
        '@overload\n'
        'def func4(arg4):\n'
        '    ...\n'
        'def func5(arg5):\n'
        '    """docstring but trivial"""\n'
        'def func6(arg6):\n'
        '    raise NotImplementedError\n'
        'def func7(arg7):\n'
        '    raise NotImplementedError()\n'
        'def func8(arg8):\n'
        '    """docstring plus raise"""\n'
        '    raise NotImplementedError()\n'
        'def func9(arg9):\n'
        '    raise AssertionError("unreachable")\n'
        'C.func, func2, func3, func4, func5, func6, func7, func8, func9\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #3
0
def test_ignored_arguments(git_dir):
    git_dir.join('f.py').write(
        'class C:\n'
        '    @classmethod\n'
        '    def f(cls): return 1\n'  # allow conventional `cls` method
        'C.f', )
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #4
0
def test_setup_cfg_entry_points_marked_as_used(git_dir):
    git_dir.join('setup.cfg').write(
        '[options.entry_points]\n'
        'console_scripts=\n'
        '    X=x:main\n', )
    git_dir.join('x.py').write('def main(): ...')
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #5
0
def test_setup_py_entrypoints_mark_as_used(git_dir, capsys):
    git_dir.join('setup.py').write(
        'from setuptools import setup\n'
        'setup(name="x", entry_points={"console_scripts": ["X=x:main"]})\n', )
    git_dir.join('x.py').write('def main(): ...')
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
    assert not any(capsys.readouterr())
コード例 #6
0
def test_partially_disabled(git_dir, capsys):
    git_dir.join('f.py').write('x = 1\n'
                               'x = 1  # dead: disable\n'
                               'x = 1\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'x is never read, defined in f.py:1, f.py:3\n'
コード例 #7
0
def test_unused_argument(git_dir, capsys):
    git_dir.join('f.py').write('def f(a, *b, c, **d): return 1\nf')
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == ('a is never read, defined in f.py:1\n'
                   'b is never read, defined in f.py:1\n'
                   'c is never read, defined in f.py:1\n'
                   'd is never read, defined in f.py:1\n')
コード例 #8
0
def test_unused_posonly_argument(git_dir, capsys):  # pragma: >=3.8 cover
    git_dir.join('f.py').write(
        'def f(unused, /):\n'
        '    return 1\n'
        'print(f)\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'unused is never read, defined in f.py:1\n'
コード例 #9
0
def test_only_referenced_in_tests(git_dir, capsys):
    git_dir.join('f.py').write('x = y = 1\n')
    git_dir.join('tests').ensure_dir().join('f_test.py').write(
        'from f import x, y\n'
        'def test(): assert x == 1\n'
        'class Test:\n'
        '   suite = "unit"\n'
        '   def test(self): assert y == 1\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == ('x is only referenced in tests, defined in f.py:1\n'
                   'y is only referenced in tests, defined in f.py:1\n')
コード例 #10
0
def test_is_marked_as_used(git_dir, capsys, s):
    git_dir.join('f.py').write(s)
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
    assert not any(capsys.readouterr())
コード例 #11
0
def test_setup_cfg_without_attribute_entry_point(git_dir):
    git_dir.join('setup.cfg').write(
        '[options.entry_points]\n'
        '    pip-custom-platform = pip_custom_platform.pymonkey\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #12
0
def test_setup_cfg_without_entry_points(git_dir):
    git_dir.join('setup.cfg').write('[wheel]\n' 'universal = 1\n', )
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #13
0
def test_using_an_argument(git_dir):
    git_dir.join('f.py').write('def f(g): return g\nf')
    subprocess.check_call(('git', 'add', '.'))
    assert not dead.main(())
コード例 #14
0
def test_unused_argument_in_scope(git_dir, capsys):
    git_dir.join('f.py').write('def f(g): return 1\ndef g(): pass\ng\nf\n')
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'g is never read, defined in f.py:1\n'
コード例 #15
0
def test_never_referenced(git_dir, capsys):
    git_dir.join('f.py').write('x = 1')
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'x is never read, defined in f.py:1\n'
コード例 #16
0
def test_deleted_file_dont_raise_error(git_dir):
    module = git_dir.join('test-module.py')
    module.write('print(1)')
    subprocess.check_call(('git', 'add', '.'))
    module.remove()
    assert not dead.main(())
コード例 #17
0
def test_unused_dead_disable_comment(git_dir, capsys):
    git_dir.join('f.py').write('x = 1  # dead: disable\nprint(x)\n')
    subprocess.check_call(('git', 'add', '.'))
    assert dead.main(())
    out, _ = capsys.readouterr()
    assert out == 'f.py:1: unused `# dead: disable`\n'