aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qmltest/selftests/tst_createTemporaryObject.qml
Commit message (Collapse)AuthorAgeFilesLines
* TestCase: make parent argument to createTemporaryObject optionalMitch Curtis2016-12-211-0/+36
| | | | | | | | This matches the behavior seen from Component's createObject() function. Change-Id: I83fe73a588d04c5efd30c49059bb19e7584bef48 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* TestCase: don't try to access destroyed temporary objectsMitch Curtis2016-12-211-0/+30
| | | | | | | | | | | | | | | | | | Objects created with createTemporaryObject() and createTemporaryQmlObject() can be destroyed manually before the test ends. Before this patch, there would be a type error when trying to check if the object still exists in qtest_destroyTemporaryObjects(). The error seems to stem from the fact that objects that are stored in an array and later destroy()'d are not nullified, but rather left in a corrupt state. See the linked bug for more information about this. We work around this issue by checking for the existence of the destroy() function on the object before attempting to call it. Task-number: QTBUG-57749 Change-Id: I0f6ddd47d86af6fb87392c2992f9f6143af6aab8 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* TestCase: add createTemporaryObject(), createTemporaryQmlObject()Mitch Curtis2016-12-141-0/+113
A typical pattern with QML tests is to dynamically create an item and then destroy it at the end of the test function: TestCase { id: testCase name: "MyTest" when: windowShown function test_click() { var item = Qt.createQmlObject("import QtQuick 2.0; Item {}", testCase); verify(item); // Test item... item.destroy(); } } The problem with this pattern is that any failures in the test function will cause the call to item.destroy() to be skipped, leaving the item hanging around in the scene until the test case has finished. This can result in interference with future tests; for example, by blocking input events or producing unrelated debug output that makes it difficult to follow the code's execution. By calling e.g. createTemporaryQmlObject() instead, the object is guaranteed to be destroyed at the end of the test function: TestCase { id: testCase name: "MyTest" when: windowShown function test_click() { var item = createTemporaryObject("import QtQuick 2.0; Item {}", testCase); verify(item); // Test item... // Don't need to worry about destroying "item" here. } } [ChangeLog][TestCase] Added createTemporaryObject() and createTemporaryQmlObject() functions that can be used to ensure that dynamically created objects are destroyed at the end of each test function. Change-Id: I483342052462aa86464c86bf2082892712dceb58 Task-number: QTBUG-56361 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>