diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-07-05 21:50:43 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-07-07 11:14:17 +0200 |
| commit | 3dfc872e356dd944d9cd03bccd8df5da8b1de472 (patch) | |
| tree | 076b9643cba6f30c940a57e4547b10cced9bc4c4 /sources/pyside6/tests | |
| parent | 88075cc356706c2a9a1771a01e246ec92c014b0e (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.py | 17 |
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) |
