diff options
| author | Christian Tismer <tismer@stackless.com> | 2023-03-08 14:45:32 +0100 |
|---|---|---|
| committer | Christian Tismer <tismer@stackless.com> | 2023-03-09 17:42:02 +0100 |
| commit | d074f98ded062760ca6c237b17221cbba05f5d73 (patch) | |
| tree | cba7a689a4459725aa17865205c796998a15f5ca /sources/pyside6/tests | |
| parent | 3e0343a214075efe2660ec36359ea09e8435b562 (diff) | |
SignalInstance: Fix more very old errors due to unlucky exposure
SignalInstance unfortunately can be created directly without
a calling Signal. This is an old design error that cannot easily
be reverted because that is now the API.
Fixed by printing "(no signature)":
* print(SignalInstance()) # prints "(no signature)"
Fixed by producing a runtime error:
* SignalInstance().connect(lambda: None)
* SignalInstance().disconnect()
* SignalInstance().emit()
Thanks to <bers bers> who reported them all.
Task-number: PYSIDE-79
Change-Id: I92598d963b9796453fbd17c1526a674fa007e5e8
Pick-to: 6.4
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
Diffstat (limited to 'sources/pyside6/tests')
| -rw-r--r-- | sources/pyside6/tests/pysidetest/signalinstance_equality_test.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sources/pyside6/tests/pysidetest/signalinstance_equality_test.py b/sources/pyside6/tests/pysidetest/signalinstance_equality_test.py index 732420c4d..d09d63c0e 100644 --- a/sources/pyside6/tests/pysidetest/signalinstance_equality_test.py +++ b/sources/pyside6/tests/pysidetest/signalinstance_equality_test.py @@ -12,7 +12,7 @@ init_test_paths(False) from helper.usesqapplication import UsesQApplication -from PySide6.QtCore import QFile, QObject, QTimer, Signal, Slot +from PySide6.QtCore import QFile, QObject, QTimer, Signal, SignalInstance, Slot from PySide6.QtWidgets import QSlider @@ -40,7 +40,16 @@ class TestSignalInstance(unittest.TestCase): def test_custom_inherited_signal_instances_are_equal(self): o = D() self.assertTrue(o.custom_signal == o.custom_signal) - + # additional tests of old errors from 2010 or so + def test_uninitialized_SignalInstance(self): + # This will no longer crash + print(SignalInstance()) + with self.assertRaises(RuntimeError): + SignalInstance().connect(lambda: None) + with self.assertRaises(RuntimeError): + SignalInstance().disconnect() + with self.assertRaises(RuntimeError): + SignalInstance().emit() class MyWidget(QSlider): valueChanged = Signal(tuple) |
