Update the appveyor build script. Fix various bugs that caused the frozen app from working.

bzr-revno: 2848
This commit is contained in:
Tomas Groth 2019-03-07 21:51:00 +01:00
commit 07ebc22fa7
7 changed files with 34 additions and 22 deletions

View File

@ -706,6 +706,7 @@ class Renderer(RegistryBase, LogMixin, RegistryProperties, DisplayWindow):
else: else:
# The remaining elements do not fit, thus reset the indexes, create a new list and continue. # The remaining elements do not fit, thus reset the indexes, create a new list and continue.
raw_list = raw_list[index + 1:] raw_list = raw_list[index + 1:]
log.debug(raw_list)
raw_list[0] = raw_tags + raw_list[0] raw_list[0] = raw_tags + raw_list[0]
html_list = html_list[index + 1:] html_list = html_list[index + 1:]
html_list[0] = html_tags + html_list[0] html_list[0] = html_tags + html_list[0]

View File

@ -29,16 +29,14 @@ import copy
from PyQt5 import QtCore, QtWebChannel, QtWidgets from PyQt5 import QtCore, QtWebChannel, QtWidgets
from openlp.core.common.path import Path, path_to_str from openlp.core.common.path import path_to_str
from openlp.core.common.settings import Settings from openlp.core.common.settings import Settings
from openlp.core.common.registry import Registry from openlp.core.common.registry import Registry
from openlp.core.common.applocation import AppLocation
from openlp.core.ui import HideMode from openlp.core.ui import HideMode
from openlp.core.display.screens import ScreenList from openlp.core.display.screens import ScreenList
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
DISPLAY_PATH = Path(__file__).parent / 'html' / 'display.html'
CHECKERBOARD_PATH = Path(__file__).parent / 'html' / 'checkerboard.png'
OPENLP_SPLASH_SCREEN_PATH = Path(__file__).parent / 'html' / 'openlp-splash-screen.png'
class MediaWatcher(QtCore.QObject): class MediaWatcher(QtCore.QObject):
@ -126,7 +124,11 @@ class DisplayWindow(QtWidgets.QWidget):
self.webview.page().setBackgroundColor(QtCore.Qt.transparent) self.webview.page().setBackgroundColor(QtCore.Qt.transparent)
self.layout.addWidget(self.webview) self.layout.addWidget(self.webview)
self.webview.loadFinished.connect(self.after_loaded) self.webview.loadFinished.connect(self.after_loaded)
self.set_url(QtCore.QUrl.fromLocalFile(path_to_str(DISPLAY_PATH))) display_base_path = AppLocation.get_directory(AppLocation.AppDir) / 'core' / 'display' / 'html'
self.display_path = display_base_path / 'display.html'
self.checkerboard_path = display_base_path / 'checkerboard.png'
self.openlp_splash_screen_path = display_base_path / 'openlp-splash-screen.png'
self.set_url(QtCore.QUrl.fromLocalFile(path_to_str(self.display_path)))
self.media_watcher = MediaWatcher(self) self.media_watcher = MediaWatcher(self)
self.channel = QtWebChannel.QWebChannel(self) self.channel = QtWebChannel.QWebChannel(self)
self.channel.registerObject('mediaWatcher', self.media_watcher) self.channel.registerObject('mediaWatcher', self.media_watcher)
@ -169,7 +171,7 @@ class DisplayWindow(QtWidgets.QWidget):
bg_color = Settings().value('core/logo background color') bg_color = Settings().value('core/logo background color')
image = Settings().value('core/logo file') image = Settings().value('core/logo file')
if path_to_str(image).startswith(':'): if path_to_str(image).startswith(':'):
image = OPENLP_SPLASH_SCREEN_PATH image = self.openlp_splash_screen_path
image_uri = image.as_uri() image_uri = image.as_uri()
self.run_javascript('Display.setStartupSplashScreen("{bg_color}", "{image}");'.format(bg_color=bg_color, self.run_javascript('Display.setStartupSplashScreen("{bg_color}", "{image}");'.format(bg_color=bg_color,
image=image_uri)) image=image_uri))
@ -329,7 +331,7 @@ class DisplayWindow(QtWidgets.QWidget):
if theme.background_type == 'transparent' and not self.is_display: if theme.background_type == 'transparent' and not self.is_display:
theme_copy = copy.deepcopy(theme) theme_copy = copy.deepcopy(theme)
theme_copy.background_type = 'image' theme_copy.background_type = 'image'
theme_copy.background_filename = CHECKERBOARD_PATH theme_copy.background_filename = self.checkerboard_path
exported_theme = theme_copy.export_theme() exported_theme = theme_copy.export_theme()
else: else:
exported_theme = theme.export_theme() exported_theme = theme.export_theme()

