forked from openlp/openlp
Update the appveyor build script. Fix various bugs that caused the frozen app from working.
bzr-revno: 2848
This commit is contained in:
commit
07ebc22fa7
|
@ -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]
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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..
|
||||||
|
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -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()]
|
||||||
|
|
Loading…
Reference in New Issue