Skip to content

Commit ea57557

Browse files
authored
Merge pull request #359 from nexB/310_support_spaces_in_path
Support spaces in filename #310
2 parents b9c8532 + 03ca32a commit ea57557

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

src/attributecode/__init__.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import logging
2323

2424
try:
25-
basestring # Python 2
25+
unicode # Python 2
2626
except NameError:
27-
basestring = str # Python 3 #NOQA
27+
unicode = str # Python 3 #NOQA
2828

2929

3030
__version__ = '3.3.0'
@@ -52,10 +52,11 @@ class Error(namedtuple('Error', ['severity', 'message'])):
5252
"""
5353
def __new__(self, severity, message):
5454
if message:
55-
if isinstance(message, basestring):
55+
if isinstance(message, unicode):
5656
message = clean_string(message)
5757
else:
58-
message = clean_string(repr(message))
58+
message = clean_string(unicode(repr(message), encoding='utf-8'))
59+
message = message.strip('"')
5960

6061
return super(Error, self).__new__(
6162
Error, severity, message)

src/attributecode/util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def to_posix(path):
8383
UNC_PREFIX_POSIX = to_posix(UNC_PREFIX)
8484
UNC_PREFIXES = (UNC_PREFIX_POSIX, UNC_PREFIX,)
8585

86-
valid_file_chars = string.digits + string.ascii_letters + '_-.'
86+
valid_file_chars = string.digits + string.ascii_letters + '_-.' + ' '
8787

8888

8989
def invalid_chars(path):

tests/test_util.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@ def test_invalid_chars_with_valid_chars(self):
171171
expected = []
172172
assert expected == result
173173

174+
def test_space_is_valid_chars(self):
175+
result = util.invalid_chars(' ')
176+
expected = []
177+
assert expected == result
178+
174179
def test_invalid_chars_with_invalid_in_name_and_dir(self):
175180
result = util.invalid_chars('_$as/afg:')
176181
expected = [':']
@@ -182,9 +187,9 @@ def test_invalid_chars_in_file_name(self):
182187
expected = ['%', '!', '(', ')', '$', '$', ':']
183188
assert expected == result
184189

185-
def test_invalid_chars_with_space(self):
190+
def test_invalid_chars_with_space_is_valid(self):
186191
result = util.invalid_chars('_ Hello')
187-
expected = [' ']
192+
expected = []
188193
assert expected == result
189194

190195
def test_check_file_names_with_dupes_return_errors(self):
@@ -218,10 +223,14 @@ def test_check_file_names_with_invalid_chars_return_errors(self):
218223
'locations/file',
219224
'locations/file with space',
220225
'locations/dir1/dir2/file1',
221-
'locations/dir2/file1'
226+
'locations/dir2/file1',
227+
'Accessibilité/ périmètre'
222228
]
223-
224-
expected = [Error(CRITICAL, "Invalid characters ' ' in file name at: 'locations/file with space'")]
229+
import sys
230+
if sys.version_info[0] < 3: #python2
231+
expected = [Error(CRITICAL, b"Invalid characters '\xe9\xe8' in file name at: 'Accessibilit\xe9/ p\xe9rim\xe8tre'")]
232+
else:
233+
expected = [Error(CRITICAL, "Invalid characters 'éè' in file name at: 'Accessibilité/ périmètre'")]
225234
result = util.check_file_names(paths)
226235

227236
assert expected[0].message == result[0].message

0 commit comments

Comments
 (0)