summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAarni Koskela <akx@iki.fi>2019-01-25 16:20:09 +0200
committerAarni Koskela <akx@iki.fi>2019-01-25 16:59:10 +0200
commit4ea99189d8c561a535f08e850c13cd1cd0d30fd2 (patch)
tree5a64329792d8ca47d07e19cb747b07c671391c40
parent55cfc6a589b68dff0e8eb01ec31506f9cecad299 (diff)
downloadisort-4ea99189d8c561a535f08e850c13cd1cd0d30fd2.tar.gz
Add a test for the command line
-rw-r--r--isort/main.py8
-rw-r--r--test_isort.py19
2 files changed, 23 insertions, 4 deletions
diff --git a/isort/main.py b/isort/main.py
index 9356c6a3..28e8974a 100644
--- a/isort/main.py
+++ b/isort/main.py
@@ -172,7 +172,7 @@ class ISortCommand(setuptools.Command):
exit(1)
-def create_parser():
+def parse_args(argv=None):
parser = argparse.ArgumentParser(description='Sort Python import definitions alphabetically '
'within logical sections.')
inline_args_group = parser.add_mutually_exclusive_group()
@@ -287,14 +287,14 @@ def create_parser():
help='Tells isort to apply changes recursively without asking')
parser.add_argument('files', nargs='*', help='One or more Python source files that need their imports sorted.')
- arguments = {key: value for key, value in vars(parser.parse_args()).items() if value}
+ arguments = {key: value for key, value in vars(parser.parse_args(argv)).items() if value}
if 'dont_order_by_type' in arguments:
arguments['order_by_type'] = False
return arguments
-def main():
- arguments = create_parser()
+def main(argv=None):
+ arguments = parse_args(argv)
if arguments.get('show_version'):
print(INTRO)
return
diff --git a/test_isort.py b/test_isort.py
index ce889628..3cb3070a 100644
--- a/test_isort.py
+++ b/test_isort.py
@@ -2596,3 +2596,22 @@ def test_monkey_patched_urllib():
# Previous versions of isort monkey patched urllib which caused unusual
# importing for other projects.
from urllib import quote # noqa: F401
+
+
+def test_argument_parsing():
+ from isort.main import parse_args
+ args = parse_args(['-dt', '-t', 'foo', '--skip=bar', 'baz.py'])
+ assert args['order_by_type'] is False
+ assert args['force_to_top'] == ['foo']
+ assert args['skip'] == ['bar']
+ assert args['files'] == ['baz.py']
+
+
+def test_command_line(tmpdir, capsys):
+ from isort.main import main
+ tmpdir.join("file.py").write("import re\nimport os\n\nimport contextlib\n\n\nimport isort")
+ main(["-rc", str(tmpdir)])
+ assert tmpdir.join("file.py").read() == "import contextlib\nimport os\nimport re\n\nimport isort\n"
+ out, err = capsys.readouterr()
+ assert not err
+ assert str(tmpdir.join("file.py")) in out # it informs us about fixing