Esempio n. 1
0
def test_success_messages_are_printed_on_stderr(tmpdir, capsys):
    f = tmpdir.join('f.py')
    f.write('import os,sys')
    main((str(f), ))
    out, err = capsys.readouterr()
    assert err == f'Reordering imports in {f}\n'
    assert out == ''
Esempio n. 2
0
def test_warning_pythonpath(tmpdir, capsys):
    f = tmpdir.join('f.py').ensure()
    with mock.patch.dict(os.environ, {'PYTHONPATH': str(tmpdir)}):
        main((str(f), ))
    out, err = capsys.readouterr()
    assert err == '$PYTHONPATH set, import order may be unexpected\n'
    assert out == ''
def test_separate_from_import_integration(in_tmpdir):
    in_tmpdir.join('foo/__init__.py').ensure()
    in_tmpdir.join('foo/bar/__init__.py').ensure()

    in_tmpdir.join('foo/foo.py').write(
        'import thirdparty\n'
        'import foo.bar\n'
        'from foo import bar\n'
        'from . import bar\n',
    )

    main(('foo/foo.py',))
    assert in_tmpdir.join('foo/foo.py').read() == (
        'import thirdparty\n'
        '\n'
        'import foo.bar\n'
        'from . import bar\n'
        'from foo import bar\n'
    )

    main(('foo/foo.py', '--separate-from-import'))
    assert in_tmpdir.join('foo/foo.py').read() == (
        'import thirdparty\n'
        '\n'
        'import foo.bar\n'
        '\n'
        'from . import bar\n'
        'from foo import bar\n'
    )
def test_py_options_io(tmpdir, opt, expected):
    f = tmpdir.join('f.py')
    src = 'from io import open\n'
    f.write(src)
    main((str(f), opt))
    ret = f.read()
    assert ret == expected
Esempio n. 5
0
def test_py_options(tmpdir, futures, opt, expected):
    f = tmpdir.join('f.py')
    src = 'from __future__ import {}'.format(', '.join(futures))
    f.write(src)
    main((str(f), opt))
    ret = {l[len('from __future__ import '):].strip() for l in f.readlines()}
    assert ret == expected
Esempio n. 6
0
def test_additional_directories_integration(in_tmpdir):
    if '' in sys.path:  # pragma: no cover (depends on run environment)
        sys.path.remove('')

    # Intentionally avoiding 'tests' and 'testing' because those would clash
    # with the names of this project
    in_tmpdir.join('nottests/nottesting/__init__.py').ensure()

    in_tmpdir.join('foo.py').write(
        'import thirdparty\n'
        'import nottests\n'
        'import nottesting\n', )

    # Without the new option
    main(('foo.py', ))
    assert in_tmpdir.join('foo.py').read() == ('import nottesting\n'
                                               'import thirdparty\n'
                                               '\n'
                                               'import nottests\n')

    # With the new option
    main(('foo.py', '--application-directories', '.:nottests'))
    assert in_tmpdir.join('foo.py').read() == ('import thirdparty\n'
                                               '\n'
                                               'import nottesting\n'
                                               'import nottests\n')
Esempio n. 7
0
def test_unreadable_files_print_filename(tmpdir, capsys):
    f = tmpdir.join('f.py')
    f.write_binary(b'\x98\xef\x12...')
    filename = str(f)
    with pytest.raises(UnicodeDecodeError):
        main([filename])
    _, err = capsys.readouterr()
    assert filename in err
Esempio n. 8
0
def test_py_options(tmpdir, opt, expected):
    f = tmpdir.join('f.py')
    f.write(
        'from __future__ import unicode_literals\n'
        'from __future__ import with_statement\n\n'
        'from io import open\n', )
    main((str(f), opt))
    assert f.read() == expected
Esempio n. 9
0
def test_invalid_add_remove_syntaxes(tmpdir, capsys, opt, s):
    f = tmpdir.join('f.py')
    f.write('import os\n')
    with pytest.raises(SystemExit) as excinfo:
        main((str(f), opt, s))
    retc, = excinfo.value.args
    assert retc
    out = ''.join(capsys.readouterr())
    assert f'{opt}: expected import: {s!r}' in out
