summaryrefslogtreecommitdiffstats
path: root/tests/auto/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/tools')
-rw-r--r--tests/auto/tools/moc/moc.pro3
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp41
2 files changed, 41 insertions, 3 deletions
diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro
index 1600c458b5..5ea8c06f02 100644
--- a/tests/auto/tools/moc/moc.pro
+++ b/tests/auto/tools/moc/moc.pro
@@ -29,8 +29,7 @@ if(*-g++*|*-icc*|*-clang*|*-llvm):!irix-*:!win32-*: HEADERS += os9-newlines.h wi
if(*-g++*|*-clang*): HEADERS += dollars.h
SOURCES += tst_moc.cpp
-QT -= gui
-QT += sql network testlib
+QT = core sql network testlib
qtHaveModule(dbus) {
DEFINES += WITH_DBUS
QT += dbus
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index e7303d716e..a6cd85ade5 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -566,6 +566,7 @@ private slots:
void parseDefines();
void preprocessorOnly();
void unterminatedFunctionMacro();
+ void QTBUG32933_relatedObjectsDontIncludeItself();
signals:
void sigWithUnsignedArg(unsigned foo);
@@ -1759,6 +1760,14 @@ void tst_Moc::warnings_data()
<< 1
<< QString()
<< QString("standard input:1: Error: Class contains Q_OBJECT macro but does not inherit from QObject");
+
+ QTest::newRow("Warning on invalid macro")
+ << QByteArray("#define Foo(a, b)\n class X : public QObject { Q_OBJECT }; \n Foo(a) \n Foo(a,b,c) \n")
+ << QStringList()
+ << 0
+ << QString("IGNORE_ALL_STDOUT")
+ << QString(":3: Warning: Macro argument mismatch.\n:4: Warning: Macro argument mismatch.");
+
}
void tst_Moc::warnings()
@@ -1800,7 +1809,7 @@ void tst_Moc::warnings()
// magic value "IGNORE_ALL_STDOUT" ignores stdout
if (expectedStdOut != "IGNORE_ALL_STDOUT")
QCOMPARE(QString::fromLocal8Bit(proc.readAllStandardOutput()).trimmed(), expectedStdOut);
- QCOMPARE(QString::fromLocal8Bit(proc.readAllStandardError()).trimmed(), expectedStdErr);
+ QCOMPARE(QString::fromLocal8Bit(proc.readAllStandardError()).trimmed().remove('\r'), expectedStdErr);
}
class tst_Moc::PrivateClass : public QObject {
@@ -3038,7 +3047,37 @@ void tst_Moc::unterminatedFunctionMacro()
#endif
}
+namespace QTBUG32933_relatedObjectsDontIncludeItself {
+ namespace NS {
+ class Obj : QObject {
+ Q_OBJECT
+ Q_PROPERTY(MyEnum p1 MEMBER member)
+ Q_PROPERTY(Obj::MyEnum p2 MEMBER member)
+ Q_PROPERTY(NS::Obj::MyEnum p3 MEMBER member)
+ Q_PROPERTY(QTBUG32933_relatedObjectsDontIncludeItself::NS::Obj::MyEnum p4 MEMBER member)
+ Q_ENUMS(MyEnum);
+ public:
+ enum MyEnum { Something, SomethingElse };
+ MyEnum member;
+ };
+ }
+}
+
+void tst_Moc::QTBUG32933_relatedObjectsDontIncludeItself()
+{
+ const QMetaObject *mo = &QTBUG32933_relatedObjectsDontIncludeItself::NS::Obj::staticMetaObject;
+ const QMetaObject **objects = mo->d.relatedMetaObjects;
+ // the related objects should be empty because the enums is in the same object.
+ QVERIFY(!objects);
+
+}
+
QTEST_MAIN(tst_Moc)
+// the generated code must compile with QT_NO_KEYWORDS
+#undef signals
+#undef slots
+#undef emit
+
#include "tst_moc.moc"