fix tests and add basic test

This commit is contained in:
Tim Bentley 2013-10-13 18:02:12 +01:00
parent b860abb23b
commit a013d17bdd
7 changed files with 126 additions and 60 deletions

View File

@ -32,6 +32,7 @@ OpenLP work.
""" """
import os import os
import logging import logging
import sys
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -54,4 +55,13 @@ def check_directory_exists(directory, do_not_log=False):
except IOError: except IOError:
pass pass
def get_frozen_path(frozen_option, non_frozen_option):
"""
Return a path based on the system status.
"""
if hasattr(sys, 'frozen') and sys.frozen == 1:
return frozen_option
return non_frozen_option
from .applocation import AppLocation from .applocation import AppLocation

View File

@ -41,7 +41,7 @@ if sys.platform != 'win32' and sys.platform != 'darwin':
XDG_BASE_AVAILABLE = False XDG_BASE_AVAILABLE = False
import openlp import openlp
from openlp.core.common import check_directory_exists from openlp.core.common import check_directory_exists, get_frozen_path
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -136,15 +136,6 @@ class AppLocation(object):
return path return path
def get_frozen_path(frozen_option, non_frozen_option):
"""
Return a path based on the system status.
"""
if hasattr(sys, 'frozen') and sys.frozen == 1:
return frozen_option
return non_frozen_option
def _get_os_dir_path(dir_type): def _get_os_dir_path(dir_type):
""" """
Return a path based on which OS and environment we are running in. Return a path based on which OS and environment we are running in.
@ -177,4 +168,3 @@ def _get_os_dir_path(dir_type):
if dir_type == AppLocation.DataDir: if dir_type == AppLocation.DataDir:
return os.path.join(str(os.getenv('HOME')), '.openlp', 'data') return os.path.join(str(os.getenv('HOME')), '.openlp', 'data')
return os.path.join(str(os.getenv('HOME')), '.openlp') return os.path.join(str(os.getenv('HOME')), '.openlp')

View File

@ -0,0 +1 @@
__author__ = 'tim'

View File

