aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2019-03-19 17:00:08 +0100
committerChristian Tismer <tismer@stackless.com>2019-04-08 13:55:43 +0000
commit728e94e37d44229d8f31dee4761eaf66f89bf01e (patch)
tree98b7c7a89bdb1e23b2f4863b6d80fdcc4061ae2c /examples
parentafd4ee23124541c23fe58639f138ed7689cac562 (diff)
Automatically Test Small Example With PyInstaller
A simple hello.py script was modified for running in PyInstaller and stopping to execute after 2 seconds. The reason is to test that PyInstaller works correctly together with the embedded mode of the signature extension on all platforms. The script did first not work on Windows. This is now solved, after an import in pyside2_config.py is fixed. Currently, there are several configuration errors in COIN. Errors are therefore skipped in the PyInstaller build. The test tests only if the generated script works. Change-Id: I7a1b1e738d523b83cc3fe5beafa7e2579f9c7f48 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'examples')
-rw-r--r--examples/examples.pyproject1
-rw-r--r--examples/installer_test/hello.py103
-rw-r--r--examples/utils/pyside2_config.py4
3 files changed, 106 insertions, 2 deletions
diff --git a/examples/examples.pyproject b/examples/examples.pyproject
index 5c96e9978..559989f9f 100644
--- a/examples/examples.pyproject
+++ b/examples/examples.pyproject
@@ -16,6 +16,7 @@
"declarative/signals/qmltopy3/main.py",
"declarative/signals/qmltopy4/main.py",
"declarative/usingmodel.py",
+ "installer_test/hello.py"
"macextras/macpasteboardmime.py",
"multimedia/audiooutput.py",
"multimedia/camera.py",
diff --git a/examples/installer_test/hello.py b/examples/installer_test/hello.py
new file mode 100644
index 000000000..77b050206
--- /dev/null
+++ b/examples/installer_test/hello.py
@@ -0,0 +1,103 @@
+# This Python file uses the following encoding: utf-8
+# It has been edited by fix-complaints.py .
+
+#############################################################################
+##
+## Copyright (C) 2019 The Qt Company Ltd.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is part of Qt for Python.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 3 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL3 included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 3 requirements
+## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 2.0 or (at your option) the GNU General
+## Public license version 3 or any later version approved by the KDE Free
+## Qt Foundation. The licenses are as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-2.0.html and
+## https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+"""
+hello.py
+--------
+
+This simple script shows a label with changing "Hello World" messages.
+It can be used directly as a script, but we use it also to automatically
+test PyInstaller. See testing/wheel_tester.py .
+
+When used with PyInstaller, it automatically stops its execution after
+2 seconds.
+"""
+from __future__ import print_function
+
+import sys
+import random
+import platform
+import time
+
+from PySide2.QtWidgets import (QApplication, QLabel, QPushButton,
+ QVBoxLayout, QWidget)
+from PySide2.QtCore import Slot, Qt, QTimer
+
+class MyWidget(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+
+ self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",
+ "Hola Mundo", "Привет мир"]
+
+ self.button = QPushButton("Click me!")
+ self.text = QLabel("Hello World embedded={}".format(sys.pyside_uses_embedding))
+ self.text.setAlignment(Qt.AlignCenter)
+
+ self.layout = QVBoxLayout()
+ self.layout.addWidget(self.text)
+ self.layout.addWidget(self.button)
+ self.setLayout(self.layout)
+
+ # Connecting the signal
+ self.button.clicked.connect(self.magic)
+
+ @Slot()
+ def magic(self):
+ self.text.setText(random.choice(self.hello))
+
+if __name__ == "__main__":
+ print("Start of hello.py ", time.ctime())
+ print(" sys.version = {}".format(sys.version.splitlines()[0]))
+ print(" platform.platform() = {}".format(platform.platform()))
+
+ app = QApplication()
+
+ widget = MyWidget()
+ widget.resize(800, 600)
+ widget.show()
+ if sys.pyside_uses_embedding:
+ milliseconds = 2 * 1000 # run 2 second
+ QTimer.singleShot(milliseconds, app.quit)
+ retcode = app.exec_()
+ print("End of hello.py ", time.ctime())
+ sys.exit(retcode)
diff --git a/examples/utils/pyside2_config.py b/examples/utils/pyside2_config.py
index c62b38cad..973410100 100644
--- a/examples/utils/pyside2_config.py
+++ b/examples/utils/pyside2_config.py
@@ -1,6 +1,6 @@
#############################################################################
##
-## Copyright (C) 2018 The Qt Company Ltd.
+## Copyright (C) 2019 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -149,7 +149,7 @@ def shared_library_suffix():
def import_suffixes():
if (sys.version_info >= (3, 4)):
- import importlib
+ import importlib.machinery
return importlib.machinery.EXTENSION_SUFFIXES
else:
import imp