1+ from argparse import ArgumentError
2+
3+ import pytest
4+
5+ from pre_commit_hooks .file_contents_sorter import FAIL
6+ from pre_commit_hooks .file_contents_sorter import main
7+ from pre_commit_hooks .file_contents_sorter import parse_commandline_input
8+ from pre_commit_hooks .file_contents_sorter import PASS
9+ from pre_commit_hooks .file_contents_sorter import sort_file_contents
10+
11+
12+ def _n (* strs ):
13+ return b'\n ' .join (strs ) + '\n '
14+
15+
16+ # Input, expected return value, expected output
17+ TESTS = (
18+ (b'' , PASS , b'' ),
19+ (_n ('lonesome' ), PASS , _n ('lonesome' )),
20+ (b'missing_newline' , PASS , b'missing_newline' ),
21+ (_n ('alpha' , 'beta' ), PASS , _n ('alpha' , 'beta' )),
22+ (_n ('beta' , 'alpha' ), FAIL , _n ('alpha' , 'beta' )),
23+ (_n ('C' , 'c' ), PASS , _n ('C' , 'c' )),
24+ (_n ('c' , 'C' ), FAIL , _n ('C' , 'c' )),
25+ (_n ('mag ical ' , ' tre vor' ), FAIL , _n (' tre vor' , 'mag ical ' )),
26+ (_n ('@' , '-' , '_' , '#' ), FAIL , _n ('#' , '-' , '@' , '_' )),
27+ )
28+
29+
30+ @pytest .mark .parametrize (('input_s' , 'expected_retval' , 'output' ), TESTS )
31+ def test_integration (input_s , expected_retval , output , tmpdir ):
32+ path = tmpdir .join ('file.txt' )
33+ path .write_binary (input_s )
34+
35+ output_retval = main ([path .strpath ])
36+
37+ assert path .read_binary () == output
38+ assert output_retval == expected_retval
39+
40+
41+ def test_parse_commandline_input_errors_without_args ():
42+ with pytest .raises (SystemExit ):
43+ parse_commandline_input ([])
44+
45+ @pytest .mark .parametrize (
46+ ('filename_list' ),
47+ (
48+ ['filename1' ],
49+ ['filename1' , 'filename2' ],
50+ )
51+ )
52+ def test_parse_commandline_input_success (filename_list ):
53+ args = parse_commandline_input (filename_list )
54+ assert args .filenames == filename_list
0 commit comments