diff options
author | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2013-02-12 16:36:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-19 20:51:44 +0100 |
commit | eb09f9b82c249db096754d9cbeea3424149c1869 (patch) | |
tree | b6955d302fc86cf7a33074d25b9d1100ad578baa /tests/auto/tools/moc/tst_moc.cpp | |
parent | c02a2f8e76bcad5814134414c4c860d64880ebcd (diff) |
moc: Error out when detecting unterminated macro usage
Exhausting the symbol list while looking for the
final right parenthesis means it is missing.
Task-number: QTBUG-29308
Change-Id: Iccf5897b0f5eb719699fd12d6c8e4a16ff189d9b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'tests/auto/tools/moc/tst_moc.cpp')
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 15e1bc0620..f0d1934a93 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -555,6 +555,7 @@ private slots: void autoMethodArgumentMetaTypeRegistration(); void parseDefines(); void preprocessorOnly(); + void unterminatedFunctionMacro(); signals: void sigWithUnsignedArg(unsigned foo); @@ -2802,6 +2803,26 @@ void tst_Moc::preprocessorOnly() #endif } + +void tst_Moc::unterminatedFunctionMacro() +{ +#ifdef MOC_CROSS_COMPILED + QSKIP("Not tested when cross-compiled"); +#endif +#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS) + QProcess proc; + proc.start("moc", QStringList() << "-E" << srcify("/unterminated-function-macro.h")); + QVERIFY(proc.waitForFinished()); + QCOMPARE(proc.exitCode(), 1); + QCOMPARE(proc.readAllStandardOutput(), QByteArray()); + QByteArray errorOutput = proc.readAllStandardError(); + QVERIFY(!errorOutput.isEmpty()); + QVERIFY(errorOutput.contains("missing ')' in macro usage")); +#else + QSKIP("Only tested on linux/gcc"); +#endif +} + QTEST_MAIN(tst_Moc) #include "tst_moc.moc" |