Skip to content

Commit f0945df

Browse files
author
Piotr Kasprzyk
committed
read header file as binary
1 parent 4fc58cc commit f0945df

File tree

2 files changed

+11
-23
lines changed

2 files changed

+11
-23
lines changed

pylintfileheader/file_header_checker.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# Copyright (c) Leo Hanisch. All rights reserved.
33
# Licensed under the MIT License. See LICENSE.txt in the project root for license information.
44
# ---------------------------------------------------------------------------------------------
5-
import os
65
import re
76
import sys
87

@@ -65,8 +64,8 @@ def __init__(self, linter=None):
6564
def open(self):
6665
self.header = self.config.file_header
6766
if not self.header and self.config.file_header_path:
68-
with open(self.config.file_header_path, 'r', encoding='utf-8') as header_file:
69-
self.header = header_file.read()
67+
with open(self.config.file_header_path, 'rb') as header_file:
68+
self.header = header_file.read().decode('utf-8')
7069

7170
if self.header:
7271
if sys.version_info[0] < 3:
@@ -84,7 +83,7 @@ def process_module(self, node):
8483
content = None
8584
with node.stream() as stream:
8685
# Explicit decoding required by python 3
87-
content = stream.read().decode('utf-8').replace(os.linesep, '\n')
86+
content = stream.read().decode('utf-8')
8887

8988
if self.config.file_header_ignore_empty_files and not content:
9089
return

pylintfileheadertest/file_header_checker_test.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
# ---------------------------------------------------------------------------------------------
55

66
# pylint: disable=invalid-name,unused-variable
7-
import os
87
import re
98
import sys
109

@@ -17,13 +16,14 @@
1716

1817
class TestFileHeaderChecker(pylint.testutils.CheckerTestCase):
1918
CHECKER_CLASS = FileHeaderChecker
20-
CONFIG = {'file_header': '# Valid\n# Header'}
19+
EXPECTED_HEADER = '# Valid\n# Header'
20+
CONFIG = {'file_header': EXPECTED_HEADER}
2121

2222
def test_valid_header_no_message_added(self):
2323
"""Test whether no message is added, when the file header is valid."""
2424

2525
node_mock = MagicMock()
26-
node_mock.stream.return_value.__enter__.return_value.read.return_value.decode.return_value = '# Valid\n# Header'
26+
node_mock.stream.return_value.__enter__.return_value.read.return_value.decode.return_value = self.EXPECTED_HEADER
2727
with self.assertNoMessages():
2828
self.checker.process_module(node_mock)
2929

@@ -35,7 +35,7 @@ def test_invalid_header_message_added(self):
3535
with self.assertAddsMessages(pylint.testutils.Message(
3636
msg_id='invalid-file-header',
3737
line=1,
38-
args='# Valid\n# Header')):
38+
args=self.EXPECTED_HEADER)):
3939
self.checker.process_module(node_mock)
4040

4141
def test_valid_header_not_at_top_message_added(self):
@@ -46,7 +46,7 @@ def test_valid_header_not_at_top_message_added(self):
4646
with self.assertAddsMessages(pylint.testutils.Message(
4747
msg_id='invalid-file-header',
4848
line=1,
49-
args='# Valid\n# Header')):
49+
args=self.EXPECTED_HEADER)):
5050
self.checker.process_module(node_mock)
5151

5252
def test_ignore_empty_files(self):
@@ -66,19 +66,7 @@ def test_do_not_ignore_empty_files(self):
6666
with self.assertAddsMessages(pylint.testutils.Message(
6767
msg_id='invalid-file-header',
6868
line=1,
69-
args='# Valid\n# Header')):
70-
self.checker.process_module(node_mock)
71-
72-
def test_valid_header_in_windows_format_file(self, monkeypatch):
73-
"""Test whether no message is added when the source file is in windows newline format."""
74-
75-
windows_linesep = '\r\n'
76-
monkeypatch.setattr(os, 'linesep', windows_linesep)
77-
node_mock = MagicMock()
78-
node_mock.stream.return_value.__enter__.return_value.read.return_value.decode.return_value = (
79-
'# Valid{newline}# Header{newline}print(42)'.format(newline=windows_linesep)
80-
)
81-
with self.assertNoMessages():
69+
args=self.EXPECTED_HEADER)):
8270
self.checker.process_module(node_mock)
8371

8472

@@ -100,8 +88,9 @@ class TestFileHeaderCheckerPathMain(TestFileHeaderChecker):
10088
CONFIG = {'file_header_path': 'pylintfileheadertest/header.txt'}
10189

10290

103-
class TestFileHeaderCheckerWindowsFormat(TestFileHeaderChecker):
91+
class TestFileHeaderCheckerPathWindows(TestFileHeaderChecker):
10492
CHECKER_CLASS = FileHeaderChecker
93+
EXPECTED_HEADER = '# Valid\r\n# Header'
10594
CONFIG = {'file_header_path': 'pylintfileheadertest/windows_header.txt'}
10695

10796

0 commit comments

Comments
 (0)