33
44import pytest
55
6- from pre_commit_hooks .trailing_whitespace_fixer import fix_trailing_whitespace
6+ from pre_commit_hooks .trailing_whitespace_fixer import main
77
88
99@pytest .mark .parametrize (
1616def test_fixes_trailing_whitespace (input_s , expected , tmpdir ):
1717 path = tmpdir .join ('file.txt' )
1818 path .write (input_s )
19- assert fix_trailing_whitespace ((path .strpath ,)) == 1
19+ assert main ((path .strpath ,)) == 1
2020 assert path .read () == expected
2121
2222
23+ def test_ok_no_newline_end_of_file (tmpdir ):
24+ filename = tmpdir .join ('f' )
25+ filename .write_binary (b'foo\n bar' )
26+ ret = main ((filename .strpath ,))
27+ assert filename .read_binary () == b'foo\n bar'
28+ assert ret == 0
29+
30+
2331def test_ok_with_dos_line_endings (tmpdir ):
2432 filename = tmpdir .join ('f' )
2533 filename .write_binary (b'foo\r \n bar\r \n baz\r \n ' )
26- ret = fix_trailing_whitespace ((filename .strpath ,))
34+ ret = main ((filename .strpath ,))
2735 assert filename .read_binary () == b'foo\r \n bar\r \n baz\r \n '
2836 assert ret == 0
2937
3038
3139def test_markdown_ok (tmpdir ):
3240 filename = tmpdir .join ('foo.md' )
3341 filename .write_binary (b'foo \n ' )
34- ret = fix_trailing_whitespace ((filename .strpath ,))
42+ ret = main ((filename .strpath ,))
3543 assert filename .read_binary () == b'foo \n '
3644 assert ret == 0
3745
3846
3947# filename, expected input, expected output
4048MD_TESTS_1 = (
41- ('foo.md' , 'foo \n bar \n ' , 'foo \n bar\n \n ' ),
49+ ('foo.md' , 'foo \n bar \n ' , 'foo \n bar\n ' ),
4250 ('bar.Markdown' , 'bar \n baz\t \n \t \n ' , 'bar \n baz\n \n ' ),
4351 ('.md' , 'baz \n quux \t \n \t \n ' , 'baz\n quux\n \n ' ),
4452 ('txt' , 'foo \n baz \n \t \n ' , 'foo\n baz\n \n ' ),
@@ -49,7 +57,7 @@ def test_markdown_ok(tmpdir):
4957def test_fixes_trailing_markdown_whitespace (filename , input_s , output , tmpdir ):
5058 path = tmpdir .join (filename )
5159 path .write (input_s )
52- ret = fix_trailing_whitespace ([path .strpath ])
60+ ret = main ([path .strpath ])
5361 assert ret == 1
5462 assert path .read () == output
5563
@@ -68,16 +76,14 @@ def test_fixes_trailing_markdown_whitespace(filename, input_s, output, tmpdir):
6876def test_markdown_linebreak_ext_opt (filename , input_s , output , tmpdir ):
6977 path = tmpdir .join (filename )
7078 path .write (input_s )
71- ret = fix_trailing_whitespace ((
72- '--markdown-linebreak-ext=TxT' , path .strpath ,
73- ))
79+ ret = main (('--markdown-linebreak-ext=TxT' , path .strpath ))
7480 assert ret == 1
7581 assert path .read () == output
7682
7783
7884# filename, expected input, expected output
7985MD_TESTS_3 = (
80- ('foo.baz' , 'foo \n bar \n ' , 'foo \n bar\n \n ' ),
86+ ('foo.baz' , 'foo \n bar \n ' , 'foo \n bar\n ' ),
8187 ('bar' , 'bar \n baz\t \n \t \n ' , 'bar \n baz\n \n ' ),
8288)
8389
@@ -87,17 +93,15 @@ def test_markdown_linebreak_ext_opt_all(filename, input_s, output, tmpdir):
8793 path = tmpdir .join (filename )
8894 path .write (input_s )
8995 # need to make sure filename is not treated as argument to option
90- ret = fix_trailing_whitespace ([
91- '--markdown-linebreak-ext=*' , path .strpath ,
92- ])
96+ ret = main (('--markdown-linebreak-ext=*' , path .strpath ))
9397 assert ret == 1
9498 assert path .read () == output
9599
96100
97101@pytest .mark .parametrize (('arg' ), ('--' , 'a.b' , 'a/b' ))
98102def test_markdown_linebreak_ext_badopt (arg ):
99103 with pytest .raises (SystemExit ) as excinfo :
100- fix_trailing_whitespace (['--markdown-linebreak-ext' , arg ])
104+ main (['--markdown-linebreak-ext' , arg ])
101105 assert excinfo .value .code == 2
102106
103107
@@ -112,19 +116,15 @@ def test_markdown_linebreak_ext_badopt(arg):
112116def test_no_markdown_linebreak_ext_opt (filename , input_s , output , tmpdir ):
113117 path = tmpdir .join (filename )
114118 path .write (input_s )
115- ret = fix_trailing_whitespace (['--no-markdown-linebreak-ext' , path .strpath ])
119+ ret = main (['--no-markdown-linebreak-ext' , path .strpath ])
116120 assert ret == 1
117121 assert path .read () == output
118122
119123
120- def test_returns_zero_for_no_changes ():
121- assert fix_trailing_whitespace ([__file__ ]) == 0
122-
123-
124124def test_preserve_non_utf8_file (tmpdir ):
125125 non_utf8_bytes_content = b'<a>\xe9 \n </a>\n '
126126 path = tmpdir .join ('file.txt' )
127127 path .write_binary (non_utf8_bytes_content )
128- ret = fix_trailing_whitespace ([path .strpath ])
128+ ret = main ([path .strpath ])
129129 assert ret == 1
130130 assert path .size () == (len (non_utf8_bytes_content ) - 1 )
0 commit comments