Esempio n. 10
0
def test_replace_module_invalid_arg(tmpdir, capsys, s):
    f = tmpdir.join('f.py')
    f.write('import os\n')
    with pytest.raises(SystemExit) as excinfo:
        main((str(f), '--replace-import', s))
    retc, = excinfo.value.args
    assert retc
    out = ''.join(capsys.readouterr())
    expected = (f'--replace-import: expected `orig.mod=new.mod` or '
                f'`orig.mod=new.mod:attr`: {s!r}')
    assert expected in out
Esempio n. 11
0
def test_integration_main(s, expected, tmpdir):
    test_file = tmpdir.join('test.py')
    test_file.write(s)

    # Check return value with --diff-only
    retv_diff = main((str(test_file), '--diff-only'))
    assert retv_diff == int(s != expected)

    retv = main((str(test_file), ))
    # Check return value
    assert retv == int(s != expected)

    # Check the contents rewritten
    assert test_file.read() == expected
Esempio n. 12
0
def test_main_stdin_fix_basic(capsys):
    input_b = b'import sys\nimport os\n'
    stdin = io.TextIOWrapper(io.BytesIO(input_b), 'UTF-8')
    with mock.patch.object(sys, 'stdin', stdin):
        assert main(('-', )) == 1
    out, err = capsys.readouterr()
    assert out == 'import os\nimport sys\n'
