Tomas Groth has proposed merging lp:~tomasgroth/openlp/portable-path into lp:openlp.
Commit message: Make it possible to specify the portable path to use for OpenLP Data when in portable mode. This is very useful during development. Requested reviews: Phill (phill-ridout) For more details, see: https://code.launchpad.net/~tomasgroth/openlp/portable-path/+merge/366785 -- Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/app.py' --- openlp/core/app.py 2019-04-13 13:00:22 +0000 +++ openlp/core/app.py 2019-05-01 19:29:26 +0000 @@ -30,6 +30,7 @@ import logging import sys import time +import os from datetime import datetime from traceback import format_exception @@ -40,7 +41,7 @@ from openlp.core.common.applocation import AppLocation from openlp.core.loader import loader from openlp.core.common.i18n import LanguageManager, UiStrings, translate -from openlp.core.common.path import copytree, create_paths +from openlp.core.common.path import copytree, create_paths, Path from openlp.core.common.registry import Registry from openlp.core.common.settings import Settings from openlp.core.display.screens import ScreenList @@ -301,6 +302,9 @@ help='Set logging to LEVEL level. Valid values are "debug", "info", "warning".') parser.add_argument('-p', '--portable', dest='portable', action='store_true', help='Specify if this should be run as a portable app, ') + parser.add_argument('-pp', '--portable-path', dest='portablepath', default=None, + help='Specify the path of the portable data, defaults to "{dir_name}".'.format( + dir_name=os.path.join('<AppDir>', '..', '..'))) parser.add_argument('-w', '--no-web-server', dest='no_web_server', action='store_true', help='Turn off the Web and Socket Server ') parser.add_argument('rargs', nargs='?', default=[]) @@ -356,7 +360,14 @@ application.setApplicationName('OpenLPPortable') Settings.setDefaultFormat(Settings.IniFormat) # Get location OpenLPPortable.ini - portable_path = (AppLocation.get_directory(AppLocation.AppDir) / '..' / '..').resolve() + if args.portablepath: + if os.path.isabs(args.portablepath): + portable_path = Path(args.portablepath) + else: + portable_path = AppLocation.get_directory(AppLocation.AppDir) / '..' / args.portablepath + else: + portable_path = AppLocation.get_directory(AppLocation.AppDir) / '..' / '..' + portable_path = portable_path.resolve() data_path = portable_path / 'Data' set_up_logging(portable_path / 'Other') log.info('Running portable') === modified file 'tests/functional/openlp_core/test_app.py' --- tests/functional/openlp_core/test_app.py 2019-04-13 13:00:22 +0000 +++ tests/functional/openlp_core/test_app.py 2019-05-01 19:29:26 +0000 @@ -29,6 +29,7 @@ sys.modules['PyQt5.QtWebEngineWidgets'] = MagicMock() from openlp.core.app import OpenLP, parse_options +from openlp.core.common import is_win from openlp.core.common.settings import Settings from tests.utils.constants import RESOURCE_PATH @@ -84,6 +85,28 @@ assert args.rargs == [], 'The service file should be blank' +def test_parse_options_portable_and_portable_path(): + """ + Test the parse options process works portable and portable-path + """ + # GIVEN: a a set of system arguments. + if is_win(): + data_path = 'c:\\temp\\openlp-data' + else: + data_path = '/tmp/openlp-data' + sys.argv[1:] = ['--portable', '--portable-path', '{datapath}'.format(datapath=data_path)] + + # WHEN: We we parse them to expand to options + args = parse_options() + + # THEN: the following fields will have been extracted. + assert args.loglevel == 'warning', 'The log level should be set to warning' + assert args.no_error_form is False, 'The no_error_form should be set to False' + assert args.portable is True, 'The portable flag should be set to true' + assert args.portablepath == data_path, 'The portable path should be set as expected' + assert args.rargs == [], 'The service file should be blank' + + def test_parse_options_all_no_file(): """ Test the parse options process works with two options
_______________________________________________ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp