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 import cdll
|
||||||
from ctypes.wintypes import RECT
|
from ctypes.wintypes import RECT
|
||||||
|
|
||||||
|
from openlp.core.utils import AppLocation
|
||||||
from openlp.core.lib import ScreenList
|
from openlp.core.lib import ScreenList
|
||||||
from .presentationcontroller import PresentationController, PresentationDocument
|
from .presentationcontroller import PresentationController, PresentationDocument
|
||||||
|
|
||||||
@ -85,8 +86,8 @@ class PptviewController(PresentationController):
|
|||||||
if self.process:
|
if self.process:
|
||||||
return
|
return
|
||||||
log.debug('start PPTView')
|
log.debug('start PPTView')
|
||||||
dll_path = os.path.join(
|
dll_path = os.path.join(AppLocation.get_directory(AppLocation.AppDir),
|
||||||
self.plugin_manager.base_path, 'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
'presentations', 'lib', 'pptviewlib', 'pptviewlib.dll')
|
||||||
self.process = cdll.LoadLibrary(dll_path)
|
self.process = cdll.LoadLibrary(dll_path)
|
||||||
if log.isEnabledFor(logging.DEBUG):
|
if log.isEnabledFor(logging.DEBUG):
|
||||||
self.process.SetDebug(1)
|
self.process.SetDebug(1)
|
||||||
|
@ -30,19 +30,78 @@
|
|||||||
This module contains tests for the pptviewcontroller module of the Presentations plugin.
|
This module contains tests for the pptviewcontroller module of the Presentations plugin.
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
if os.name == 'nt':
|
||||||
|
from ctypes import cdll
|
||||||
|
|
||||||
|
from tempfile import mkdtemp
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from tests.functional import MagicMock, patch
|
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
|
#TODO: Items left to test
|
||||||
# PptviewController
|
# PptviewController
|
||||||
# __init__
|
|
||||||
# check_availablecheck_installed
|
|
||||||
# start_process(self)
|
# start_process(self)
|
||||||
# kill
|
# 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):
|
class TestPptviewDocument(TestCase):
|
||||||
"""
|
"""
|
||||||
|
@ -53,13 +53,12 @@ class TestMixin(object):
|
|||||||
Build the settings Object and initialise it
|
Build the settings Object and initialise it
|
||||||
"""
|
"""
|
||||||
Settings.setDefaultFormat(Settings.IniFormat)
|
Settings.setDefaultFormat(Settings.IniFormat)
|
||||||
fd, self.ini_file = mkstemp('.ini')
|
self.fd, self.ini_file = mkstemp('.ini')
|
||||||
Settings().set_filename(self.ini_file)
|
Settings().set_filename(self.ini_file)
|
||||||
|
|
||||||
def destroy_settings(self):
|
def destroy_settings(self):
|
||||||
"""
|
"""
|
||||||
Destroy the Settings Object
|
Destroy the Settings Object
|
||||||
"""
|
"""
|
||||||
if hasattr(self, 'fd'):
|
|
||||||
os.close(self.fd)
|
os.close(self.fd)
|
||||||
os.unlink(Settings().fileName())
|
os.unlink(Settings().fileName())
|
||||||
|
@ -31,6 +31,7 @@ Package to test the openlp.core.lib.pluginmanager package.
|
|||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
|
import gc
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
@ -65,6 +66,9 @@ class TestPluginManager(TestCase, TestMixin):
|
|||||||
del self.main_window
|
del self.main_window
|
||||||
Settings().remove('advanced/data path')
|
Settings().remove('advanced/data path')
|
||||||
self.destroy_settings()
|
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)
|
shutil.rmtree(self.temp_dir)
|
||||||
|
|
||||||
def find_plugins_test(self):
|
def find_plugins_test(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user