From 54457efbf96bf644f44a9ac1b55dc98847dad73e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 8 Dec 2017 08:56:22 +0100 Subject: Fix QtCore test bug829 to run on Windows The test used Python functionality to create a temporary file which caused an access error on Windows, apparently due to the file still being open. Besides, the temporary file was leaked. Rewrite using QTemporaryFile and make sure the file is closed and the QTemporaryFile is deleted before using it and delete it in __del__(). Task-number: PYSIDE-431 Change-Id: I5d63e76ead7169d9f3f2267ee53aa91b601a3968 Reviewed-by: Christian Tismer --- sources/pyside2/tests/QtCore/bug_829.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'sources') diff --git a/sources/pyside2/tests/QtCore/bug_829.py b/sources/pyside2/tests/QtCore/bug_829.py index 5b14f7b59..730a2e9ed 100644 --- a/sources/pyside2/tests/QtCore/bug_829.py +++ b/sources/pyside2/tests/QtCore/bug_829.py @@ -30,21 +30,36 @@ # Test case for PySide bug 829 import unittest -from PySide2.QtCore import QSettings -import tempfile +from PySide2.QtCore import QDir, QSettings, QTemporaryFile +import os class QVariantConversions(unittest.TestCase): + + _confFileName = None + def testDictionary(self): - confFile = tempfile.NamedTemporaryFile(delete=False) - s = QSettings(confFile.name, QSettings.IniFormat) + confFile = QTemporaryFile(QDir.tempPath() + '/pysidebug829_XXXXXX.ini') + confFile.setAutoRemove(False) + self.assertTrue(confFile.open()) + confFile.close() + self._confFileName = confFile.fileName() + del confFile + s = QSettings(self._confFileName, QSettings.IniFormat) + self.assertEqual(s.status(), QSettings.NoError) # Save value s.setValue('x', {1: 'a'}) s.sync() + self.assertEqual(s.status(), QSettings.NoError) del s # Restore value - s = QSettings(confFile.name, QSettings.IniFormat) + s = QSettings(self._confFileName, QSettings.IniFormat) + self.assertEqual(s.status(), QSettings.NoError) self.assertEqual(s.value('x'), {1: 'a'}) + def __del__(self): + if self._confFileName is not None: + os.unlink(QDir.toNativeSeparators(self._confFileName)) + if __name__ == '__main__': unittest.main() -- cgit v1.2.3