diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-07-06 14:59:57 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-07-06 15:00:02 +0200 |
commit | e2805675caca2f275f7074e94e3cf04de55f0b3a (patch) | |
tree | 6f5bc7b2272815f503e62d99ca2e70a93893cfd4 /sources/pyside2/tests | |
parent | e729091759156f417d987ede9de8961d33f28079 (diff) | |
parent | b20dfab4bc9a4887160e359b8d23dd25760ff948 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I52be54b4bd400df557255b7d88eb22cb7260ca31
Diffstat (limited to 'sources/pyside2/tests')
-rw-r--r-- | sources/pyside2/tests/QtCore/CMakeLists.txt | 2 | ||||
-rw-r--r-- | sources/pyside2/tests/QtCore/attr_cache_py3k.py | 65 | ||||
-rw-r--r-- | sources/pyside2/tests/QtCore/emoji_string_test.py | 78 | ||||
-rw-r--r-- | sources/pyside2/tests/QtWidgets/qvariant_test.py | 42 |
4 files changed, 179 insertions, 8 deletions
diff --git a/sources/pyside2/tests/QtCore/CMakeLists.txt b/sources/pyside2/tests/QtCore/CMakeLists.txt index dc7aa3ddd..649e796cc 100644 --- a/sources/pyside2/tests/QtCore/CMakeLists.txt +++ b/sources/pyside2/tests/QtCore/CMakeLists.txt @@ -1,3 +1,4 @@ +PYSIDE_TEST(attr_cache_py3k.py) PYSIDE_TEST(bug_278_test.py) PYSIDE_TEST(bug_332.py) PYSIDE_TEST(bug_408.py) @@ -34,6 +35,7 @@ PYSIDE_TEST(deepcopy_test.py) PYSIDE_TEST(deletelater_test.py) PYSIDE_TEST(destroysignal_test.py) PYSIDE_TEST(duck_punching_test.py) +PYSIDE_TEST(emoji_string_test.py) PYSIDE_TEST(hash_test.py) PYSIDE_TEST(inherits_test.py) PYSIDE_TEST(max_signals.py) diff --git a/sources/pyside2/tests/QtCore/attr_cache_py3k.py b/sources/pyside2/tests/QtCore/attr_cache_py3k.py new file mode 100644 index 000000000..ec0575b02 --- /dev/null +++ b/sources/pyside2/tests/QtCore/attr_cache_py3k.py @@ -0,0 +1,65 @@ +# This Python file uses the following encoding: utf-8 + +############################################################################# +## +## Copyright (C) 2018 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$ +## +############################################################################# + +''' +Unit tests for attribute cache in Python 3 + +This is the original code from the bug report +https://bugreports.qt.io/browse/PYSIDE-60 +''' + +from PySide2.QtCore import QObject + + +class A(QObject): + instance = 1 + + @classmethod + def test(cls): + cls.instance + cls.instance = cls() + assert "<__main__.A object " in repr(cls.__dict__['instance']) + assert "<__main__.A object " in repr(cls.instance) + assert "<__main__.A object " in repr(type.__getattribute__(cls, 'instance')) + + +if __name__ == "__main__": + A.test() diff --git a/sources/pyside2/tests/QtCore/emoji_string_test.py b/sources/pyside2/tests/QtCore/emoji_string_test.py new file mode 100644 index 000000000..2e0522878 --- /dev/null +++ b/sources/pyside2/tests/QtCore/emoji_string_test.py @@ -0,0 +1,78 @@ +# This Python file uses the following encoding: utf-8 + +############################################################################# +## +## Copyright (C) 2018 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$ +## +############################################################################# + +""" +emoji-string-test.py + +This is the original code from the bug report +https://bugreports.qt.io/browse/PYSIDE-336 + +The only changes are the emoji constant creation which avoids unicode in the +source itself, utf8 encoding in line 1 and a short plausibility test to make +it safely fail. +""" + +import sys +from PySide2 import QtCore + +emoji_str = u'\U0001f632' + u' ' # "😲 " + +class TestStuff(QtCore.QObject): + testsig = QtCore.Signal(str) + + def a_nop(self, sendMeAnEmoji): + print(sendMeAnEmoji) + return + + def __init__(self): + super(TestStuff, self).__init__() + self.testsig.connect(self.a_nop) + self.testsig.emit(emoji_str) + + def plausi(self): + # Python 2 may be built with UCS-2 or UCS-4 support. + # UCS-2 creates 2 surrogate code points. See + # https://stackoverflow.com/questions/30775689/python-length-of-unicode-string-confusion + assert len(emoji_str) == 2 if sys.maxunicode > 0xffff else 3 + +if __name__ == "__main__": + mything = TestStuff() + mything.plausi() diff --git a/sources/pyside2/tests/QtWidgets/qvariant_test.py b/sources/pyside2/tests/QtWidgets/qvariant_test.py index a595f405b..907e6d9ed 100644 --- a/sources/pyside2/tests/QtWidgets/qvariant_test.py +++ b/sources/pyside2/tests/QtWidgets/qvariant_test.py @@ -27,8 +27,10 @@ ############################################################################# import unittest -from PySide2.QtCore import * -from PySide2.QtWidgets import * +from PySide2.QtWidgets import (QApplication, QComboBox, QGraphicsScene, + QGraphicsRectItem) + +from helper import UsesQApplication class MyDiagram(QGraphicsScene): pass @@ -37,14 +39,38 @@ class MyItem(QGraphicsRectItem): def itemChange(self, change, value): return value; -class QGraphicsSceneOnQVariantTest(unittest.TestCase): +class Sequence(object): + # Having the __getitem__ method on a class transform the Python + # type to a PySequence. + # Before the patch: aa75437f9119d997dd290471ac3e2cc88ca88bf1 + # "Fix QVariant conversions when using PySequences" + # one could not use an object from this class, because internally + # we were requiring that the PySequence was finite. + def __getitem__(self, key): + raise IndexError() + +class QGraphicsSceneOnQVariantTest(UsesQApplication): """Test storage ot QGraphicsScene into QVariants""" + def setUp(self): + super(QGraphicsSceneOnQVariantTest, self).setUp() + self.s = MyDiagram() + self.i = MyItem() + self.combo = QComboBox() + + def tearDown(self): + del self.s + del self.i + del self.combo + super(QGraphicsSceneOnQVariantTest, self).tearDown() + def testIt(self): - app = QApplication([]) - s = MyDiagram() - i = MyItem() - s.addItem(i) - self.assertEqual(len(s.items()), 1) + self.s.addItem(self.i) + self.assertEqual(len(self.s.items()), 1) + + def testSequence(self): + # PYSIDE-641 + self.combo.addItem("test", userData=Sequence()) + self.assertTrue(isinstance(self.combo.itemData(0), Sequence)) if __name__ == '__main__': unittest.main() |