forked from openlp/openlp
fix tests
This commit is contained in:
parent
3e8e72be85
commit
2df1169ea8
@ -32,15 +32,7 @@ import urllib.request
|
||||
from http.client import HTTPException
|
||||
from random import randint
|
||||
|
||||
from openlp.core.common import Registry, is_win, is_macosx
|
||||
|
||||
if not is_win() and not is_macosx():
|
||||
try:
|
||||
from xdg import BaseDirectory
|
||||
XDG_BASE_AVAILABLE = True
|
||||
except ImportError:
|
||||
BaseDirectory = None
|
||||
XDG_BASE_AVAILABLE = False
|
||||
from openlp.core.common import Registry
|
||||
|
||||
log = logging.getLogger(__name__ + '.__init__')
|
||||
|
||||
|
@ -22,9 +22,11 @@
|
||||
"""
|
||||
Functional tests to test the AppLocation class and related methods.
|
||||
"""
|
||||
import os
|
||||
from unittest import TestCase
|
||||
|
||||
from openlp.core.common import add_actions, get_uno_instance, get_uno_command
|
||||
from openlp.core.common import add_actions, get_uno_instance, get_uno_command, delete_file, get_filesystem_encoding, \
|
||||
split_filename, clean_filename
|
||||
from tests.functional import MagicMock, patch
|
||||
from tests.helpers.testmixin import TestMixin
|
||||
|
||||
@ -196,3 +198,146 @@ class TestInit(TestCase, TestMixin):
|
||||
self.assertEqual(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
|
||||
' "--accept=socket,host=localhost,port=2002;urp;"')
|
||||
|
||||
|
||||
def get_filesystem_encoding_sys_function_not_called_test(self):
|
||||
"""
|
||||
Test the get_filesystem_encoding() function does not call the sys.getdefaultencoding() function
|
||||
"""
|
||||
# GIVEN: sys.getfilesystemencoding returns "cp1252"
|
||||
with patch('openlp.core.common.sys.getfilesystemencoding') as mocked_getfilesystemencoding, \
|
||||
patch('openlp.core.common.sys.getdefaultencoding') as mocked_getdefaultencoding:
|
||||
mocked_getfilesystemencoding.return_value = 'cp1252'
|
||||
|
||||
# WHEN: get_filesystem_encoding() is called
|
||||
result = get_filesystem_encoding()
|
||||
|
||||
# THEN: getdefaultencoding should have been called
|
||||
mocked_getfilesystemencoding.assert_called_with()
|
||||
self.assertEqual(0, mocked_getdefaultencoding.called, 'getdefaultencoding should not have been called')
|
||||
self.assertEqual('cp1252', result, 'The result should be "cp1252"')
|
||||
|
||||
def get_filesystem_encoding_sys_function_is_called_test(self):
|
||||
"""
|
||||
Test the get_filesystem_encoding() function calls the sys.getdefaultencoding() function
|
||||
"""
|
||||
# GIVEN: sys.getfilesystemencoding returns None and sys.getdefaultencoding returns "utf-8"
|
||||
with patch('openlp.core.common.sys.getfilesystemencoding') as mocked_getfilesystemencoding, \
|
||||
patch('openlp.core.common.sys.getdefaultencoding') as mocked_getdefaultencoding:
|
||||
mocked_getfilesystemencoding.return_value = None
|
||||
mocked_getdefaultencoding.return_value = 'utf-8'
|
||||
|
||||
# WHEN: get_filesystem_encoding() is called
|
||||
result = get_filesystem_encoding()
|
||||
|
||||
# THEN: getdefaultencoding should have been called
|
||||
mocked_getfilesystemencoding.assert_called_with()
|
||||
mocked_getdefaultencoding.assert_called_with()
|
||||
self.assertEqual('utf-8', result, 'The result should be "utf-8"')
|
||||
|
||||
def split_filename_with_file_path_test(self):
|
||||
"""
|
||||
Test the split_filename() function with a path to a file
|
||||
"""
|
||||
# GIVEN: A path to a file.
|
||||
if os.name == 'nt':
|
||||
file_path = 'C:\\home\\user\\myfile.txt'
|
||||
wanted_result = ('C:\\home\\user', 'myfile.txt')
|
||||
else:
|
||||
file_path = '/home/user/myfile.txt'
|
||||
wanted_result = ('/home/user', 'myfile.txt')
|
||||
with patch('openlp.core.common.os.path.isfile') as mocked_is_file:
|
||||
mocked_is_file.return_value = True
|
||||
|
||||
# WHEN: Split the file name.
|
||||
result = split_filename(file_path)
|
||||
|
||||
# THEN: A tuple should be returned.
|
||||
self.assertEqual(wanted_result, result, 'A tuple with the dir and file name should have been returned')
|
||||
|
||||
def split_filename_with_dir_path_test(self):
|
||||
"""
|
||||
Test the split_filename() function with a path to a directory
|
||||
"""
|
||||
# GIVEN: A path to a dir.
|
||||
if os.name == 'nt':
|
||||
file_path = 'C:\\home\\user\\mydir'
|
||||
wanted_result = ('C:\\home\\user\\mydir', '')
|
||||
else:
|
||||
file_path = '/home/user/mydir'
|
||||
wanted_result = ('/home/user/mydir', '')
|
||||
with patch('openlp.core.common.os.path.isfile') as mocked_is_file:
|
||||
mocked_is_file.return_value = False
|
||||
|
||||
# WHEN: Split the file name.
|
||||
result = split_filename(file_path)
|
||||
|
||||
# THEN: A tuple should be returned.
|
||||
self.assertEqual(wanted_result, result,
|
||||
'A two-entry tuple with the directory and file name (empty) should have been returned.')
|
||||
|
||||
def clean_filename_test(self):
|
||||
"""
|
||||
Test the clean_filename() function
|
||||
"""
|
||||
# GIVEN: A invalid file name and the valid file name.
|
||||
invalid_name = 'A_file_with_invalid_characters_[\\/:\*\?"<>\|\+\[\]%].py'
|
||||
wanted_name = 'A_file_with_invalid_characters______________________.py'
|
||||
|
||||
# WHEN: Clean the name.
|
||||
result = clean_filename(invalid_name)
|
||||
|
||||
# THEN: The file name should be cleaned.
|
||||
self.assertEqual(wanted_name, result, 'The file name should not contain any special characters.')
|
||||
|
||||
def delete_file_no_path_test(self):
|
||||
"""
|
||||
Test the delete_file function when called with out a valid path
|
||||
"""
|
||||
# GIVEN: A blank path
|
||||
# WEHN: Calling delete_file
|
||||
result = delete_file('')
|
||||
|
||||
# THEN: delete_file should return False
|
||||
self.assertFalse(result, "delete_file should return False when called with ''")
|
||||
|
||||
def delete_file_path_success_test(self):
|
||||
"""
|
||||
Test the delete_file function when it successfully deletes a file
|
||||
"""
|
||||
# GIVEN: A mocked os which returns True when os.path.exists is called
|
||||
with patch('openlp.core.common.os', **{'path.exists.return_value': False}):
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should return True
|
||||
self.assertTrue(result, 'delete_file should return True when it successfully deletes a file')
|
||||
|
||||
def delete_file_path_no_file_exists_test(self):
|
||||
"""
|
||||
Test the delete_file function when the file to remove does not exist
|
||||
"""
|
||||
# GIVEN: A mocked os which returns False when os.path.exists is called
|
||||
with patch('openlp.core.common.os', **{'path.exists.return_value': False}):
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should return True
|
||||
self.assertTrue(result, 'delete_file should return True when the file doesnt exist')
|
||||
|
||||
def delete_file_path_exception_test(self):
|
||||
"""
|
||||
Test the delete_file function when os.remove raises an exception
|
||||
"""
|
||||
# GIVEN: A mocked os which returns True when os.path.exists is called and raises an OSError when os.remove is
|
||||
# called.
|
||||
with patch('openlp.core.common.os', **{'path.exists.return_value': True, 'path.exists.side_effect': OSError}), \
|
||||
patch('openlp.core.common.log') as mocked_log:
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should log and exception and return False
|
||||
self.assertEqual(mocked_log.exception.call_count, 1)
|
||||
self.assertFalse(result, 'delete_file should return False when os.remove raises an OSError')
|
||||
|
@ -22,11 +22,9 @@
|
||||
"""
|
||||
Functional tests to test the AppLocation class and related methods.
|
||||
"""
|
||||
import os
|
||||
from unittest import TestCase
|
||||
|
||||
from openlp.core.utils import _get_user_agent, get_web_page
|
||||
from openlp.core.common import get_filesystem_encoding, split_filename, delete_file, clean_filename
|
||||
|
||||
from tests.functional import MagicMock, patch
|
||||
|
||||
@ -35,150 +33,6 @@ class TestUtils(TestCase):
|
||||
"""
|
||||
A test suite to test out various methods around the AppLocation class.
|
||||
"""
|
||||
|
||||
def get_filesystem_encoding_sys_function_not_called_test(self):
|
||||
"""
|
||||
Test the get_filesystem_encoding() function does not call the sys.getdefaultencoding() function
|
||||
"""
|
||||
# GIVEN: sys.getfilesystemencoding returns "cp1252"
|
||||
with patch('openlp.core.utils.sys.getfilesystemencoding') as mocked_getfilesystemencoding, \
|
||||
patch('openlp.core.utils.sys.getdefaultencoding') as mocked_getdefaultencoding:
|
||||
mocked_getfilesystemencoding.return_value = 'cp1252'
|
||||
|
||||
# WHEN: get_filesystem_encoding() is called
|
||||
result = get_filesystem_encoding()
|
||||
|
||||
# THEN: getdefaultencoding should have been called
|
||||
mocked_getfilesystemencoding.assert_called_with()
|
||||
self.assertEqual(0, mocked_getdefaultencoding.called, 'getdefaultencoding should not have been called')
|
||||
self.assertEqual('cp1252', result, 'The result should be "cp1252"')
|
||||
|
||||
def get_filesystem_encoding_sys_function_is_called_test(self):
|
||||
"""
|
||||
Test the get_filesystem_encoding() function calls the sys.getdefaultencoding() function
|
||||
"""
|
||||
# GIVEN: sys.getfilesystemencoding returns None and sys.getdefaultencoding returns "utf-8"
|
||||
with patch('openlp.core.utils.sys.getfilesystemencoding') as mocked_getfilesystemencoding, \
|
||||
patch('openlp.core.utils.sys.getdefaultencoding') as mocked_getdefaultencoding:
|
||||
mocked_getfilesystemencoding.return_value = None
|
||||
mocked_getdefaultencoding.return_value = 'utf-8'
|
||||
|
||||
# WHEN: get_filesystem_encoding() is called
|
||||
result = get_filesystem_encoding()
|
||||
|
||||
# THEN: getdefaultencoding should have been called
|
||||
mocked_getfilesystemencoding.assert_called_with()
|
||||
mocked_getdefaultencoding.assert_called_with()
|
||||
self.assertEqual('utf-8', result, 'The result should be "utf-8"')
|
||||
|
||||
def split_filename_with_file_path_test(self):
|
||||
"""
|
||||
Test the split_filename() function with a path to a file
|
||||
"""
|
||||
# GIVEN: A path to a file.
|
||||
if os.name == 'nt':
|
||||
file_path = 'C:\\home\\user\\myfile.txt'
|
||||
wanted_result = ('C:\\home\\user', 'myfile.txt')
|
||||
else:
|
||||
file_path = '/home/user/myfile.txt'
|
||||
wanted_result = ('/home/user', 'myfile.txt')
|
||||
with patch('openlp.core.utils.os.path.isfile') as mocked_is_file:
|
||||
mocked_is_file.return_value = True
|
||||
|
||||
# WHEN: Split the file name.
|
||||
result = split_filename(file_path)
|
||||
|
||||
# THEN: A tuple should be returned.
|
||||
self.assertEqual(wanted_result, result, 'A tuple with the dir and file name should have been returned')
|
||||
|
||||
def split_filename_with_dir_path_test(self):
|
||||
"""
|
||||
Test the split_filename() function with a path to a directory
|
||||
"""
|
||||
# GIVEN: A path to a dir.
|
||||
if os.name == 'nt':
|
||||
file_path = 'C:\\home\\user\\mydir'
|
||||
wanted_result = ('C:\\home\\user\\mydir', '')
|
||||
else:
|
||||
file_path = '/home/user/mydir'
|
||||
wanted_result = ('/home/user/mydir', '')
|
||||
with patch('openlp.core.utils.os.path.isfile') as mocked_is_file:
|
||||
mocked_is_file.return_value = False
|
||||
|
||||
# WHEN: Split the file name.
|
||||
result = split_filename(file_path)
|
||||
|
||||
# THEN: A tuple should be returned.
|
||||
self.assertEqual(wanted_result, result,
|
||||
'A two-entry tuple with the directory and file name (empty) should have been returned.')
|
||||
|
||||
def clean_filename_test(self):
|
||||
"""
|
||||
Test the clean_filename() function
|
||||
"""
|
||||
# GIVEN: A invalid file name and the valid file name.
|
||||
invalid_name = 'A_file_with_invalid_characters_[\\/:\*\?"<>\|\+\[\]%].py'
|
||||
wanted_name = 'A_file_with_invalid_characters______________________.py'
|
||||
|
||||
# WHEN: Clean the name.
|
||||
result = clean_filename(invalid_name)
|
||||
|
||||
# THEN: The file name should be cleaned.
|
||||
self.assertEqual(wanted_name, result, 'The file name should not contain any special characters.')
|
||||
|
||||
def delete_file_no_path_test(self):
|
||||
"""
|
||||
Test the delete_file function when called with out a valid path
|
||||
"""
|
||||
# GIVEN: A blank path
|
||||
# WEHN: Calling delete_file
|
||||
result = delete_file('')
|
||||
|
||||
# THEN: delete_file should return False
|
||||
self.assertFalse(result, "delete_file should return False when called with ''")
|
||||
|
||||
def delete_file_path_success_test(self):
|
||||
"""
|
||||
Test the delete_file function when it successfully deletes a file
|
||||
"""
|
||||
# GIVEN: A mocked os which returns True when os.path.exists is called
|
||||
with patch('openlp.core.utils.os', **{'path.exists.return_value': False}):
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should return True
|
||||
self.assertTrue(result, 'delete_file should return True when it successfully deletes a file')
|
||||
|
||||
def delete_file_path_no_file_exists_test(self):
|
||||
"""
|
||||
Test the delete_file function when the file to remove does not exist
|
||||
"""
|
||||
# GIVEN: A mocked os which returns False when os.path.exists is called
|
||||
with patch('openlp.core.utils.os', **{'path.exists.return_value': False}):
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should return True
|
||||
self.assertTrue(result, 'delete_file should return True when the file doesnt exist')
|
||||
|
||||
def delete_file_path_exception_test(self):
|
||||
"""
|
||||
Test the delete_file function when os.remove raises an exception
|
||||
"""
|
||||
# GIVEN: A mocked os which returns True when os.path.exists is called and raises an OSError when os.remove is
|
||||
# called.
|
||||
with patch('openlp.core.utils.os', **{'path.exists.return_value': True, 'path.exists.side_effect': OSError}), \
|
||||
patch('openlp.core.utils.log') as mocked_log:
|
||||
|
||||
# WHEN: Calling delete_file with a file path
|
||||
result = delete_file('path/file.ext')
|
||||
|
||||
# THEN: delete_file should log and exception and return False
|
||||
self.assertEqual(mocked_log.exception.call_count, 1)
|
||||
self.assertFalse(result, 'delete_file should return False when os.remove raises an OSError')
|
||||
|
||||
def get_user_agent_linux_test(self):
|
||||
"""
|
||||
Test that getting a user agent on Linux returns a user agent suitable for Linux
|
||||
|
Loading…
Reference in New Issue
Block a user