|
4 | 4 | # ---------------------------------------------------------------------------------------------
|
5 | 5 |
|
6 | 6 | # pylint: disable=invalid-name,unused-variable
|
| 7 | +import re |
| 8 | +import sys |
| 9 | + |
7 | 10 | from mock import MagicMock
|
8 | 11 | import pylint.testutils
|
| 12 | +import pytest |
| 13 | + |
9 | 14 | from pylintfileheader.file_header_checker import FileHeaderChecker
|
10 | 15 |
|
11 | 16 |
|
@@ -71,13 +76,49 @@ class TestFileHeaderCheckerNoConfig(pylint.testutils.CheckerTestCase):
|
71 | 76 | def test_no_message_added(self):
|
72 | 77 | """When the `file-header` option is not set, no message should be added."""
|
73 | 78 |
|
74 |
| - self.checker.config.file_header = None |
75 | 79 | node_mock = MagicMock()
|
76 | 80 | node_mock.stream.return_value.__enter__.return_value.read.return_value.decode.return_value = '# Invalid\n# Header'
|
77 | 81 | with self.assertNoMessages():
|
78 | 82 | self.checker.process_module(node_mock)
|
79 | 83 |
|
80 | 84 |
|
81 |
| -class TestFileHeaderCheckerPath(TestFileHeaderChecker): |
| 85 | +class TestFileHeaderCheckerPathMain(TestFileHeaderChecker): |
82 | 86 | CHECKER_CLASS = FileHeaderChecker
|
83 | 87 | CONFIG = {'file_header_path': 'pylintfileheadertest/header.txt'}
|
| 88 | + |
| 89 | + |
| 90 | +class TestFileHeaderCheckerPathExtra: |
| 91 | + CHECKER_CLASS = FileHeaderChecker |
| 92 | + |
| 93 | + def get_checker(self, config): |
| 94 | + linter = pylint.testutils.UnittestLinter() |
| 95 | + checker = self.CHECKER_CLASS(linter) |
| 96 | + for key, value in config.items(): |
| 97 | + setattr(checker.config, key, value) |
| 98 | + return checker |
| 99 | + |
| 100 | + def test_incorrect_regex(self): |
| 101 | + with pytest.raises(re.error): |
| 102 | + self.get_checker({ |
| 103 | + 'file_header': '.+)', |
| 104 | + }).open() |
| 105 | + |
| 106 | + def test_wrong_path(self): |
| 107 | + if sys.version_info[0] < 3: |
| 108 | + excp = IOError |
| 109 | + else: |
| 110 | + excp = FileNotFoundError |
| 111 | + |
| 112 | + with pytest.raises(excp): |
| 113 | + self.get_checker({ |
| 114 | + 'file_header_path': 'foo-bar.txt', |
| 115 | + }).open() |
| 116 | + |
| 117 | + def test_both_options(self): |
| 118 | + # no error expected since the file_header is used |
| 119 | + checker = self.get_checker({ |
| 120 | + 'file_header': '# Valid\n# Header', |
| 121 | + 'file_header_path': 'foo-bar.txt', |
| 122 | + }) |
| 123 | + checker.open() |
| 124 | + assert checker.header == '# Valid\n# Header' |
0 commit comments