summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Port QAbstractAnimation to the new property systemSona Kurazyan2021-04-272-1/+92
| | | | | | | Task-number: QTBUG-85520 Change-Id: I2710c314b8c32b03fccb826fd78482ee7095fdda Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Port of QItemSelectionModel::model to new property systemAndreas Buhr2021-04-272-1/+28
| | | | | | | | | | The property 'model' is ported to a bindable property. The properties hasSelection, selection, selectedIndexes, and currentIndex are left for later patches. Task-number: QTBUG-85520 Change-Id: Ia424ce99fc80c3d807c634c21d161a3ad94b27d2 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Android: unblock passing testsAssam Boudjelthia2021-04-277-36/+0
| | | | | | | | | | | | | | | | | | Those tests don't fail anymore and show in CI as BPASS, so we can safely, hopefully, unblock them Task-number: QTBUG-87429 Fixes: QTBUG-68974 Fixes: QTBUG-69166 Fixes: QTBUG-87403 Fixes: QTBUG-87411 Fixes: QTBUG-69083 Fixes: QTBUG-69084 Fixes: QTBUG-87426 Pick-to: 6.1 Change-Id: I831b955116c0f465319b9c5fc726dd98804d1c00 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Make loop variables references in date benchmarkDavid Skoland2021-04-271-5/+5
| | | | | | | | This more accurately simulates real-world usage. Change-Id: Ib1b49d165b3cfaef2bef51e958a1830cc7f8c285 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Declare loop arg in benchmark unusedDavid Skoland2021-04-271-2/+2
| | | | | | | | Since these tests do not actually use the filename in the loops, add macros to declare them unused. Change-Id: I3362e0478ac6802b37f54f90ca377aa462570d8c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Check POSIX rules during QTzTimeZone creationEdward Welbourne2021-04-271-0/+1
| | | | | | | | | | | | | | | | | | | | | Previously, an apparent POSIX rule would be saved and any defects in it would only be discovered when trying to use it to generate transitions. Instead, check that it has the right form during the initial parsing of its data. In the process, since checking for DST in the process is trivial, implement a long-standing TODO to cache hasDaylightTime()'s answer. The array it scanned was in any case being scanned during construction, so detecting DST in init()'s scan is trivial; and its failure to check the POSIX rule mean it failed to notice when zones entirely specified by a POSIX rule have DST. Adapt a test using a POSIX-only rule to verify it does know the zone has DST; it did not, before this change. Change-Id: I690c013d3331600f7348dae61c35d41e5599da70 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix handling of a POSIX zone rule describing permanent DSTEdward Welbourne2021-04-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | The description necessarily has fake transitions at start and end of the year, potentially outside the year. These transitions should not be reported by QTzTimeZonePrivate as transitions, although its data() must find a "transition" whose data it can use (as in the permanent standard time case, which could potentially be represented the same way, although there's a saner way to do so, that the code already handles) to report the zone's properties. In the process, fix (and make more straightforward) the convoluted decision-making code that was deciding which transitions to include in the returned list. It was assuming invalidMSecs() would be set as the atMSecsSinceEpoch of a transition, although this is computed in a way that makes that value most unlikely, even when the result is invalid. It also rather confusingly mixed < 0 tests as tests for overflow with the one < 0 test that's about ignoring DST before 1970. Also added comments to clarify some of what's going on there. Expanded a recently-added test of a permanent DST zone to verify this now works correctly. Change-Id: Ia8d98f433fb1e479dba5479220a62196c30f0244 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Correct the parsing of POSIX rule day-of-year fieldsEdward Welbourne2021-04-271-0/+12
| | | | | | | | | | | | | | | | | There are two formats for such fields: one with a J prefix on a number in the range 1 to 365, the other with no prefix and a range from 0 to 365. The code mistakenly treated the latter as if its range were from 1 to 366. The J-form doesn't count Feb 29th, so March always starts on day 60; the code tried to take that into account, but adjusted in the wrong direction (and this mislead me, in a recent partial fix, into a fence-post error). Add a test-case based on the Africa/Casablanca POSIX rule seen on RHEL 8.2, which tripped over the off-by-one error without a J prefix. This incidentally also tests the J case. Change-Id: I692ca511e5c960f91a6c21073d3b2f037f5e445f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Skip tst_QUrl::testThreading() under QEMUAndrei Golubev2021-04-272-0/+5
| | | | | | | | | | | | It usually fails the test with "corrupted size vs. prev_size" message coming from malloc() or some other memory allocation routine (which signals about memory corruption probably) Task-number: QTBUG-93176 Change-Id: I5e34971267c52c63cda2489bef5b09bed739f532 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 6d52d86b999088ec07e58c14197bddda043ef0aa) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add more tests for QList/QString/QBAAndrei Golubev2021-04-273-27/+483
| | | | | | | | | | | | | | | | The major part is stability tests for QList operations, Also added std::shared_ptr to the Custom type. shared_ptr accesses the memory which does not directly belong to QList, so using it inside a passed-to-qlist type is beneficial (e.g. ASan could catch extra issues) Basic prepend-aware cases added to QString/QBA tests Task-number: QTBUG-93019 Change-Id: I50e742bdf10ea9de2de66539a7dbb9abc4352f82 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit adb41bbe00b2b853d4dd26cd9ee77ae5ed541576) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add tests for QtPrivate::q_relocate_overlap_nAndrei Golubev2021-04-271-0/+281
| | | | | | | | | | | | | | | Test the relocation logic through the QADP::relocate() method which basically calls q_relocate_overlap_n inside and then ensures that the data pointers are in good state Running these locally in fact revealed a bug in the implementation, so these tests are definitely good to have Task-number: QTBUG-93019 Change-Id: I353ed46a31c5c77cd0c5fcacd3dfce46e5cf3e67 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 65d0f6829cc124f6d0d4003a17bedcb74dddf33b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Resurrect data moves in QListAndrei Golubev2021-04-272-16/+59
| | | | | | | | | | | | | | | | | Use the data moves to readjust the free space in the QList, which ultimately fixes the out-of-memory issues caused by cases like: forever { list.prepend(list.back()); list.removeLast(); } Task-number: QTBUG-91801 Task-number: QTBUG-91360 Task-number: QTBUG-93019 Change-Id: Iacff69cbf36b8b5b176bb2663df635ec972c875c Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit a0253f5f0249024580050e4ec22d50cb139ef8d9)
* Resurrect tests for QSharedPointerVille Voutilainen2021-04-273-3/+16
| | | | | | Task-number: QTBUG-93093 Change-Id: I030c18db1ab9e48cbd3339bc2040ba0b46cd1370 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* CMake: Fix tst_qaddpreroutine to work with static buildsAlexandru Croitor2021-04-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | DEFAULT_IF needs to be true so that in a static build the built plugin is automatically linked into the test executable using the special static plugin per-repo behavior in qt_internal_add_executable. The QtPostProcess routines are not executed for this test project because we don't use qt_build_repo. This means that no QtFooPluginCMakeConfig.cmake file is generated and thus there's no point in using qt6_import_plugins because the pulic plugin genexes won't know about this target anyway. Explicitly set the CLASS_NAME so that the name expected by the Q_IMPORT_PLUGIN macro matches the name of the plugin instance that moc generates in QT_MOC_EXPORT_PLUGIN. Amends 22e967c3049608f82abd32a0beb0b4b36ee134bf Task-number: QTBUG-87580 Task-number: QTBUG-90341 Pick-to: 6.1 6.0 Change-Id: I5ef361e7e2cebc46b35310c679f15c84cd61b4a5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fuzzing: Test different calendar systemsRobert Löhning2021-04-261-1/+5
| | | | | Change-Id: I61be9f09d4299674e9cf9daf1d4dbbf90f3d2d2d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Port of QTimeLine to new property systemAndreas Buhr2021-04-262-14/+290
| | | | | | | | | | | | | The six properties duration, updateInterval, currentTime, direction, loopCount and easingCurve have been ported to the new property system and are now bindable. Drive-by renamed a local variable to avoid shadowing. Task-number: QTBUG-85520 Change-Id: Ibabf106f5200d2dd4329a1e1f96112eccc29d6b1 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix QTreeModel calling beginRemoveRows twiceLuca Beldi2021-04-261-0/+16
| | | | | | | | | | | | | For items that are children of other items, removeRows calls beginRemoveRows directly and then once again inside takeChild() The signal blocker that dates back to the monolitic import from Nokia prevents the model from emitting extra signals but the persistent indexes are corrupted nonetheless. Fixes: QTBUG-90030 Pick-to: 6.1 6.0 5.15 Change-Id: I5bc4b2598bf13247683b113faeec22471f1f04a4 Reviewed-by: David Faure <david.faure@kdab.com>
* Fix QAbstractItemModelTester false positiveLuca Beldi2021-04-261-0/+4
| | | | | | | | | When inserting rows to a branch with no columns the tester should not complain about indexes being invalid Pick-to: 6.1 6.0 5.15 Change-Id: I466f4e5140b10f6dcf65a71f109c2d3be7336507 Reviewed-by: David Faure <david.faure@kdab.com>
* Fix linking on Windows when SSL is not configuredVolker Hilsheimer2021-04-261-1/+4
| | | | | | | | The qt_ForceTlsSecurityLevel symbol is not defined if SSL is not configured, so don't use it in the QNetworkReply test if it's not. Change-Id: Id3110a1997fea1648b48bfc411e90e7efe306678 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Update CLDR-derived data to newly-released v39Edward Welbourne2021-04-261-1/+1
| | | | | | | | | | | | | Routine update with minor changes to locale data, no new languages, territories or scripts. Various Spanish locales change m_grouping_top from 1 to 2, reversing a change to a test of Costa Rica's currency formatting made in commit bb6a73260ec8272647265f42180963604ad0f755. Includes updates to time-zone IDs. Fixes: QTBUG-91478 Pick-to: 6.1 6.0 5.15 Change-Id: I78ee161275b3c456c5800a7317a96947c932cf8e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix QMetaType API deprecation warning in benchmarkVolker Hilsheimer2021-04-261-1/+1
| | | | | | | Slipped through 1d3fe418e2cacba4cd75156ff94237d9f2461f07. Change-Id: I7ff39852a878ce76d48d5a1798a49f9137e00a13 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Long live PRI*QdatatypesGiuseppe D'Angelo2021-04-251-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt defines some integral datatypes (qsizetype, qintptr, quintptr, qptrdiff) not in terms of the corresponding language datatypes (resp. make_signed_t<size_t>, intptr_t, uintptr_t, ptrdiff_t) but as "integer types with the same bit size of the corresponding language type" (and of course the corret correct signedness for the target type). This makes the Qt datatypes not printable via printf-like formatted output, incl. qDebug, qWarning, QString::asprintf and so on; that's because there isn't a format modifier that would universally work with the Qt definitions. For instance, on a 32 bit platform, ptrdiff_t may be a typedef for long, while qptrdiff is a typedef for _int_ instead. Both long and int would indeed be 32 bits, but they still are different types, and this means that the ptrdiff_t-specific 't' length modifier would be wrong for qptrdiff: qptrdiff p; printf("%td", p); // WARNING: -Wformat: wanted long, got int Similarly, not using 't' breaks on 64 bits, and so on and so forth. There isn't a way out, short of inserting casts on every print statement. So, let's adopt the same solution C/C++ use for their own integer typedefs: the PRIx macros. This allows one to always use the correct formatting specifier without the need of a cast. I'm not adding the macros for the qintXX datatypes, as they already exist in the Standard Library. [ChangeLog][QtCore][QtGlobal] A series of PRIxQTDATATYPE macros have been added. They make it possible to print some Qt type aliases (qsizetype, qintptr, etc.) via a formatted output facility such as printf() or qDebug() without raising formatting warnings and without the need of a type cast. Change-Id: I473226a661868aed9514d793c8e6e4d391ab5055 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Add QSortFilterProxyModel clear-filter benchmarkIgor Kushnir2021-04-254-0/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use QBENCHMARK_ONCE rather than QBENCHMARK to avoid skewing the results: when the QBENCHMARK block is repeated multiple times after the setup code above runs once, only the first setFilterRegularExpression() call unfilters some rows, while the subsequent calls simply check that there is nothing to do. The added benchmark is sensitive to the inefficiency - quadratic rather than linear time complexity - fixed by 7d92ef63d7c2d9d017d89905a2ee0d1e9226b15c. The following two tables contain the benchmark results on my GNU/Linux system. The numbers denote milliseconds per iteration. 1. Qt 5.15.2 without the performance fix: 10K 25K 50K 100K 250K 500K no match 0 1 2 5 14 28 all 0 0 0 1 3 7 first 0 1 2 5 14 28 1000th 2 6 12 25 68 302 middle 3 34 132 518 3300 13665 1000th from end 1 4 9 19 50 103 last 0 1 2 5 14 30 each 10'000th 0 39 211 937 6326 41050 each 100'000th 0 1 2 5 4226 34780 Without the fix the benchmark times out and aborts at 1000K and 2000K data rows. 2. Qt 5.15.2 with the performance fix: 10K 25K 50K 100K 250K 500K 1000K 2000K no match 0 1 2 4 12 26 56 136 all 0 0 0 1 3 7 14 28 first 0 1 2 4 12 26 56 136 1000th 0 1 2 4 13 28 62 145 middle 0 1 2 4 13 27 59 142 1000th from end 0 1 2 4 13 28 60 145 last 0 1 2 4 13 27 59 141 each 10'000th 0 1 2 6 22 69 290 1413 each 100'000th 0 1 2 4 13 30 81 261 Change-Id: I419a5521dd0be7676fbb09b34b4069d4a76423b1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QThreadPool: obey the docs that say we always use at least 1 threadThiago Macieira2021-04-241-1/+1
| | | | | | | | | | | | | | Even if the user (usually accidentally) sets a thread count of zero or negative. The reporter in the bug report did QThread::idealThreadCount() - 1 on a 1 CPU system... Drive-by add to the documentation and the missing #include. Pick-to: 6.1 6.0 Fixes: QTBUG-93007 Change-Id: I6cdea00671e8479b9c50fffd167807d14e030154 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* fix: The QtStartUpFunction function may be called repeatedlyJiDe Zhang2021-04-235-0/+192
| | | | | | | | | | Don't call pre routine function in qAddPreRoutine if the qt_call_pre_routines is not called Pick-to: 6.1 6.0 Task-number: QTBUG-90341 Change-Id: I0ee70561dc57b857f8b3b1cf42c9dfe0cf45bd49 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix QJniObject templates implementationsAssam Boudjelthia2021-04-231-12/+14
| | | | | | | | | | | | | Define the template calls in the header to allow for better type handling and checking with constexpr and avoid overuse of macros. Depending on the type provided in the QJniObject's call, the signatures and the correct JNI function variant is used. If a type is not supported a static_assert throws a compiler error. Pick-to: 6.1 6.1.0 Change-Id: I8a4d3ce85e1ff76ef385633f2a68511fffd12e55 Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Lowercase system includes and lib names for Windows, fix cross compilingMartin Storsjö2021-04-232-2/+2
| | | | | | | | | | | | | | | When cross compiling from a case sensitive file system, casing matters, and mingw headers and import libraries consistently use lowercase. This was uncovered by d385158d5213ef568b7629e2aa4a818016bbffac; prior to that, the schannel TLS plugin didn't end up built (at least when cross compiling). Fix other similar cases that can be found by grepping the repo. Change-Id: Ia696e17b7aaa979d7b7f5b0801383f338a8b585b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* SQLite: Handle tables and fields with a dot in the name correctlyAndy Shaw2021-04-231-0/+49
| | | | | | | Fixes: QTBUG-91885 Pick-to: 6.1 6.0 5.15 Change-Id: Iba76bb50266dd4fb5f50e4ea1549d1d2bb6e3431 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Mark obsolete QMessageBox members as deprecatedVolker Hilsheimer2021-04-231-0/+9
| | | | | | | | | | | | | | | | Those overloads have been documented as obsolete, but never been deprecated. Add the deprecation macros to trigger warnings as of Qt 6.2. The overloads taking a single StandardButton should not be deprecated until Qt 7, as otherwise porting from old to new API will require an unnecessary cast to StandardButtons for calls with only a single enum value. The unit test explicitly tests the deprecated members, so disable warnings there. Fixes: QTBUG-92483 Change-Id: I283ddce4681eafda2378607f999946e56bbb777e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Move plugin code from QtNetwork to qtbase/pluginsTimur Pocheptsov2021-04-227-207/+281
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All TLS (and non-TLS) backends that QSsl classes rely on are now in plugins/tls (as openssl, securetransport, schannel and certonly plugins). For now, I have to disable some tests that were using OpenSSL calls - this to be refactored/re-thought. These include: qsslsocket auto-test (test-case where we work with private keys), qsslkey auto-test (similar to qsslsocket - test-case working with keys using OpenSSL calls). qasn1element moved to plugins too, so its auto-test have to be re-thought. Since now we can have more than one working TLS-backend on a given platform, the presence of OpenSSL also means I force this backend as active before running tests, to make sure features implemented only in OpenSSL-backend are tested. OCSP auto test is disabled for now, since it heavily relies on OpenSSL symbols (to be refactored). [ChangeLog][QtNetwork][QSslSocket] QSslSocket by default prefers 'openssl' backend if it is available. [ChangeLog][QtNetwork][QSslSocket] TLS-backends are not mutually exclusive anymore, depending on a platform, more than one TLS backend can be built. E.g., configuring Qt with -openssl does not prevent SecureTransport or Schannel plugin from being built. Fixes: QTBUG-91928 Change-Id: I4c05e32f10179066bee3a518bdfdd6c4b15320c3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QObjectBindableProperty: Allow signals taking a valueFabian Kosmale2021-04-221-1/+24
| | | | | | | | | | | | | If the signal takes a value, we pass the current value of the property to it. As we now use eager evaluation, accessing the current value is now possible. Change-Id: I5e6947a6575bfa8ca5143f56620c645d4750a686 Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add QObjectBindableProperyt::notifyFabian Kosmale2021-04-221-0/+45
| | | | | | | | | | | This mirrors the functionality of QObjectCompatProperty::notify, and can be useful to delay notifications until a class invariant has been restored. Change-Id: I1c16a0b1537a1b53d144c8abe48e546553edf877 Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix case sensitivity handling QSFPMSamuel Gaist2021-04-221-0/+66
| | | | | | | | | | | | | | | | | | | | | | This patch fixes the breaking of case sensitivity handling. The removal of QRegExp killed the wrong code paths which leads to inconsistencies when changing the regular expression throuh methods like setFilterWildCard or setFilterFixedString. Changing the case sensitivity also nukes the original options that were set on the regular expression if it was set through setFilterRegularExpression. [ChangeLog][QtCore][QSortFilterProxyModel] Case sensitivity as well as regular expression options handling have been fixed. The original value is properly kept when using setFilterWildCard and setFilterFixedString. The regular expression options are now also properly kept when changing the case senstitivity through setFilterCaseSensitivity. Fixes: QTBUG-92260 Pick-to: 6.1 Pick-to: 6.0 Change-Id: Ifb4732306f0c7d79ad0b18d3f5437c4523bb40e5 Reviewed-by: Igor Kushnir <igorkuo@gmail.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QLayout: mark unsetContentsMargins as the RESET functionGiuseppe D'Angelo2021-04-211-0/+17
| | | | | | | | | | | | | | | | contentsMargins is a Q_PROPERTY on a QLayout. Qt 6.1 introduced QLayout::unsetContentsMargins() to reset the contents margins to the "default" ones (that the user can't know); that's the textbook description of a RESET function for the property. Add some tests also for unsetContentsMargins. [ChangeLog][QtWidgets][QLayout] The unsetContentsMargins() function now acts as the RESET function for the contentsMargins property. Change-Id: I463d88363c11f4a15ad3d6af71401d8698de1d41 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QObject: port to new property systemIvan Solovev2021-04-213-3/+13
| | | | | | | | | | | | | | | Extended QObjectPrivate::ExtraData to store a pointer to its parent, and reimplemented qGetBindingStorage() function for QObjectPrivate::ExtraData. This allows to use Q_OBJECT_COMPAT_PROPERTY macro for a property, stored in QObjectPrivate::ExtraData and solves all the problems with calling a custom setter. Task-number: QTBUG-85520 Change-Id: I40e01c29430846359ef9160fa1ae97c702be9a18 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Update QList benchmark testsAndrei Golubev2021-04-211-101/+68
| | | | | | | | | | | | | | | | | | | Removed 5.15 specific QVector code, which is unlikely usable now when we are at 6.1+ timeline (that was really only a nice-to-have during 5.15 -> 6.0 transition) Added "remove first" benchmark to track the fast (or not so fast) removal path Updated mid insertion and mid emplace to actually trigger both paths (growing at the beginning and at the end), before it was really using just one side, which is not quite the "mid" way it feels. Also changed mid insertion to actually use the insert algorithm. Seems like insert(i, t) calls emplace under the hood at least from the visual introspection Change-Id: I01b82cfa0ae38d481ea7362947f3607d757bf5d0 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix tst_qicon for fractional dprAllan Sandfeld Jensen2021-04-201-2/+5
| | | | | | | | | Add rounding one place, and skip addFile for now since the assumption about rounding dpr up no longer applies. Pick-to: 6.1 Change-Id: I0a84dfabb218acf42cb3816ba50ef899c8762523 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Correct the range of allowed hours for a POSIX rule's transitionEdward Welbourne2021-04-201-1/+1
| | | | | | | | | | | | | | | | | | | | A POSIX rule's transition time is allowed an hour in the range from -137 to 137; in particular, a negative hour is allowed, and used by some Greenland zones using Europe's time-of-transition which, as they are more than two hours west of Greenwich, happens before midnight. This means the time of transition can't be represented by a QTime(), so propagate the int that represents it to the code that consumes it; and treat parsing failure as an error rather than "correcting" it - if the transition time is given, it must be valid. Changed tst_QTimeZone::isTimeZoneIdAvailable()'s verification of validity to report the name of the zone it thought was invalid. (A later change, validating POSIX rules, caued this to fail for America/Nuuk without the present fix.) Change-Id: I5c9127ac34d878554dd0aca1c1c7338c7e0e1c28 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Return early from QTimeZone constructor if alleged IANA ID is invalidEdward Welbourne2021-04-201-0/+3
| | | | | | | | | | | | If the ID isn't even valid, don't waste cycles trying to make sense of it as identifying a time-zone. Add test of an invalid ID that provoked an integer overflow on trying to parse it as a POSIX zone specification. Fixes: QTBUG-92842 Change-Id: Ib80bbb88c11c0484ce0358acabbdc25c5bd8e0b3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_qpromise: build fixGiuseppe D'Angelo2021-04-201-4/+4
| | | | | | | | | | | | | | The test use aggregate initialization on some classes which however are no longer aggregates in C++20 (the rules changed again; in C++20 having a user-*declared* constructor makes a class not an aggregate). Just add a constructor so the code keeps compiling in both 17 and 20. Fixes: QTBUG-92963 Pick-to: 6.0 6.1 Change-Id: I52371c5ee34c84358987b5ae8bee9ab9c49c8eab Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Port QPropertyAnimation::propertyName to the new property systemAndreas Buhr2021-04-202-0/+12
| | | | | | | Task-number: QTBUG-85520 Change-Id: Id439783672b17810a51f867bcb69ee6c3eb5a022 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Correct prefix reported for end element in QXmlStreamReaderVincent Baijot2021-04-208-13/+13
| | | | | | | | | | | | | | | | | | | Before this change, QXmlStreamReader prefix value was always an empty string for EndElement when the documentation state : "Returns the prefix of a StartElement or EndElement." The error was a missing update of the prefix value when parsing EndElement. I updated the tests data which were also wrong because no prefix were reported even for </a:foo>. No new test is necessary, I think, the test data already cover the cases of EndElement with a prefix and without one (unchanged here). Fixes: QTBUG-86847 Pick-to: 5.15 6.0 6.1 Change-Id: I0ad38b9741d760f1ce688a36f969ec14e20a928c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix QAbstractItemModelTester false positiveLuca Beldi2021-04-191-2/+5
| | | | | | | | | | When rows are removed from a model with no columns, the test should not report a problem if indexes are invalid Fixes: QTBUG-92886 Pick-to: 6.1 6.0 5.15 Change-Id: I7a042dfdb2575f87208a00cbed13db3869807f84 Reviewed-by: David Faure <david.faure@kdab.com>
* Fix qtbase cmake autotestJuha Vuolle2021-04-191-5/+2
| | | | | | | | | | The testcase relied on having optional packages, and that the last package in that list was found. Otherwise the version numbers of the found modules were not set. Change-Id: I76743fd029d6eed2f4b347280591e6fdaed19053 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add ScreenGadget utilityMorten Johan Sørvig2021-04-193-0/+266
| | | | | | | | | | | | ScreenGadget visualizes virtual desktop screen layout, in device independent and native pixels. This can be used to debug the (sometimes surprising) device independent screen geometry resulting from Qt applying a scale factor. Change-Id: I5b18e0fc9a54ba3e14d648794429b2eeadd25748 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Update DprGadadgetMorten Johan Sørvig2021-04-192-34/+128
| | | | | | | | | | Display active environment variables. Reorder the labels with device independent values to the left and native values to the right. Display the Qt scale factor. Change-Id: If95c252b06eff5abd91a25847777246effe94be2 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Port QSequentialAnimationGroup to new property systemAndreas Buhr2021-04-191-0/+44
| | | | | | | | | | | | There is only one property in QSequentialAnimationGroup, currentAnimation. This patch ports this property to the new property system Task-number: QTBUG-85520 Change-Id: Id528d30f551e88a6165bbb6a3c09d44e89257de5 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Port of QDBusServiceWatcher::watchMode to new property systemAndreas Buhr2021-04-191-0/+41
| | | | | | | | | | | Port watchMode in QDBusServiceWatcher to the new property system. This is the easiest part. Task-number: QTBUG-85520 Change-Id: I588212af205e77765862b8fecdbdcbf871717142 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Re-layout QProgressDialog when setting the cancel buttonQiang Li2021-04-191-0/+24
| | | | | | | | | | | | | | Setting a cancel button on QProgressDialog more than once caused the layout to be invalid. The layout was only applied when the dialog resizes or the style changes, but not when a new cancel button is set. The solution is to update the layout() before showing the dialog when adopting new child widgets. Fixes: QTBUG-19983 Pick-to: 6.0 6.1 Change-Id: Id8fb1ac56e94a9bd97d4559a2e8d4835856fd7d0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Inline test cases in tst_qlistAndrei Golubev2021-04-171-598/+157
| | | | | | | | | | | | QList tests have mostly a scheme of: void opInt() { op<int>(); } void opMovable() { op<Movable>(); } void opCustom() { op<Custom>(); } As a drive by, move the leak checking into a separate struct/macro Change-Id: I7cdda3a6c2aa324968aa26594da9f9eafbd49a0a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>