blob: 15b9f1977282a1242694d14e8cf184832ef812a6 [file] [log] [blame]
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
import pytest
from pre_commit_hooks.string_fixer import main
TESTS = (
# Base cases
(
"''",
"''",
0
),
(
'""',
"''",
1
),
(
r'"\'"',
r'"\'"',
0
),
(
r'"\""',
r'"\""',
0
),
(
r"'\"\"'",
r"'\"\"'",
0
),
# String somewhere in the line
(
'x = "foo"',
"x = 'foo'",
1
),
# Test escaped characters
(
r'"\'"',
r'"\'"',
0
),
# Docstring
(
'""" Foo """',
'""" Foo """',
0
),
# Fuck it, won't even try to fix
(
"""
x = " \\n
foo \\n
"\n
""",
"""
x = " \\n
foo \\n
"\n
""",
0
),
)
@pytest.mark.parametrize(('input_s', 'expected_output', 'expected_retval'), TESTS)
def test_rewrite(input_s, expected_output, expected_retval, tmpdir):
tmpfile = tmpdir.join('file.txt')
with open(tmpfile.strpath, 'w') as f:
f.write(input_s)
retval = main([tmpfile.strpath])
assert tmpfile.read() == expected_output
assert retval == expected_retval