forked from openlp/openlp
Refactored get_uno_command & get_uno_instance
bzr-revno: 2456
This commit is contained in:
commit
e041d02c9c
@ -64,7 +64,6 @@ log = logging.getLogger(__name__ + '.__init__')
|
|||||||
APPLICATION_VERSION = {}
|
APPLICATION_VERSION = {}
|
||||||
IMAGES_FILTER = None
|
IMAGES_FILTER = None
|
||||||
ICU_COLLATOR = None
|
ICU_COLLATOR = None
|
||||||
UNO_CONNECTION_TYPE = 'pipe'
|
|
||||||
CONTROL_CHARS = re.compile(r'[\x00-\x1F\x7F-\x9F]', re.UNICODE)
|
CONTROL_CHARS = re.compile(r'[\x00-\x1F\x7F-\x9F]', re.UNICODE)
|
||||||
INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]', re.UNICODE)
|
INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]', re.UNICODE)
|
||||||
DIGITS_OR_NONDIGITS = re.compile(r'\d+|\D+', re.UNICODE)
|
DIGITS_OR_NONDIGITS = re.compile(r'\d+|\D+', re.UNICODE)
|
||||||
@ -423,7 +422,7 @@ def get_web_page(url, header=None, update_openlp=False):
|
|||||||
return page
|
return page
|
||||||
|
|
||||||
|
|
||||||
def get_uno_command():
|
def get_uno_command(connection_type='pipe'):
|
||||||
"""
|
"""
|
||||||
Returns the UNO command to launch an openoffice.org instance.
|
Returns the UNO command to launch an openoffice.org instance.
|
||||||
"""
|
"""
|
||||||
@ -434,21 +433,21 @@ def get_uno_command():
|
|||||||
raise FileNotFoundError('Command not found')
|
raise FileNotFoundError('Command not found')
|
||||||
|
|
||||||
OPTIONS = '--nologo --norestore --minimized --nodefault --nofirststartwizard'
|
OPTIONS = '--nologo --norestore --minimized --nodefault --nofirststartwizard'
|
||||||
if UNO_CONNECTION_TYPE == 'pipe':
|
if connection_type == 'pipe':
|
||||||
CONNECTION = '"--accept=pipe,name=openlp_pipe;urp;"'
|
CONNECTION = '"--accept=pipe,name=openlp_pipe;urp;"'
|
||||||
else:
|
else:
|
||||||
CONNECTION = '"--accept=socket,host=localhost,port=2002;urp;"'
|
CONNECTION = '"--accept=socket,host=localhost,port=2002;urp;"'
|
||||||
return '%s %s %s' % (command, OPTIONS, CONNECTION)
|
return '%s %s %s' % (command, OPTIONS, CONNECTION)
|
||||||
|
|
||||||
|
|
||||||
def get_uno_instance(resolver):
|
def get_uno_instance(resolver, connection_type='pipe'):
|
||||||
"""
|
"""
|
||||||
Returns a running openoffice.org instance.
|
Returns a running openoffice.org instance.
|
||||||
|
|
||||||
:param resolver: The UNO resolver to use to find a running instance.
|
:param resolver: The UNO resolver to use to find a running instance.
|
||||||
"""
|
"""
|
||||||
log.debug('get UNO Desktop Openoffice - resolve')
|
log.debug('get UNO Desktop Openoffice - resolve')
|
||||||
if UNO_CONNECTION_TYPE == 'pipe':
|
if connection_type == 'pipe':
|
||||||
return resolver.resolve('uno:pipe,name=openlp_pipe;urp;StarOffice.ComponentContext')
|
return resolver.resolve('uno:pipe,name=openlp_pipe;urp;StarOffice.ComponentContext')
|
||||||
else:
|
else:
|
||||||
return resolver.resolve('uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
|
return resolver.resolve('uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
|
||||||
|
@ -32,7 +32,7 @@ Package to test the openlp.core.utils.actions package.
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from openlp.core.common.settings import Settings
|
from openlp.core.common.settings import Settings
|
||||||
from openlp.core.utils import VersionThread, get_application_version
|
from openlp.core.utils import VersionThread, get_application_version, get_uno_command
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
from tests.helpers.testmixin import TestMixin
|
from tests.helpers.testmixin import TestMixin
|
||||||
|
|
||||||
@ -62,9 +62,74 @@ class TestInitFunctions(TestMixin, TestCase):
|
|||||||
# WHEN: We check to see if the version is different .
|
# WHEN: We check to see if the version is different .
|
||||||
with patch('PyQt4.QtCore.QThread'),\
|
with patch('PyQt4.QtCore.QThread'),\
|
||||||
patch('openlp.core.utils.get_application_version') as mocked_get_application_version:
|
patch('openlp.core.utils.get_application_version') as mocked_get_application_version:
|
||||||
mocked_get_application_version.return_value = \
|
mocked_get_application_version.return_value = {'version': '1.0.0', 'build': '', 'full': '2.0.4'}
|
||||||
{'version': '1.0.0', 'build': '', 'full': '2.0.4'}
|
|
||||||
version_thread = VersionThread(mocked_main_window)
|
version_thread = VersionThread(mocked_main_window)
|
||||||
version_thread.run()
|
version_thread.run()
|
||||||
# THEN: If the version has changed the main window is notified
|
# THEN: If the version has changed the main window is notified
|
||||||
self.assertTrue(mocked_main_window.emit.called, 'The main windows should have been notified')
|
self.assertTrue(mocked_main_window.emit.called, 'The main windows should have been notified')
|
||||||
|
|
||||||
|
def get_uno_command_libreoffice_command_exists_test(self):
|
||||||
|
"""
|
||||||
|
Test the ``get_uno_command`` function uses the libreoffice command when available.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
# GIVEN: A patched 'which' method which returns a path when called with 'libreoffice'
|
||||||
|
with patch('openlp.core.utils.which',
|
||||||
|
**{'side_effect': lambda command: {'libreoffice': '/usr/bin/libreoffice'}[command]}):
|
||||||
|
|
||||||
|
# WHEN: Calling get_uno_command
|
||||||
|
result = get_uno_command()
|
||||||
|
|
||||||
|
# THEN: The command 'libreoffice' should be called with the appropriate parameters
|
||||||
|
self.assertEquals(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
|
||||||
|
' "--accept=pipe,name=openlp_pipe;urp;"')
|
||||||
|
|
||||||
|
def get_uno_command_only_soffice_command_exists_test(self):
|
||||||
|
"""
|
||||||
|
Test the ``get_uno_command`` function uses the soffice command when the libreoffice command is not available.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
# GIVEN: A patched 'which' method which returns None when called with 'libreoffice' and a path when called with
|
||||||
|
# 'soffice'
|
||||||
|
with patch('openlp.core.utils.which',
|
||||||
|
**{'side_effect': lambda command: {'libreoffice': None, 'soffice': '/usr/bin/soffice'}[command]}):
|
||||||
|
|
||||||
|
# WHEN: Calling get_uno_command
|
||||||
|
result = get_uno_command()
|
||||||
|
|
||||||
|
# THEN: The command 'soffice' should be called with the appropriate parameters
|
||||||
|
self.assertEquals(result, 'soffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
|
||||||
|
' "--accept=pipe,name=openlp_pipe;urp;"')
|
||||||
|
|
||||||
|
def get_uno_command_when_no_command_exists_test(self):
|
||||||
|
"""
|
||||||
|
Test the ``get_uno_command`` function raises an FileNotFoundError when neither the libreoffice or soffice
|
||||||
|
commands are available.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
# GIVEN: A patched 'which' method which returns None
|
||||||
|
with patch('openlp.core.utils.which', **{'return_value': None}):
|
||||||
|
|
||||||
|
# WHEN: Calling get_uno_command
|
||||||
|
|
||||||
|
# THEN: a FileNotFoundError exception should be raised
|
||||||
|
self.assertRaises(FileNotFoundError, get_uno_command)
|
||||||
|
|
||||||
|
def get_uno_command_connection_type_test(self):
|
||||||
|
"""
|
||||||
|
Test the ``get_uno_command`` function when the connection type is anything other than pipe.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
# GIVEN: A patched 'which' method which returns 'libreoffice'
|
||||||
|
with patch('openlp.core.utils.which', **{'return_value': 'libreoffice'}):
|
||||||
|
|
||||||
|
# WHEN: Calling get_uno_command with a connection type other than pipe
|
||||||
|
result = get_uno_command('socket')
|
||||||
|
|
||||||
|
# THEN: The connection parameters should be set for socket
|
||||||
|
self.assertEqual(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
|
||||||
|
' "--accept=socket,host=localhost,port=2002;urp;"')
|
||||||
|
Loading…
Reference in New Issue
Block a user