Fix bug where newlines where stripped when normalizing string

This commit is contained in:
Simon Hanna 2018-04-14 21:52:28 +02:00
parent fc8cee2a94
commit 255b1efe3a
2 changed files with 27 additions and 3 deletions

View File

@ -44,7 +44,7 @@ log = logging.getLogger(__name__ + '.__init__')
FIRST_CAMEL_REGEX = re.compile('(.)([A-Z][a-z]+)') FIRST_CAMEL_REGEX = re.compile('(.)([A-Z][a-z]+)')
SECOND_CAMEL_REGEX = re.compile('([a-z0-9])([A-Z])') SECOND_CAMEL_REGEX = re.compile('([a-z0-9])([A-Z])')
CONTROL_CHARS = re.compile(r'[\x00-\x1F\x7F-\x9F]') CONTROL_CHARS = re.compile(r'[\x00-\08\x0E-\x1F\x7F-\x9F]')
INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]') INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]')
IMAGES_FILTER = None IMAGES_FILTER = None
REPLACMENT_CHARS_MAP = str.maketrans({'\u2018': '\'', '\u2019': '\'', '\u201c': '"', '\u201d': '"', '\u2026': '...', REPLACMENT_CHARS_MAP = str.maketrans({'\u2018': '\'', '\u2019': '\'', '\u201c': '"', '\u201d': '"', '\u2026': '...',

View File

@ -25,8 +25,8 @@ Functional tests to test the AppLocation class and related methods.
from unittest import TestCase from unittest import TestCase
from unittest.mock import MagicMock, call, patch from unittest.mock import MagicMock, call, patch
from openlp.core.common import clean_button_text, de_hump, extension_loader, is_macosx, is_linux, is_win, \ from openlp.core.common import (clean_button_text, de_hump, extension_loader, is_macosx, is_linux,
path_to_module, trace_error_handler is_win, normalize_str, path_to_module, trace_error_handler)
from openlp.core.common.path import Path from openlp.core.common.path import Path
@ -211,6 +211,30 @@ class TestCommonFunctions(TestCase):
assert is_win() is False, 'is_win() should return False' assert is_win() is False, 'is_win() should return False'
assert is_macosx() is False, 'is_macosx() should return False' assert is_macosx() is False, 'is_macosx() should return False'
def test_normalize_str_leaves_newlines(self):
# GIVEN: a string containing newlines
str = 'something\nelse'
# WHEN: normalize is called
normalized_string = normalize_str(str)
# THEN: string is unchanged
assert normalized_string == str
def test_normalize_str_removes_null_byte(self):
# GIVEN: a string containing newlines
str = 'somet\x00hing'
# WHEN: normalize is called
normalized_string = normalize_str(str)
# THEN: string is unchanged
assert normalized_string == 'something'
def test_normalize_str_replaces_crlf_with_lf(self):
# GIVEN: a string containing crlf
str = 'something\r\nelse'
# WHEN: normalize is called
normalized_string = normalize_str(str)
# THEN: crlf is replaced with lf
assert normalized_string == 'something\nelse'
def test_clean_button_text(self): def test_clean_button_text(self):
""" """
Test the clean_button_text() function. Test the clean_button_text() function.