aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qmltest/selftests
Commit message (Collapse)AuthorAgeFilesLines
* tst_grabImage: Some work on looking into flakinessRobin Burchell2017-05-111-1/+8
| | | | | | | | | | * Compare old and new image sizes (to make it obvious if size is the part that breaks) * Make use of the new save() functionality to dump images when it fails Task-number: QTBUG-53793 Change-Id: I772fe4078b5a2f87aa33ceab35103ff07ee19ab2 Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
* TestCase: Grow some new functionality on grabImageRobin Burchell2017-05-112-0/+56
| | | | | | | | | | | | | | | | | | | | | Add some meta-information about the image that we can use to do slightly stronger checks than just blindly poking pixel data (width & height props). In addition, when a test of a grabbed image fails (which they certainly do), it is always nice if we can perform some diagnostics. To this end, add a save() method to save the grabbed QImage to disk. Tests for the new functionality are blacklisted on Linux at present, as they do not yet appear stable, inheriting the other tst_grabImage flakiness. [ChangeLog][QmlTest] The returned object from TestCase::grabImage now has 'width', 'height', and 'size' properties for additional verification. In addition, there is a save() method to be able to persist the grabbed image to disk (for diagnostics purposes, for example). Change-Id: Ic651e0257102c514c39c3f648c05870f9d9c52e8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_grabImage: Small improvement to avoid accidental leakage of ItemsRobin Burchell2017-04-231-1/+1
| | | | | | | | If the test fails for some reason, ensure that they are cleaned up properly by using TestCase's item creation instead of doing it directly. Change-Id: I639bd246662260f31d5a32d140ee98ad11884446 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Re-blacklist an unstable testRobin Burchell2017-04-221-1/+3
| | | | | | | | | | I accidentally attributed this to the wrong BLACKLIST in 186cbe30939947e3a2d33b250fc861cbee361dfe, which meant that it was running incorrectly. Change-Id: I64b9d322829736da0a05b03ccacb4e08fff863df Task-number: QTBUG-60343 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* qmltest: Split into separate testsRobin Burchell2017-04-202-0/+7
| | | | | | | | | | | | | | | Running everything in one big process has high risks of problems caused by globally mutable state. It also makes running small subsets of the tests more painful than it needs to be. Make use of the new QML-only test support in qtbase to have one project per subdirectory instead. This means no more C++ "stub" binary (just run make check or qmltestrunner in the directory). This relies on qtbase/727da2965caa8bccf8bbfbdd571ed05b35251f82. Change-Id: I0da70dba19aa54e456cd183b4b6b245ee20b1f3a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Error out if TestCase.verify receives more than 2 parametersAlbert Astals Cid2017-04-051-0/+10
| | | | | | Change-Id: I3299f602970067aaef290d4f1c7449d3ab03fb3c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* 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>
* Add tryVerify()Mitch Curtis2016-07-201-0/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful for conditions which can't be tested using tryCompare. One such situation is that of the currentItem property of ListView. In Qt Quick Controls 2, the currentItem property of the ListView that is internally a child of Tumbler can be null for a certain period of time, so using tryCompare() would result in errors due to trying to access a property of a null object: tryCompare(tumblerView.currentItem, "text", "2") The current workaround is to use wait(50) in a for loop, which is ugly and could lead to flaky tests: for (var delay = 1000; delay >= 0; delay -= 50) { if (tumblerView.currentItem) break; wait(50); } verify(tumblerView.currentItem); compare(tumblerView.currentItem.text, data.currentIndex.toString()); Using tryVerify(), we can first ensure that currentItem isn't null, and then use a regular synchronous compare afterwards: tryVerify(function(){ return tumblerView.currentItem; }); compare(tumbler.currentItem.text, data.currentIndex.toString()); [ChangeLog][QtTest][TestCase] Added tryVerify() function to allow verification of asynchronous conditions that can't be tested using tryCompare(). Change-Id: Ie93052b650f7fe0bf26853054a8f0f35a483e387 Task-number: QTBUG-19708 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Updated license headersJani Heikkinen2016-01-208-136/+96
| | | | | | | | | | | | From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some exceptions, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one (in those files which will be under GPL 3 with exceptions) Change-Id: I04760a0801837cfc516d1c7c02d4f503f6bb70b6 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* QuickTest: Enable use of BLACKLIST fileCaroline Chao2015-06-151-0/+26
| | | | | | | | So qml test functions can be blacklisted. Qml test functions have the following format: TestCaseName::functionName. Change-Id: Ifcaa8d77d8f0956472aa568dc6dbfcbdde4e5063 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* TestCase: add equals() function to QuickTestImageObject.Mitch Curtis2015-04-211-0/+58
| | | | | | | | | | | | | | | | | | This allows for comparison of image objects returned from TestCase's grabImage() function using QImage's operator== function. Doing pixel by pixel image comparisons in QML is extremely slow. This functionality is useful for checking that an item was redrawn after a property change, for example. [ChangeLog][QuickTest][TestCase] Added equals() function to image object returned from TestCase's grabImage() function. Change-Id: I0ece9df6effe2b1b9d8e1ee8ac011115d9367ef2 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Liang Qi <liang.qi@theqtcompany.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* testlib: Fix qml objects not deleted between data testsCaroline Chao2015-03-091-0/+18
| | | | | | | | | | | | Call wait(0) after the cleanup() function and not only at the end of the test run (wait(0) is used to call processEvents()). Otherwise, eventual destroy() calls in test function are not executed between data tests. Task-number: QTBUG-30523 Task-number: QTBUG-42185 Change-Id: I1d588ee28c61cda835e25307bc1c565d68b741fe Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* QuickTestResult: Try a bit harder when stringifying a valueGabriel de Dietrich2015-02-121-0/+47
| | | | | | | | | | Q_GADGETs are not always QVariant::toString()-convertible but they probably have their own toString() function that we always try to call. This may still lead to false posi- tives, but in a much smaller proportion. Change-Id: I80547a9e773e97410fe5d4723efcac6b010046f9 Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-126-42/+42
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* qttest: make findChild available only for QtTest 1.1Fawzi Mohamed2014-12-056-6/+6
| | | | | Change-Id: I4ceb1a969bd4296b82f899088b02b5e8cf100bcd Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Also search for visual children in TestCase::findChild().Mitch Curtis2014-09-291-1/+36
| | | | | | | | | It previously used QObject::findChild(), which won't work in all cases, because items like ListView don't seem to make their delegate items QObject children, while simple nested Items do. Change-Id: I1a8ed1fb55493212cb25abf595d016437812a80f Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Update license headers and add new licensesJani Heikkinen2014-08-256-113/+65
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Add findChild to TestCase.Mitch Curtis2014-07-041-0/+112
| | | | | | | | | | | | | | | | | | | | | | | | | This is useful for auto tests where it's necessary to have access to dynamically created child items. For example: property Component threeItemDelegate: Text { objectName: "delegate" + styleData.index text: styleData.value } ... function test_stuff() { ... var delegate0 = findChild(item, "delegate0"); // check delegate0 for some condition... } [ChangeLog][QtTest][TestCase] Added findChild function to TestCase. Change-Id: I04a8b07c9904768c07ec12f4b03f1afb1989e054 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Testlib: Fix qml objects not deleted in TestCaseCaroline Chao2013-04-111-0/+62
| | | | | | | | | | | After destroy() been called in the test function. wait(0) is used to call processEvents(). Task-number: QTBUG-30523 Change-Id: I208f213e2de6b530dd0965b301d046aee0182d9b Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-104-4/+4
| | | | | | Change-Id: I6c3bd7bebe3d62d1cfd0fa6334544c9db8398c76 Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-234-96/+96
| | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: Ie7f5d49ed8235d7a7845ab68f99ad1c220e64d5c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add fuzzyCompare() to qmltestCharles Yin2012-07-181-0/+4
| | | | | Change-Id: I4834f4af0839fb89424ed25f0addfb618e5374f8 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
* Fix some issues with init_data() for qmltestCharles Yin2012-04-051-0/+78
| | | | | | | | | 1. should not use hasOwnProperty, replace it with 'in' 2. the default init_data() method is unnessary 3. when init_data() returns empty, the test function should run in non data driven mode Change-Id: I8cb19d3499b285d07c8b3d04abd9ddf33b1c5395 Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-303-3/+3
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: If39bd256b0fa85eba17ea30f8ab87ea27d758908 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update obsolete contact address.Jason McDonald2012-01-233-3/+3
| | | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I6a730abc0c396fb545a48b2d6938abedac2e3f1c Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com> Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Update copyright year in Nokia copyright headers.Jason McDonald2012-01-173-3/+3
| | | | | | | | Update copyright headers from before 2011, and a couple of new ones that were merged after the previous change to copyright headers. Change-Id: Ia76e08e2734afa4ef3f1207dbcda5ff3bc81b366 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Remove SkipMode from qtestlib API.Jason McDonald2011-10-211-28/+4
| | | | | | | | | | The SkipMode parameter to QSKIP has been removed in qtbase, therefore it must also be removed here. Task-number: QTBUG-21851, QTBUG-21652 Change-Id: I8016f8c28338b1b532bdb593c796d699b99250dc Reviewed-by: Charles Yin <charles.yin@nokia.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* fix qmltest bugsCharles Yin2011-07-201-0/+2
| | | | | | | Change-Id: If814516b1094b85fba46e215b44e1a2b582179c5 Reviewed-on: http://codereview.qt.nokia.com/1858 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Charles Yin <charles.yin@nokia.com>
* Update licenseheader text in source files for qtdeclarative Qt moduleJyri Tahtela2011-07-083-51/+51
| | | | | | | | Replace old license header with correct one. Change-Id: I492ddaaa0227b2c8faf11bdcd6e12e7231a54a10 Reviewed-on: http://codereview.qt.nokia.com/1312 Reviewed-by: Jyri Tahtela <jyri.tahtela@nokia.com>
* Integrate QtQuickTest into QtCharles Yin2011-05-203-0/+1779
Change-Id: I558821c0dec9166ea1d0d2e1e2f889553c436316 Task-number:QTBUG-16082