pre-commit-hooks/tests/sort_python_imports_test.py

45 lines
1.3 KiB
Python

from __future__ import absolute_import
from __future__ import unicode_literals
from sys import stdout
import pytest
from pre_commit_hooks.sort_python_imports import main
def write_file(filename, contents):
with open(filename, 'w') as file_obj:
file_obj.write(contents)
@pytest.fixture
def tmpfiles(tmpdir):
write_file(tmpdir.join('correct_1.py').strpath, 'import json\nimport sys\n')
write_file(tmpdir.join('incorrect_1.py').strpath, 'import sys\n\n\nimport json\n')
write_file(tmpdir.join('incorrect_2.py').strpath, 'import sys\n\n\nimport json\n')
return tmpdir
def test_sort(tmpfiles):
assert main([tmpfiles.join('correct_1.py').strpath]) == 0
assert main([tmpfiles.join('incorrect_1.py').strpath]) == 1
assert main([tmpfiles.join('incorrect_2.py').strpath, '--check-only']) == 1
assert main([tmpfiles.join('incorrect_2.py').strpath, '--silent-overwrite']) == 0
def test_sort_with_diff(tmpfiles):
filename = tmpfiles.join('incorrect_1.py').strpath
main(['--diff', '--check-only', filename])
stdout.seek(0)
lines = stdout.read().decode("utf-8").splitlines()
# Skip diff header
lines = "\n".join(lines[4:])
assert lines == (
'+import json\n'
' import sys\n'
'-\n'
'-\n'
'-import json'
)