def test_replace_module(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from six.moves.urllib.parse import quote_plus\n')
    assert main((
        str(f), '--replace-import', 'six.moves.urllib.parse=urllib.parse',
    ))
    assert f.read() == 'from urllib.parse import quote_plus\n'
Esempio n. 14
0
def test_main_stdin_diff_only_no_changes(capsys):
    input_b = b'import os\nimport sys\n'
    stdin = io.TextIOWrapper(io.BytesIO(input_b), 'UTF-8')
    with mock.patch.object(sys, 'stdin', stdin):
        assert main(('-', '--diff-only')) == 0
    out, err = capsys.readouterr()
    assert out == ''
Esempio n. 15
0
def test_unreadable_files_print_filename(tmpdir, capsys):
    f = tmpdir.join('f.py')
    f.write_binary(b'\x98\xef\x12...')
    filename = str(f)
    assert main([filename])
    _, err = capsys.readouterr()
    assert filename in err
Esempio n. 16
0
def test_integration_main_stdout(capsys):
    ret = main(('--print-only', 'test_data/inputs/needs_reordering.py'))
    assert ret == 1
    out, err = capsys.readouterr()
    assert out == 'import os\n\nimport six\n\nimport reorder_python_imports\n'
    assert err == ('!!! --print-only is deprecated\n'
                   '!!! maybe use `-` instead?\n'
                   '==> test_data/inputs/needs_reordering.py <==\n')
Esempio n. 17
0
def test_does_not_reorder_with_diff_only(in_tmpdir, capsys):
    test_file = in_tmpdir.join('test.py')
    test_file.write('import sys\nimport os\n')

    retv = main((str(test_file), '--diff-only'))
    assert retv == 1
    assert test_file.read() == 'import sys\nimport os\n'
    patch, _ = capsys.readouterr()
    _apply_patch(patch)
    assert test_file.read() == 'import os\nimport sys\n'
Esempio n. 18
0
def test_integration_main(filename, tmpdir):
    with io.open(os.path.join('test_data/inputs', filename)) as f:
        input_contents = f.read()
    with io.open(os.path.join('test_data/outputs', filename)) as f:
        expected = f.read()

    test_file = tmpdir.join('test.py')
    test_file.write(input_contents)

    # Check return value with --diff-only
    retv_diff = main((str(test_file), '--diff-only'))
    assert retv_diff == int(input_contents != expected)

    retv = main((str(test_file), ))
    # Check return value
    assert retv == int(input_contents != expected)

    # Check the contents rewritten
    assert test_file.read() == expected
Esempio n. 19
0
def test_main_stdin_diff_only(tmpdir, capsys):
    tf = tmpdir.join('t.py')
    input_b = b'import sys\nimport os\n'
    tf.write(input_b)
    stdin = io.TextIOWrapper(io.BytesIO(input_b), 'UTF-8')
    with mock.patch.object(sys, 'stdin', stdin):
        assert main(('-', '--diff-only')) == 1
    out, _ = capsys.readouterr()
    _apply_patch(out, origfile=tf)
    assert tf.read() == 'import os\nimport sys\n'
Esempio n. 20
0
def test_integration_main_stdout(tmpdir, capsys):
    f = tmpdir.join('f.py')
    f.write('import reorder_python_imports\n' 'import os\n' 'import six\n', )
    ret = main(('--print-only', f.strpath))
    assert ret == 1
    out, err = capsys.readouterr()
    assert out == ('import os\n\n'
                   'import six\n\n'
                   'import reorder_python_imports\n')
    assert err == (f'!!! --print-only is deprecated\n'
                   f'!!! maybe use `-` instead?\n'
                   f'==> {f} <==\n')
Esempio n. 21
0
def test_patch_multiple_files_no_eol(in_tmpdir, capsys):
    test1file = in_tmpdir.join('test1.py')
    test2file = in_tmpdir.join('test2.py')
    # Intentionally no EOL
    test1file.write('import sys\nimport os')
    test2file.write('import sys\nimport os\n')

    ret = main((str(test1file), str(test2file), '--diff-only'))
    assert ret == 1
    patch, _ = capsys.readouterr()
    _apply_patch(patch)
    assert test1file.read() == 'import os\nimport sys\n'
    assert test2file.read() == 'import os\nimport sys\n'
Esempio n. 22
0
def test_can_add_multiple_imports_at_once(tmpdir):
    f = tmpdir.join('f.py')
    f.write('import argparse')
    assert main((str(f), '--add-import', 'import os, sys'))
    assert f.read() == 'import argparse\nimport os\nimport sys\n'
Esempio n. 23
0
def test_py38_plus_rewrites_mypy_extensions_import(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from mypy_extensions import TypedDict\n')
    assert main((str(f), '--py38-plus'))
    assert f.read() == 'from typing import TypedDict\n'
Esempio n. 24
0
def test_py3_plus_removes_builtins_star_import(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from builtins import *')
    assert main((str(f), '--py3-plus'))
    assert f.read() == ''
Esempio n. 25
0
def test_py37_plus_rewrites_typing_extensions_import(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from typing_extensions import Deque\n')
    assert main((str(f), '--py37-plus'))
    assert f.read() == 'from typing import Deque\n'
Esempio n. 26
0
def test_py3_plus_removes_python_future_imports(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from builtins import str\n')
    assert main((str(f), '--py3-plus'))
    assert f.read() == ''
Esempio n. 27
0
def test_py3_plus_does_not_rewrite_mock_version_info(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from mock import version_info\n')
    assert not main((str(f), '--py3-plus'))
    assert f.read() == 'from mock import version_info\n'
Esempio n. 28
0
def test_py3_plus_does_not_unsix_moves_urllib(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from six.moves import urllib\n')
    assert not main((str(f), '--py3-plus'))
    assert f.read() == 'from six.moves import urllib\n'
Esempio n. 29
0
def test_py3_plus_rewrites_absolute_mock_to_relative_unittest_mock(tmpdir):
    f = tmpdir.join('f.py')
    f.write('import mock\n')
    assert main((str(f), '--py3-plus'))
    assert f.read() == 'from unittest import mock\n'
Esempio n. 30
0
def test_py3_plus_rewrites_mock_mock(tmpdir):
    f = tmpdir.join('f.py')
    f.write('from mock.mock import ANY\n')
    assert main((str(f), '--py3-plus'))
    assert f.read() == 'from unittest.mock import ANY\n'