diff options
Diffstat (limited to 'src/testlib')
-rw-r--r-- | src/testlib/qabstractitemmodeltester.cpp | 4 | ||||
-rw-r--r-- | src/testlib/qsignalspy.cpp | 7 | ||||
-rw-r--r-- | src/testlib/qsignalspy.h | 5 | ||||
-rw-r--r-- | src/testlib/qtestaccessible.h | 11 | ||||
-rw-r--r-- | src/testlib/qtestblacklist.cpp | 21 | ||||
-rw-r--r-- | src/testlib/qtestevent.h | 15 | ||||
-rw-r--r-- | src/testlib/qtesttostring.h | 2 |
7 files changed, 47 insertions, 18 deletions
diff --git a/src/testlib/qabstractitemmodeltester.cpp b/src/testlib/qabstractitemmodeltester.cpp index eb52d28d59..ddcf328843 100644 --- a/src/testlib/qabstractitemmodeltester.cpp +++ b/src/testlib/qabstractitemmodeltester.cpp @@ -669,6 +669,10 @@ void QAbstractItemModelTesterPrivate::data() || state == Qt::Checked); } + QVariant sizeHintVariant = model->data(model->index(0, 0), Qt::SizeHintRole); + if (sizeHintVariant.isValid()) + MODELTESTER_VERIFY(sizeHintVariant.canConvert<QSize>()); + Q_Q(QAbstractItemModelTester); if (!QTestPrivate::testDataGuiRoles(q)) diff --git a/src/testlib/qsignalspy.cpp b/src/testlib/qsignalspy.cpp index a45ca59378..116ce87c3e 100644 --- a/src/testlib/qsignalspy.cpp +++ b/src/testlib/qsignalspy.cpp @@ -216,7 +216,7 @@ QSignalSpy::ObjectSignal QSignalSpy::verify(const QObject *obj, QMetaMethod sign return {}; } -QList<int> QSignalSpy::makeArgs(const QMetaMethod &member, const QObject *obj) +static QList<int> makeArgs(QMetaMethod member, const QObject *obj) { QList<int> result; result.reserve(member.parameterCount()); @@ -250,7 +250,8 @@ public: }; QSignalSpy::QSignalSpy(ObjectSignal os) - : args(os.obj ? makeArgs(os.sig, os.obj) : QList<int>{}) + : sig(os.sig.methodSignature()), + args(os.obj ? makeArgs(os.sig, os.obj) : QList<int>{}) { if (!os.obj) return; @@ -266,8 +267,6 @@ QSignalSpy::QSignalSpy(ObjectSignal os) } d_ptr = std::move(i); - - sig = os.sig.methodSignature(); } /*! diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index 591545b4d5..b8df2a4deb 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -41,7 +41,7 @@ public: : QSignalSpy(verify(obj, signal)) {} Q_TESTLIB_EXPORT ~QSignalSpy(); - inline bool isValid() const { return !sig.isEmpty(); } + bool isValid() const noexcept { return d_ptr != nullptr; } inline QByteArray signal() const { return sig; } bool wait(int timeout) @@ -55,11 +55,10 @@ private: Q_TESTLIB_EXPORT static ObjectSignal verify(const QObject *obj, QMetaMethod signal); Q_TESTLIB_EXPORT static ObjectSignal verify(const QObject *obj, const char *aSignal); - Q_TESTLIB_EXPORT static QList<int> makeArgs(const QMetaMethod &member, const QObject *obj); Q_TESTLIB_EXPORT void appendArgs(void **a); // the full, normalized signal name - QByteArray sig; + const QByteArray sig; // holds the QMetaType types for the argument list of the signal const QList<int> args; diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h index a4236aa5f3..fcf95ee62b 100644 --- a/src/testlib/qtestaccessible.h +++ b/src/testlib/qtestaccessible.h @@ -228,6 +228,17 @@ private: newEvent->setLastRow(oldEvent->lastRow()); newEvent->setLastColumn(oldEvent->lastColumn()); ev = newEvent; + } else if (event->type() == QAccessible::Announcement) { + QAccessibleAnnouncementEvent *oldEvent = + static_cast<QAccessibleAnnouncementEvent *>(event); + QAccessibleAnnouncementEvent *newEvent; + if (event->object()) + newEvent = new QAccessibleAnnouncementEvent(event->object(), oldEvent->message()); + else + newEvent = new QAccessibleAnnouncementEvent(event->accessibleInterface(), + oldEvent->message()); + newEvent->setPriority(oldEvent->priority()); + ev = newEvent; } else { if (event->object()) ev = new QAccessibleEvent(event->object(), event->type()); diff --git a/src/testlib/qtestblacklist.cpp b/src/testlib/qtestblacklist.cpp index 4154f8f2a6..95dfb28e69 100644 --- a/src/testlib/qtestblacklist.cpp +++ b/src/testlib/qtestblacklist.cpp @@ -23,7 +23,9 @@ using namespace Qt::StringLiterals; Blank lines and everything after # is simply ignored. An initial #-line referring to this documentation is kind to readers. Comments can also be used - to indicate the reasons for ignoring particular cases. + to indicate the reasons for ignoring particular cases. Please scope comments + to keywords if possible, to avoid confusion when additional keywords or tests + cases are added later. Each blacklist line is interpreted as a list of keywords in an AND-relationship. To blacklist a test for multiple platforms (OR-relationship), use separate lines. @@ -53,18 +55,15 @@ using namespace Qt::StringLiterals; # Test doesn't work on QNX at all qnx - # QTBUG-12345 [testFunction] - linux - windows 64bit + linux # QTBUG-12345 + windows 64bit # QTBUG-12345 - # Flaky in COIN on macOS, not reproducible by developers [testSlowly] - macos ci + macos ci # Flaky in COIN on macOS, not reproducible by developers - # Needs basic C++11 support [testfunction2:testData] - msvc-2010 + msvc-2010 # Needs basic C++11 support [getFile:withProxy SSL:localhost] android @@ -75,9 +74,8 @@ using namespace Qt::StringLiterals; For example, to blacklist a QML test on RHEL 7.6: - # QTBUG-12345 [Button::test_display:TextOnly] - ci rhel-7.6 + ci rhel-7.6 # QTBUG-12345 Keys are lower-case. Distribution name and version are supported if QSysInfo's productType() and productVersion() return them. @@ -127,6 +125,9 @@ static QSet<QByteArray> keywords() #ifdef Q_OS_QNX << "qnx" #endif +#ifdef Q_OS_VXWORKS + << "vxworks" +#endif #ifdef Q_OS_WEBOS << "webos" #endif diff --git a/src/testlib/qtestevent.h b/src/testlib/qtestevent.h index 8f092cf8c9..3b75e07f62 100644 --- a/src/testlib/qtestevent.h +++ b/src/testlib/qtestevent.h @@ -28,6 +28,9 @@ QT_BEGIN_NAMESPACE # define QT_ONLY_WIDGETLIB_USES Q_DECL_UNUSED_MEMBER #endif +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wweak-vtables") // QTBUG-1044486 + class QTestEvent { public: @@ -36,13 +39,15 @@ public: #endif virtual QTestEvent *clone() const = 0; - virtual ~QTestEvent() {} + virtual ~QTestEvent() = default; // ### FIXME: weak vtable (QTBUG-104486) }; #ifdef QT_GUI_LIB class QTestKeyEvent: public QTestEvent { public: + ~QTestKeyEvent() override = default; // ### FIXME: weak vtable (QTBUG-104486) + inline QTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay) : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {} inline QTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay) @@ -71,6 +76,8 @@ protected: class QTestKeyClicksEvent: public QTestEvent { public: + ~QTestKeyClicksEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay) : _keys(keys), _modifiers(modifiers), _delay(delay) {} inline QTestEvent *clone() const override { return new QTestKeyClicksEvent(*this); } @@ -91,6 +98,8 @@ private: class QTestMouseEvent: public QTestEvent { public: + ~QTestMouseEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestMouseEvent(QTest::MouseAction action, Qt::MouseButton button, Qt::KeyboardModifiers modifiers, QPoint position, int delay) : _action(action), _button(button), _modifiers(modifiers), _pos(position), _delay(delay) {} @@ -117,6 +126,8 @@ class QTestDelayEvent: public QTestEvent { public: inline QTestDelayEvent(int msecs): _delay(msecs) {} + ~QTestDelayEvent() override = default; // ### FIXME: weak vtables (QTBUG-104486) + inline QTestEvent *clone() const override { return new QTestDelayEvent(*this); } #ifdef QT_WIDGETS_LIB @@ -190,6 +201,8 @@ public: #undef QT_ONLY_WIDGETLIB_USES +QT_WARNING_POP // Clang -Wweak-vtables + QT_END_NAMESPACE Q_DECLARE_METATYPE(QTestEventList) diff --git a/src/testlib/qtesttostring.h b/src/testlib/qtesttostring.h index 18262332ba..a1ee4f6925 100644 --- a/src/testlib/qtesttostring.h +++ b/src/testlib/qtesttostring.h @@ -7,6 +7,8 @@ #include <QtTest/qttestglobal.h> +#include <QtCore/qttypetraits.h> + #if QT_CONFIG(itemmodel) # include <QtCore/qabstractitemmodel.h> #endif |