aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-07-05 21:50:43 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2023-07-07 11:14:17 +0200
commit3dfc872e356dd944d9cd03bccd8df5da8b1de472 (patch)
tree076b9643cba6f30c940a57e4547b10cced9bc4c4 /sources/pyside6/tests
parent88075cc356706c2a9a1771a01e246ec92c014b0e (diff)
Fix 3 strange cases in QSettings.value() round trips of a list
- The "default value" parameter had an int 0 default value, which lead to strange behavior ['0'] being returned for string lists with missing keys. - QStringList was not converted when forcing the type to be list due to the QByteArray split mechanism. - String values could not be coerced to a list Fix the default value to have a default {}. Add a helper function checking whether a custom type conversion is actually needed or the default QVariant converter can handle it. Pick-to: 6.5 Task-number: PYSIDE-2381 Change-Id: I91b22c05f851c2dc8c3792bd9f1446cfc8ceba51 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6/tests')
-rw-r--r--sources/pyside6/tests/QtCore/qsettings_test.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/sources/pyside6/tests/QtCore/qsettings_test.py b/sources/pyside6/tests/QtCore/qsettings_test.py
index 5bae79355..64ceffd70 100644
--- a/sources/pyside6/tests/QtCore/qsettings_test.py
+++ b/sources/pyside6/tests/QtCore/qsettings_test.py
@@ -51,8 +51,12 @@ class TestQSettings(unittest.TestCase):
self.assertTrue(dir.isValid())
file_name = dir.filePath('foo.ini')
settings = QSettings(file_name, QSettings.IniFormat)
+ sample_list = ["a", "b"]
+ string_list_of_empty = [""]
settings.setValue('zero_value', 0)
settings.setValue('empty_list', [])
+ settings.setValue('some_strings', sample_list)
+ settings.setValue('string_list_of_empty', string_list_of_empty)
settings.setValue('bool1', False)
settings.setValue('bool2', True)
del settings
@@ -66,6 +70,10 @@ class TestQSettings(unittest.TestCase):
r = settings.value("variable")
self.assertEqual(type(r), type(None))
+ r = settings.value("variable", type=list)
+ self.assertEqual(type(r), list)
+ self.assertEqual(len(r), 0)
+
# Handling zero value
r = settings.value('zero_value')
self.assertEqual(type(r), int)
@@ -82,6 +90,15 @@ class TestQSettings(unittest.TestCase):
self.assertTrue(len(r) == 0)
self.assertEqual(type(r), list)
+ r = settings.value('some_strings')
+ self.assertEqual(r, sample_list)
+
+ r = settings.value('some_strings', type=list)
+ self.assertEqual(r, sample_list)
+
+ r = settings.value('string_list_of_empty', type=list)
+ self.assertEqual(r, string_list_of_empty)
+
# Booleans
r = settings.value('bool1')
self.assertEqual(type(r), bool)