@ -32,7 +32,7 @@ Functional tests to test the AppLocation class and related methods.
import copy import copy
from unittest import TestCase from unittest import TestCase
from openlp.core.common import AppLocation from openlp.core.common import AppLocation, get_frozen_path
from tests.functional import patch from tests.functional import patch
FILE_LIST = ['file1', 'file2', 'file3.txt', 'file4.txt', 'file5.mp3', 'file6.mp3'] FILE_LIST = ['file1', 'file2', 'file3.txt', 'file4.txt', 'file5.mp3', 'file6.mp3']
@ -46,10 +46,10 @@ class TestAppLocation(TestCase):
""" """
Test the AppLocation.get_data_path() method Test the AppLocation.get_data_path() method
""" """
with patch('openlp.core.utils.applocation.Settings') as mocked_class, \ with patch('openlp.core.lib.Settings') as mocked_class, \
patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \ patch('openlp.core.common.AppLocation.get_directory') as mocked_get_directory, \
patch('openlp.core.utils.applocation.check_directory_exists') as mocked_check_directory_exists, \ patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists, \
patch('openlp.core.utils.applocation.os') as mocked_os: patch('openlp.core.common.applocation.os') as mocked_os:
# GIVEN: A mocked out Settings class and a mocked out AppLocation.get_directory() # GIVEN: A mocked out Settings class and a mocked out AppLocation.get_directory()
mocked_settings = mocked_class.return_value mocked_settings = mocked_class.return_value
mocked_settings.contains.return_value = False mocked_settings.contains.return_value = False
@ -70,8 +70,8 @@ class TestAppLocation(TestCase):
""" """
Test the AppLocation.get_data_path() method when a custom location is set in the settings Test the AppLocation.get_data_path() method when a custom location is set in the settings
""" """
with patch('openlp.core.utils.applocation.Settings') as mocked_class,\ with patch('openlp.core.lib.Settings') as mocked_class,\
patch('openlp.core.utils.applocation.os') as mocked_os: patch('openlp.core.common.applocation.os') as mocked_os:
# GIVEN: A mocked out Settings class which returns a custom data location # GIVEN: A mocked out Settings class which returns a custom data location
mocked_settings = mocked_class.return_value mocked_settings = mocked_class.return_value
mocked_settings.contains.return_value = True mocked_settings.contains.return_value = True
@ -90,8 +90,8 @@ class TestAppLocation(TestCase):
""" """
Test the AppLocation.get_files() method with no parameters passed. Test the AppLocation.get_files() method with no parameters passed.
""" """
with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \
patch('openlp.core.utils.applocation.os.listdir') as mocked_listdir: patch('openlp.core.common.applocation.os.listdir') as mocked_listdir:
# GIVEN: Our mocked modules/methods. # GIVEN: Our mocked modules/methods.
mocked_get_data_path.return_value = 'test/dir' mocked_get_data_path.return_value = 'test/dir'
mocked_listdir.return_value = copy.deepcopy(FILE_LIST) mocked_listdir.return_value = copy.deepcopy(FILE_LIST)
@ -106,8 +106,8 @@ class TestAppLocation(TestCase):
""" """
Test the AppLocation.get_files() method with all parameters passed. Test the AppLocation.get_files() method with all parameters passed.
""" """
with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \
patch('openlp.core.utils.applocation.os.listdir') as mocked_listdir: patch('openlp.core.common.applocation.os.listdir') as mocked_listdir:
# GIVEN: Our mocked modules/methods. # GIVEN: Our mocked modules/methods.
mocked_get_data_path.return_value = 'test/dir' mocked_get_data_path.return_value = 'test/dir'
mocked_listdir.return_value = copy.deepcopy(FILE_LIST) mocked_listdir.return_value = copy.deepcopy(FILE_LIST)
@ -125,8 +125,8 @@ class TestAppLocation(TestCase):
""" """
Test the AppLocation.get_section_data_path() method Test the AppLocation.get_section_data_path() method
""" """
with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \
patch('openlp.core.utils.applocation.check_directory_exists') as mocked_check_directory_exists: patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists:
# GIVEN: A mocked out AppLocation.get_data_path() # GIVEN: A mocked out AppLocation.get_data_path()
mocked_get_data_path.return_value = 'test/dir' mocked_get_data_path.return_value = 'test/dir'
mocked_check_directory_exists.return_value = True mocked_check_directory_exists.return_value = True
@ -143,7 +143,7 @@ class TestAppLocation(TestCase):
Test the AppLocation.get_directory() method for AppLocation.AppDir Test the AppLocation.get_directory() method for AppLocation.AppDir
""" """
# GIVEN: A mocked out _get_frozen_path function # GIVEN: A mocked out _get_frozen_path function
with patch('openlp.core.utils.applocation._get_frozen_path') as mocked_get_frozen_path: with patch('openlp.core.common.applocation.get_frozen_path') as mocked_get_frozen_path:
mocked_get_frozen_path.return_value = 'app/dir' mocked_get_frozen_path.return_value = 'app/dir'
# WHEN: We call AppLocation.get_directory # WHEN: We call AppLocation.get_directory
@ -157,10 +157,10 @@ class TestAppLocation(TestCase):
Test the AppLocation.get_directory() method for AppLocation.PluginsDir Test the AppLocation.get_directory() method for AppLocation.PluginsDir
""" """
# GIVEN: _get_frozen_path, abspath, split and sys are mocked out # GIVEN: _get_frozen_path, abspath, split and sys are mocked out
with patch('openlp.core.utils.applocation._get_frozen_path') as mocked_get_frozen_path, \ with patch('openlp.core.common.applocation.get_frozen_path') as mocked_get_frozen_path, \
patch('openlp.core.utils.applocation.os.path.abspath') as mocked_abspath, \ patch('openlp.core.common.applocation.os.path.abspath') as mocked_abspath, \
patch('openlp.core.utils.applocation.os.path.split') as mocked_split, \ patch('openlp.core.common.applocation.os.path.split') as mocked_split, \
patch('openlp.core.utils.applocation.sys') as mocked_sys: patch('openlp.core.common.applocation.sys') as mocked_sys:
mocked_abspath.return_value = 'plugins/dir' mocked_abspath.return_value = 'plugins/dir'
mocked_split.return_value = ['openlp'] mocked_split.return_value = ['openlp']
mocked_get_frozen_path.return_value = 'plugins/dir' mocked_get_frozen_path.return_value = 'plugins/dir'
@ -172,3 +172,31 @@ class TestAppLocation(TestCase):
# THEN: The correct directory should be returned # THEN: The correct directory should be returned
self.assertEqual('plugins/dir', directory, 'Directory should be "plugins/dir"') self.assertEqual('plugins/dir', directory, 'Directory should be "plugins/dir"')
def get_frozen_path_in_unfrozen_app_test(self):
"""
Test the _get_frozen_path() function when the application is not frozen (compiled by PyInstaller)
"""
with patch('openlp.core.utils.sys') as mocked_sys:
# GIVEN: The sys module "without" a "frozen" attribute
mocked_sys.frozen = None
# WHEN: We call _get_frozen_path() with two parameters
frozen_path = get_frozen_path('frozen', 'not frozen')
# THEN: The non-frozen parameter is returned
self.assertEqual('not frozen', frozen_path, '_get_frozen_path should return "not frozen"')
def get_frozen_path_in_frozen_app_test(self):
"""
Test the get_frozen_path() function when the application is frozen (compiled by PyInstaller)
"""
with patch('openlp.core.common.sys') as mocked_sys:
# GIVEN: The sys module *with* a "frozen" attribute
mocked_sys.frozen = 1
# WHEN: We call _get_frozen_path() with two parameters
frozen_path = get_frozen_path('frozen', 'not frozen')
# THEN: The frozen parameter is returned
self.assertEqual('frozen', frozen_path, 'Should return "frozen"')