View File

@ -46,6 +46,7 @@ from openlp.plugins.presentations.lib.presentationcontroller import Presentation
if is_win(): if is_win():
from win32com.client import Dispatch from win32com.client import Dispatch
import pywintypes import pywintypes
uno_available = False
# Declare an empty exception to match the exception imported from UNO # Declare an empty exception to match the exception imported from UNO
class ErrorCodeIOException(Exception): class ErrorCodeIOException(Exception):

View File

@ -1,5 +1,8 @@
version: OpenLP-win-ci-b{build} version: OpenLP-win-ci-b{build}
image:
- Visual Studio 2017
clone_script: clone_script:
- curl -L https://bazaar.launchpad.net/BRANCHPATH/tarball -o sourcecode.tar.gz - curl -L https://bazaar.launchpad.net/BRANCHPATH/tarball -o sourcecode.tar.gz
- 7z e sourcecode.tar.gz - 7z e sourcecode.tar.gz
@ -7,15 +10,17 @@ clone_script:
- mv BRANCHPATH openlp-branch - mv BRANCHPATH openlp-branch
environment: environment:
PYTHON: C:\\Python37-x64 matrix:
- PYTHON: C:\\Python37-x64
- PYTHON: C:\\Python37
install: install:
# Install dependencies from pypi # Install dependencies from pypi
- "%PYTHON%\\python.exe -m pip install sqlalchemy alembic appdirs chardet beautifulsoup4 lxml Mako mysql-connector-python nose mock pyodbc psycopg2 pypiwin32 websockets asyncio waitress six webob requests QtAwesome PyQt5 pymediainfo" - "%PYTHON%\\python.exe -m pip install sqlalchemy alembic appdirs chardet beautifulsoup4 lxml Mako mysql-connector-python pytest mock pyodbc psycopg2 pypiwin32 websockets asyncio waitress six webob requests QtAwesome PyQt5 PyQtWebEngine pymediainfo"
# Download and unpack mupdf # Download and unpack mupdf
- appveyor DownloadFile https://mupdf.com/downloads/archive/mupdf-1.14.0-windows.zip - appveyor DownloadFile https://mupdf.com/downloads/archive/mupdf-1.14.0-windows.zip
- 7z x mupdf-1.14.0-windows.zip - 7z x mupdf-1.14.0-windows.zip
- cp mupdf-1.14.0-windows/mupdf.exe openlp-branch/mupdf.exe - cp mupdf-1.14.0-windows/mutool.exe openlp-branch/mutool.exe
# Download and unpack mediainfo # Download and unpack mediainfo
- appveyor DownloadFile https://mediaarea.net/download/binary/mediainfo/18.08.1/MediaInfo_CLI_18.08.1_Windows_i386.zip - appveyor DownloadFile https://mediaarea.net/download/binary/mediainfo/18.08.1/MediaInfo_CLI_18.08.1_Windows_i386.zip
- mkdir MediaInfo - mkdir MediaInfo
@ -27,7 +32,7 @@ build: off
test_script: test_script:
- cd openlp-branch - cd openlp-branch
# Run the tests # Run the tests
- "%PYTHON%\\python.exe -m nose -v tests" - "%PYTHON%\\python.exe -m pytest -v tests"
# Go back to the user root folder # Go back to the user root folder
- cd.. - cd..

