From a013d17bdd5fe576e99ab02d55dde992f07ca27e Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 13 Oct 2013 18:02:12 +0100 Subject: [PATCH] fix tests and add basic test --- openlp/core/common/__init__.py | 10 +++ openlp/core/common/applocation.py | 12 +--- .../functional/openlp_core_common/__init__.py | 1 + .../test_applocation.py | 64 +++++++++++++----- .../functional/openlp_core_lib/test_theme.py | 65 +++++++++++++++++++ .../openlp_core_utils/test_utils.py | 30 +-------- .../openlp_plugins/remotes/test_remotetab.py | 4 +- 7 files changed, 126 insertions(+), 60 deletions(-) create mode 100644 tests/functional/openlp_core_common/__init__.py rename tests/functional/{openlp_core_utils => openlp_core_common}/test_applocation.py (74%) create mode 100644 tests/functional/openlp_core_lib/test_theme.py diff --git a/openlp/core/common/__init__.py b/openlp/core/common/__init__.py index 1f205c958..02fab3512 100644 --- a/openlp/core/common/__init__.py +++ b/openlp/core/common/__init__.py @@ -32,6 +32,7 @@ OpenLP work. """ import os import logging +import sys log = logging.getLogger(__name__) @@ -54,4 +55,13 @@ def check_directory_exists(directory, do_not_log=False): except IOError: 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 diff --git a/openlp/core/common/applocation.py b/openlp/core/common/applocation.py index 7d0010316..8925b4c59 100644 --- a/openlp/core/common/applocation.py +++ b/openlp/core/common/applocation.py @@ -41,7 +41,7 @@ if sys.platform != 'win32' and sys.platform != 'darwin': XDG_BASE_AVAILABLE = False 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__) @@ -136,15 +136,6 @@ class AppLocation(object): 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): """ 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: return os.path.join(str(os.getenv('HOME')), '.openlp', 'data') return os.path.join(str(os.getenv('HOME')), '.openlp') - diff --git a/tests/functional/openlp_core_common/__init__.py b/tests/functional/openlp_core_common/__init__.py new file mode 100644 index 000000000..f87606f07 --- /dev/null +++ b/tests/functional/openlp_core_common/__init__.py @@ -0,0 +1 @@ +__author__ = 'tim' diff --git a/tests/functional/openlp_core_utils/test_applocation.py b/tests/functional/openlp_core_common/test_applocation.py similarity index 74% rename from tests/functional/openlp_core_utils/test_applocation.py rename to tests/functional/openlp_core_common/test_applocation.py index a79d5cefc..7ce891bd9 100644 --- a/tests/functional/openlp_core_utils/test_applocation.py +++ b/tests/functional/openlp_core_common/test_applocation.py @@ -32,7 +32,7 @@ Functional tests to test the AppLocation class and related methods. import copy from unittest import TestCase -from openlp.core.common import AppLocation +from openlp.core.common import AppLocation, get_frozen_path from tests.functional import patch 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 """ - with patch('openlp.core.utils.applocation.Settings') as mocked_class, \ - patch('openlp.core.utils.AppLocation.get_directory') as mocked_get_directory, \ - patch('openlp.core.utils.applocation.check_directory_exists') as mocked_check_directory_exists, \ - patch('openlp.core.utils.applocation.os') as mocked_os: + with patch('openlp.core.lib.Settings') as mocked_class, \ + patch('openlp.core.common.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.os') as mocked_os: # GIVEN: A mocked out Settings class and a mocked out AppLocation.get_directory() mocked_settings = mocked_class.return_value 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 """ - with patch('openlp.core.utils.applocation.Settings') as mocked_class,\ - patch('openlp.core.utils.applocation.os') as mocked_os: + with patch('openlp.core.lib.Settings') as mocked_class,\ + patch('openlp.core.common.applocation.os') as mocked_os: # GIVEN: A mocked out Settings class which returns a custom data location mocked_settings = mocked_class.return_value mocked_settings.contains.return_value = True @@ -90,8 +90,8 @@ class TestAppLocation(TestCase): """ Test the AppLocation.get_files() method with no parameters passed. """ - with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ - patch('openlp.core.utils.applocation.os.listdir') as mocked_listdir: + with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \ + patch('openlp.core.common.applocation.os.listdir') as mocked_listdir: # GIVEN: Our mocked modules/methods. mocked_get_data_path.return_value = 'test/dir' 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. """ - with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ - patch('openlp.core.utils.applocation.os.listdir') as mocked_listdir: + with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \ + patch('openlp.core.common.applocation.os.listdir') as mocked_listdir: # GIVEN: Our mocked modules/methods. mocked_get_data_path.return_value = 'test/dir' mocked_listdir.return_value = copy.deepcopy(FILE_LIST) @@ -125,8 +125,8 @@ class TestAppLocation(TestCase): """ Test the AppLocation.get_section_data_path() method """ - with patch('openlp.core.utils.AppLocation.get_data_path') as mocked_get_data_path, \ - patch('openlp.core.utils.applocation.check_directory_exists') as mocked_check_directory_exists: + with patch('openlp.core.common.AppLocation.get_data_path') as mocked_get_data_path, \ + patch('openlp.core.common.applocation.check_directory_exists') as mocked_check_directory_exists: # GIVEN: A mocked out AppLocation.get_data_path() mocked_get_data_path.return_value = 'test/dir' mocked_check_directory_exists.return_value = True @@ -143,7 +143,7 @@ class TestAppLocation(TestCase): Test the AppLocation.get_directory() method for AppLocation.AppDir """ # 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' # WHEN: We call AppLocation.get_directory @@ -157,10 +157,10 @@ class TestAppLocation(TestCase): Test the AppLocation.get_directory() method for AppLocation.PluginsDir """ # 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, \ - patch('openlp.core.utils.applocation.os.path.abspath') as mocked_abspath, \ - patch('openlp.core.utils.applocation.os.path.split') as mocked_split, \ - patch('openlp.core.utils.applocation.sys') as mocked_sys: + with patch('openlp.core.common.applocation.get_frozen_path') as mocked_get_frozen_path, \ + patch('openlp.core.common.applocation.os.path.abspath') as mocked_abspath, \ + patch('openlp.core.common.applocation.os.path.split') as mocked_split, \ + patch('openlp.core.common.applocation.sys') as mocked_sys: mocked_abspath.return_value = 'plugins/dir' mocked_split.return_value = ['openlp'] mocked_get_frozen_path.return_value = 'plugins/dir' @@ -172,3 +172,31 @@ class TestAppLocation(TestCase): # THEN: The correct directory should be returned 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"') \ No newline at end of file diff --git a/tests/functional/openlp_core_lib/test_theme.py b/tests/functional/openlp_core_lib/test_theme.py new file mode 100644 index 000000000..e533b1b8d --- /dev/null +++ b/tests/functional/openlp_core_lib/test_theme.py @@ -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') \ No newline at end of file diff --git a/tests/functional/openlp_core_utils/test_utils.py b/tests/functional/openlp_core_utils/test_utils.py index 83cc24011..dfc31b245 100644 --- a/tests/functional/openlp_core_utils/test_utils.py +++ b/tests/functional/openlp_core_utils/test_utils.py @@ -31,7 +31,7 @@ Functional tests to test the AppLocation class and related methods. """ 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 from tests.functional import patch @@ -75,34 +75,6 @@ class TestUtils(TestCase): mocked_getdefaultencoding.assert_called_with() 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): """ Test the split_filename() function with a path to a file diff --git a/tests/functional/openlp_plugins/remotes/test_remotetab.py b/tests/functional/openlp_plugins/remotes/test_remotetab.py index 51198bdc2..d176a001d 100644 --- a/tests/functional/openlp_plugins/remotes/test_remotetab.py +++ b/tests/functional/openlp_plugins/remotes/test_remotetab.py @@ -105,7 +105,7 @@ class TestRemoteTab(TestCase): Test the set_urls function with standard defaults """ # 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.common.applocation.check_directory_exists') as mocked_check_directory_exists, \ patch('openlp.core.common.applocation.os') as mocked_os: @@ -133,7 +133,7 @@ class TestRemoteTab(TestCase): Test the set_urls function with certificate available """ # 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.common.applocation.check_directory_exists') as mocked_check_directory_exists, \ patch('openlp.core.common.applocation.os') as mocked_os: