| from __future__ import absolute_import |
| from __future__ import unicode_literals |
| |
| import io |
| |
| import pytest |
| |
| from pre_commit_hooks.fix_encoding_pragma import fix_encoding_pragma |
| from pre_commit_hooks.fix_encoding_pragma import main |
| |
| |
| def test_integration_inserting_pragma(tmpdir): |
| file_path = tmpdir.join('foo.py').strpath |
| |
| with open(file_path, 'wb') as file_obj: |
| file_obj.write(b'import httplib\n') |
| |
| assert main([file_path]) == 1 |
| |
| with open(file_path, 'rb') as file_obj: |
| assert file_obj.read() == ( |
| b'# -*- coding: utf-8 -*-\n' |
| b'import httplib\n' |
| ) |
| |
| |
| def test_integration_ok(tmpdir): |
| file_path = tmpdir.join('foo.py').strpath |
| with open(file_path, 'wb') as file_obj: |
| file_obj.write(b'# -*- coding: utf-8 -*-\nx = 1\n') |
| assert main([file_path]) == 0 |
| |
| |
| @pytest.mark.parametrize( |
| 'input_str', |
| ( |
| b'', |
| b'# -*- coding: utf-8 -*-\n', |
| ( |
| b'#!/usr/bin/env python\n' |
| b'# -*- coding: utf-8 -*-\n' |
| b'foo = "bar"\n' |
| ), |
| ) |
| ) |
| def test_ok_inputs(input_str): |
| bytesio = io.BytesIO(input_str) |
| assert fix_encoding_pragma(bytesio) == 0 |
| bytesio.seek(0) |
| assert bytesio.read() == input_str |
| |
| |
| @pytest.mark.parametrize( |
| ('input_str', 'output'), |
| ( |
| ( |
| b'import httplib\n', |
| b'# -*- coding: utf-8 -*-\n' |
| b'import httplib\n', |
| ), |
| ( |
| b'#!/usr/bin/env python\n', |
| b'#!/usr/bin/env python\n' |
| b'# -*- coding: utf-8 -*-\n' |
| ), |
| ( |
| b'#coding=utf-8\n', |
| b'# -*- coding: utf-8 -*-\n' |
| ), |
| ( |
| b'#!/usr/bin/env python\n' |
| b'#coding=utf8\n', |
| b'#!/usr/bin/env python\n' |
| b'# -*- coding: utf-8 -*-\n', |
| ), |
| ) |
| ) |
| def test_not_ok_inputs(input_str, output): |
| bytesio = io.BytesIO(input_str) |
| assert fix_encoding_pragma(bytesio) == 1 |
| bytesio.seek(0) |
| assert bytesio.read() == output |