View File

@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2013 Raoul Snyman #
# Portions copyright (c) 2008-2013 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
# Frode Woldsund, Martin Zibricky, Patrick Zimmermann #
# --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation; version 2 of the License. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
Package to test the openlp.core.lib.theme package.
"""
from tests.functional import MagicMock, patch
from unittest import TestCase
from openlp.core.lib.theme import ThemeXML
class TestTheme(TestCase):
"""
Test the functions in the Theme module
"""
def setUp(self):
"""
Create the UI
"""
pass
def tearDown(self):
"""
Delete all the C++ objects at the end so that we don't have a segfault
"""
pass
def test_new_theme(self):
"""
Test the theme creation - basic test
"""
# GIVEN: A new theme
# WHEN: A theme is created
default_theme = ThemeXML()
# THEN: We should get some default behaviours
self.assertTrue(default_theme.background_border_color == '#000000', 'The theme should have a black border')
self.assertTrue(default_theme.background_type == 'solid', 'There theme should have a solid backgrounds')

View File

@ -31,7 +31,7 @@ Functional tests to test the AppLocation class and related methods.
""" """
from unittest import TestCase from unittest import TestCase
from openlp.core.utils import clean_filename, get_filesystem_encoding, _get_frozen_path, get_locale_key, \ from openlp.core.utils import clean_filename, get_filesystem_encoding, get_locale_key, \
get_natural_key, split_filename get_natural_key, split_filename
from tests.functional import patch from tests.functional import patch
@ -75,34 +75,6 @@ class TestUtils(TestCase):
mocked_getdefaultencoding.assert_called_with() mocked_getdefaultencoding.assert_called_with()
self.assertEqual('utf-8', result, 'The result should be "utf-8"') self.assertEqual('utf-8', result, 'The result should be "utf-8"')
def get_frozen_path_in_unfrozen_app_test(self):
"""
Test the _get_frozen_path() function when the application is not frozen (compiled by PyInstaller)
"""
with patch('openlp.core.utils.sys') as mocked_sys:
# GIVEN: The sys module "without" a "frozen" attribute
mocked_sys.frozen = None
# WHEN: We call _get_frozen_path() with two parameters
frozen_path = _get_frozen_path('frozen', 'not frozen')
# THEN: The non-frozen parameter is returned
self.assertEqual('not frozen', frozen_path, '_get_frozen_path should return "not frozen"')
def get_frozen_path_in_frozen_app_test(self):
"""
Test the _get_frozen_path() function when the application is frozen (compiled by PyInstaller)
"""
with patch('openlp.core.utils.sys') as mocked_sys:
# GIVEN: The sys module *with* a "frozen" attribute
mocked_sys.frozen = 1
# WHEN: We call _get_frozen_path() with two parameters
frozen_path = _get_frozen_path('frozen', 'not frozen')
# THEN: The frozen parameter is returned
self.assertEqual('frozen', frozen_path, 'Should return "frozen"')
def split_filename_with_file_path_test(self): def split_filename_with_file_path_test(self):
""" """
Test the split_filename() function with a path to a file Test the split_filename() function with a path to a file

View File

@ -105,7 +105,7 @@ class TestRemoteTab(TestCase):
Test the set_urls function with standard defaults Test the set_urls function with standard defaults
""" """
# GIVEN: A mocked location # GIVEN: A mocked location
with patch('openlp.core.common.applocation.Settings') as mocked_class, \ with patch('openlp.core.lib.Settings') as mocked_class, \
patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \ patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \
patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists, \ patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists, \
patch('openlp.core.common.applocation.os') as mocked_os: patch('openlp.core.common.applocation.os') as mocked_os:
@ -133,7 +133,7 @@ class TestRemoteTab(TestCase):
Test the set_urls function with certificate available Test the set_urls function with certificate available
""" """
# GIVEN: A mocked location # GIVEN: A mocked location
with patch('openlp.core.common.applocation.Settings') as mocked_class, \ with patch('openlp.core.lib.Settings') as mocked_class, \
patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \ patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \
patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists, \ patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists, \
patch('openlp.core.common.applocation.os') as mocked_os: patch('openlp.core.common.applocation.os') as mocked_os: