summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qabstractitemmodeltester.cpp4
-rw-r--r--src/testlib/qsignalspy.cpp7
-rw-r--r--src/testlib/qsignalspy.h5
-rw-r--r--src/testlib/qtestaccessible.h11
-rw-r--r--src/testlib/qtestblacklist.cpp21
-rw-r--r--src/testlib/qtestevent.h15
-rw-r--r--src/testlib/qtesttostring.h2
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