Refactor get_uno_command & get_uno_instance

This commit is contained in:
Phill Ridout 2014-12-08 07:19:51 +00:00
parent 6fd0612748
commit 2642a21d53
2 changed files with 12 additions and 18 deletions

View File

@ -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')

View File

@ -32,8 +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 import utils from openlp.core.utils import VersionThread, get_application_version, get_uno_command
from openlp.core.utils import VersionThread, get_application_version
from tests.functional import MagicMock, patch from tests.functional import MagicMock, patch
from tests.helpers.testmixin import TestMixin from tests.helpers.testmixin import TestMixin
@ -79,9 +78,8 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which', with patch('openlp.core.utils.which',
**{'side_effect': lambda command: {'libreoffice': '/usr/bin/libreoffice'}[command]}): **{'side_effect': lambda command: {'libreoffice': '/usr/bin/libreoffice'}[command]}):
# WHEN: Calling get_uno_command with a pipe connection type # WHEN: Calling get_uno_command
utils.UNO_CONNECTION_TYPE = 'pipe' result = get_uno_command()
result = utils.get_uno_command()
# THEN: The command 'libreoffice' should be called with the appropriate parameters # THEN: The command 'libreoffice' should be called with the appropriate parameters
self.assertEquals(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard' self.assertEquals(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
@ -98,9 +96,8 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which', with patch('openlp.core.utils.which',
**{'side_effect': lambda command: {'libreoffice': None, 'soffice': '/usr/bin/soffice'}[command]}): **{'side_effect': lambda command: {'libreoffice': None, 'soffice': '/usr/bin/soffice'}[command]}):
# WHEN: Calling get_uno_command with a pipe connection type # WHEN: Calling get_uno_command
utils.UNO_CONNECTION_TYPE = 'pipe' result = get_uno_command()
result = utils.get_uno_command()
# THEN: The command 'soffice' should be called with the appropriate parameters # THEN: The command 'soffice' should be called with the appropriate parameters
self.assertEquals(result, 'soffice --nologo --norestore --minimized --nodefault --nofirststartwizard' self.assertEquals(result, 'soffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
@ -116,11 +113,10 @@ class TestInitFunctions(TestMixin, TestCase):
# GIVEN: A patched 'which' method which returns None # GIVEN: A patched 'which' method which returns None
with patch('openlp.core.utils.which', **{'return_value': None}): with patch('openlp.core.utils.which', **{'return_value': None}):
# WHEN: Calling get_uno_command with a pipe connection type # WHEN: Calling get_uno_command
utils.UNO_CONNECTION_TYPE = 'pipe'
# THEN: a FileNotFoundError exception should be raised # THEN: a FileNotFoundError exception should be raised
self.assertRaises(FileNotFoundError, utils.get_uno_command) self.assertRaises(FileNotFoundError, get_uno_command)
def get_uno_command_connection_type_test(self): def get_uno_command_connection_type_test(self):
""" """
@ -132,8 +128,7 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which', **{'return_value': 'libreoffice'}): with patch('openlp.core.utils.which', **{'return_value': 'libreoffice'}):
# WHEN: Calling get_uno_command with a connection type other than pipe # WHEN: Calling get_uno_command with a connection type other than pipe
utils.UNO_CONNECTION_TYPE = 'socket' result = get_uno_command('socket')
result = utils.get_uno_command()
# THEN: The connection parameters should be set for socket # THEN: The connection parameters should be set for socket
self.assertEqual(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard' self.assertEqual(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'