View File

@ -15,13 +15,12 @@
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. # # more details. #
# # # #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
from tempfile import mkdtemp
# You should have received a copy of the GNU General Public License along # # You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 # # with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
import os
from tempfile import mkdtemp
from unittest import TestCase from unittest import TestCase
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
@ -57,14 +56,15 @@ class TestRemoteDeploy(TestCase):
# GIVEN: A new downloaded zip file # GIVEN: A new downloaded zip file
mocked_zipfile = MagicMock() mocked_zipfile = MagicMock()
MockZipFile.return_value = mocked_zipfile MockZipFile.return_value = mocked_zipfile
root_path = Path('/tmp/remotes') root_path_str = '{sep}tmp{sep}remotes'.format(sep=os.sep)
root_path = Path(root_path_str)
# WHEN: deploy_zipfile() is called # WHEN: deploy_zipfile() is called
deploy_zipfile(root_path, 'site.zip') deploy_zipfile(root_path, 'site.zip')
# THEN: the zip file should have been extracted to the right location # THEN: the zip file should have been extracted to the right location
MockZipFile.assert_called_once_with('/tmp/remotes/site.zip') MockZipFile.assert_called_once_with(root_path_str + os.sep + 'site.zip')
mocked_zipfile.extractall.assert_called_once_with('/tmp/remotes') mocked_zipfile.extractall.assert_called_once_with(root_path_str)
@patch('openlp.core.api.deploy.Registry') @patch('openlp.core.api.deploy.Registry')
@patch('openlp.core.api.deploy.get_web_page') @patch('openlp.core.api.deploy.get_web_page')

View File

@ -324,7 +324,7 @@ class TestPath(TestCase):
obj = path.json_object(extra=1, args=2) obj = path.json_object(extra=1, args=2)
# THEN: A JSON decodable object should have been returned. # THEN: A JSON decodable object should have been returned.
assert obj == {'__Path__': ('/', 'base', 'path', 'to', 'fi.le')} assert obj == {'__Path__': (os.sep, 'base', 'path', 'to', 'fi.le')}
def test_path_json_object_base_path(self): def test_path_json_object_base_path(self):
""" """

View File

@ -24,7 +24,7 @@ Package to test for proper bzr tags.
""" """
import os import os
from subprocess import PIPE, Popen from subprocess import PIPE, Popen
from unittest import TestCase from unittest import TestCase, SkipTest
TAGS1 = {'1.9.0', '1.9.1', '1.9.2', '1.9.3', '1.9.4', '1.9.5', '1.9.6', '1.9.7', '1.9.8', '1.9.9', '1.9.10', TAGS1 = {'1.9.0', '1.9.1', '1.9.2', '1.9.3', '1.9.4', '1.9.5', '1.9.6', '1.9.7', '1.9.8', '1.9.9', '1.9.10',
@ -42,7 +42,10 @@ class TestBzrTags(TestCase):
path = os.path.dirname(__file__) path = os.path.dirname(__file__)
# WHEN getting the branches tags # WHEN getting the branches tags
bzr = Popen(('bzr', 'tags', '--directory=' + path), stdout=PIPE) try:
bzr = Popen(('bzr', 'tags', '--directory=' + path), stdout=PIPE)
except Exception:
raise SkipTest('bzr is not installed')
std_out = bzr.communicate()[0] std_out = bzr.communicate()[0]
count = len(TAGS1) count = len(TAGS1)
tags = [line.decode('utf-8').split()[0] for line in std_out.splitlines()] tags = [line.decode('utf-8').split()[0] for line in std_out.splitlines()]