forked from openlp/openlp
Fixes for windows tests and for starting OpenLP on windows.
This commit is contained in:
parent
5eae5b2090
commit
8ad47cb888
@ -34,6 +34,7 @@ if os.name == 'nt':
|
||||
from ctypes import cdll
|
||||
from ctypes.wintypes import RECT
|
||||
|
||||
from openlp.core.utils import AppLocation
|
||||
from openlp.core.lib import ScreenList
|
||||
from .presentationcontroller import PresentationController, PresentationDocument
|
||||
|
||||
@ -85,8 +86,8 @@ class PptviewController(PresentationController):
|
||||
if self.process:
|
||||
return
|
||||
log.debug('start PPTView')
|
||||
dll_path = os.path.join(
|
||||
self.plugin_manager.base_path, 'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
||||
dll_path = os.path.join(AppLocation.get_directory(AppLocation.AppDir),
|
||||
'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
||||
self.process = cdll.LoadLibrary(dll_path)
|
||||
if log.isEnabledFor(logging.DEBUG):
|
||||
self.process.SetDebug(1)
|
||||
|
@ -30,19 +30,78 @@
|
||||
This module contains tests for the pptviewcontroller module of the Presentations plugin.
|
||||
"""
|
||||
import os
|
||||
import shutil
|
||||
if os.name == 'nt':
|
||||
from ctypes import cdll
|
||||
|
||||
from tempfile import mkdtemp
|
||||
from unittest import TestCase
|
||||
|
||||
from tests.functional import MagicMock, patch
|
||||
from tests.helpers.testmixin import TestMixin
|
||||
|
||||
from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument
|
||||
from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument, PptviewController
|
||||
|
||||
|
||||
class TestPptviewController(TestCase, TestMixin):
|
||||
"""
|
||||
Test the PptviewController Class
|
||||
"""
|
||||
#TODO: Items left to test
|
||||
# PptviewController
|
||||
# __init__
|
||||
# check_availablecheck_installed
|
||||
# start_process(self)
|
||||
# kill
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
Set up the patches and mocks need for all tests.
|
||||
"""
|
||||
self.get_application()
|
||||
self.build_settings()
|
||||
self.mock_plugin = MagicMock()
|
||||
self.temp_folder = mkdtemp()
|
||||
self.mock_plugin.settings_section = self.temp_folder
|
||||
|
||||
def tearDown(self):
|
||||
"""
|
||||
Stop the patches
|
||||
"""
|
||||
self.destroy_settings()
|
||||
shutil.rmtree(self.temp_folder)
|
||||
|
||||
def constructor_test(self):
|
||||
"""
|
||||
Test the Constructor from the PptViewController
|
||||
"""
|
||||
# GIVEN: No presentation controller
|
||||
controller = None
|
||||
|
||||
# WHEN: The presentation controller object is created
|
||||
controller = PptviewController(plugin=self.mock_plugin)
|
||||
|
||||
# THEN: The name of the presentation controller should be correct
|
||||
self.assertEqual('Powerpoint Viewer', controller.name, 'The name of the presentation controller should be correct')
|
||||
|
||||
def check_available_test(self):
|
||||
"""
|
||||
Test check_available / check_installed
|
||||
"""
|
||||
# GIVEN: A mocked dll loader and a controller
|
||||
with patch('ctypes.cdll.LoadLibrary') as mocked_load_library:
|
||||
mocked_process = MagicMock()
|
||||
mocked_process.CheckInstalled.return_value = True
|
||||
mocked_load_library.return_value = mocked_process
|
||||
controller = PptviewController(plugin=self.mock_plugin)
|
||||
|
||||
# WHEN: check_available is called
|
||||
available = controller.check_available()
|
||||
|
||||
# THEN: On windows it should return True, on other platforms False
|
||||
if os.name == 'nt':
|
||||
self.assertTrue(available, 'check_available should return True on windows.')
|
||||
else:
|
||||
self.assertFalse(available, 'check_available should return False when not on windows.')
|
||||
|
||||
|
||||
class TestPptviewDocument(TestCase):
|
||||
"""
|
||||
|
@ -53,13 +53,12 @@ class TestMixin(object):
|
||||
Build the settings Object and initialise it
|
||||
"""
|
||||
Settings.setDefaultFormat(Settings.IniFormat)
|
||||
fd, self.ini_file = mkstemp('.ini')
|
||||
self.fd, self.ini_file = mkstemp('.ini')
|
||||
Settings().set_filename(self.ini_file)
|
||||
|
||||
def destroy_settings(self):
|
||||
"""
|
||||
Destroy the Settings Object
|
||||
"""
|
||||
if hasattr(self, 'fd'):
|
||||
os.close(self.fd)
|
||||
os.close(self.fd)
|
||||
os.unlink(Settings().fileName())
|
||||
|
@ -31,6 +31,7 @@ Package to test the openlp.core.lib.pluginmanager package.
|
||||
"""
|
||||
import sys
|
||||
import shutil
|
||||
import gc
|
||||
from tempfile import mkdtemp
|
||||
from unittest import TestCase
|
||||
|
||||
@ -65,6 +66,9 @@ class TestPluginManager(TestCase, TestMixin):
|
||||
del self.main_window
|
||||
Settings().remove('advanced/data path')
|
||||
self.destroy_settings()
|
||||
# On windows we need to manually garbage collect to close sqlalchemy files
|
||||
# to avoid errors when temporary files are deleted.
|
||||
gc.collect()
|
||||
shutil.rmtree(self.temp_dir)
|
||||
|
||||
def find_plugins_test(self):
|
||||
|
Loading…
Reference in New Issue
Block a user