diff --git a/wrolpi/common.py b/wrolpi/common.py index 55d2b918..f7477510 100644 --- a/wrolpi/common.py +++ b/wrolpi/common.py @@ -774,12 +774,12 @@ def get_files_and_directories(directory: Path): # These characters are invalid in Windows or Linux. -INVALID_FILE_CHARS = re.compile(r'[/<>:\|"\\\?\*%!]') +INVALID_FILE_CHARS = re.compile(r'[/<>:\|"\\\?\*%!\n\r]') def escape_file_name(name: str) -> str: """Remove any invalid characters in a file name.""" - return INVALID_FILE_CHARS.sub('', name) + return INVALID_FILE_CHARS.sub('', name).strip() def native_only(func: callable): diff --git a/wrolpi/test/test_common.py b/wrolpi/test/test_common.py index be4d666d..96dfda0e 100644 --- a/wrolpi/test/test_common.py +++ b/wrolpi/test/test_common.py @@ -284,6 +284,11 @@ def test_zig_zag(low, high, expected): ('foo&', 'foo&'), ('foo%', 'foo'), ('foo!', 'foo'), + ('fo\no', 'foo'), + ('fo\ro', 'foo'), + ('foo\r', 'foo'), + ('foo\r', 'foo'), + ('foo ', 'foo'), ] ) def test_escape_file_name(name, expected):