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 = {}
IMAGES_FILTER = None
ICU_COLLATOR = None
UNO_CONNECTION_TYPE = 'pipe'
CONTROL_CHARS = re.compile(r'[\x00-\x1F\x7F-\x9F]', re.UNICODE)
INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]', 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
def get_uno_command():
def get_uno_command(connection_type='pipe'):
"""
Returns the UNO command to launch an openoffice.org instance.
"""
@ -434,21 +433,21 @@ def get_uno_command():
raise FileNotFoundError('Command not found')
OPTIONS = '--nologo --norestore --minimized --nodefault --nofirststartwizard'
if UNO_CONNECTION_TYPE == 'pipe':
if connection_type == 'pipe':
CONNECTION = '"--accept=pipe,name=openlp_pipe;urp;"'
else:
CONNECTION = '"--accept=socket,host=localhost,port=2002;urp;"'
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.
:param resolver: The UNO resolver to use to find a running instance.
"""
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')
else:
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 openlp.core.common.settings import Settings
from openlp.core import utils
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.helpers.testmixin import TestMixin
@ -79,9 +78,8 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which',
**{'side_effect': lambda command: {'libreoffice': '/usr/bin/libreoffice'}[command]}):
# WHEN: Calling get_uno_command with a pipe connection type
utils.UNO_CONNECTION_TYPE = 'pipe'
result = utils.get_uno_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'
@ -98,9 +96,8 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which',
**{'side_effect': lambda command: {'libreoffice': None, 'soffice': '/usr/bin/soffice'}[command]}):
# WHEN: Calling get_uno_command with a pipe connection type
utils.UNO_CONNECTION_TYPE = 'pipe'
result = utils.get_uno_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'
@ -116,11 +113,10 @@ class TestInitFunctions(TestMixin, TestCase):
# GIVEN: A patched 'which' method which returns None
with patch('openlp.core.utils.which', **{'return_value': None}):
# WHEN: Calling get_uno_command with a pipe connection type
utils.UNO_CONNECTION_TYPE = 'pipe'
# WHEN: Calling get_uno_command
# 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):
"""
@ -132,8 +128,7 @@ class TestInitFunctions(TestMixin, TestCase):
with patch('openlp.core.utils.which', **{'return_value': 'libreoffice'}):
# WHEN: Calling get_uno_command with a connection type other than pipe
utils.UNO_CONNECTION_TYPE = 'socket'
result = utils.get_uno_command()
result = get_uno_command('socket')
# THEN: The connection parameters should be set for socket
self.assertEqual(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'