tests/auto/headers/tst_headers.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 33 3e2da88830cd
--- a/tests/auto/headers/tst_headers.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/tests/auto/headers/tst_headers.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -64,7 +64,9 @@
                                 const QStringList dirFilters,
                                 const QRegExp &exclude);
     static QStringList getHeaders(const QString &path);
-    static QStringList getSourceFiles(const QString &path);
+    static QStringList getQmlFiles(const QString &path);
+    static QStringList getCppFiles(const QString &path);
+    static QStringList getQDocFiles(const QString &path);
 
     void allSourceFilesData();
     void allHeadersData();
@@ -106,11 +108,21 @@
     return getFiles(path, QStringList("*.h"), QRegExp("^(?!ui_)"));
 }
 
-QStringList tst_Headers::getSourceFiles(const QString &path)
+QStringList tst_Headers::getCppFiles(const QString &path)
 {
     return getFiles(path, QStringList("*.cpp"), QRegExp("^(?!(moc_|qrc_))"));
 }
 
+QStringList tst_Headers::getQmlFiles(const QString &path)
+{
+    return getFiles(path, QStringList("*.qml"), QRegExp("."));
+}
+
+QStringList tst_Headers::getQDocFiles(const QString &path)
+{
+    return getFiles(path, QStringList("*.qdoc"), QRegExp("."));
+}
+
 void tst_Headers::initTestCase()
 {
     qtSrcDir = QString::fromLocal8Bit(qgetenv("QTSRCDIR").isEmpty()
@@ -147,8 +159,11 @@
     };
 
     for (int i = 0; i < sizeof(subdirs) / sizeof(subdirs[0]); ++i) {
-        sourceFiles << getSourceFiles(qtSrcDir + subdirs[i]);
+        sourceFiles << getCppFiles(qtSrcDir + subdirs[i]);
+        if (subdirs[i] != QLatin1String("/tests"))
+            sourceFiles << getQmlFiles(qtSrcDir + subdirs[i]);
         sourceFiles << getHeaders(qtSrcDir + subdirs[i]);
+        sourceFiles << getQDocFiles(qtSrcDir + subdirs[i]);
     }
 
     foreach (QString sourceFile, sourceFiles) {
@@ -192,22 +207,28 @@
     QByteArray data = f.readAll();
     data.replace("\r\n", "\n"); // Windows
     data.replace('\r', '\n'); // Mac OS9
-    QStringList content = QString::fromLocal8Bit(data).split("\n");
+    QStringList content = QString::fromLocal8Bit(data).split("\n", QString::SkipEmptyParts);
+
+    if (content.count() <= 2) // likely a #include line and empty line only. Not a copyright issue.
+        return;
 
     if (content.first().contains("generated")) {
         content.takeFirst();
-        if (content.first().isEmpty())
-            content.takeFirst();
     }
 
     if (sourceFile.endsWith("/tests/auto/linguist/lupdate/testdata/good/merge_ordering/foo.cpp")
         || sourceFile.endsWith("/tests/auto/linguist/lupdate/testdata/good/mergecpp/finddialog.cpp"))
     {
         // These files are meant to start with empty lines.
-        while (content.first().isEmpty() || content.first().startsWith("//"))
+        while (content.first().startsWith("//"))
             content.takeFirst();
     }
 
+    if (sourceFile.endsWith("/doc/src/classes/phonon-api.qdoc")) {
+        // This is an external file
+        return;
+    }
+
     QVERIFY(licensePattern.exactMatch(content.value(8)) ||
             licensePattern.exactMatch(content.value(5)));
     QString licenseType = licensePattern.cap(1);
@@ -258,6 +279,7 @@
     if (header.endsWith("_p.h") || header.endsWith("_pch.h")
         || header.contains("global/qconfig-") || header.endsWith("/qconfig.h")
         || header.contains("/src/tools/") || header.contains("/src/plugins/")
+        || header.contains("/src/imports/")
         || header.endsWith("/qiconset.h") || header.endsWith("/qfeatures.h")
         || header.endsWith("qt_windows.h"))
         return;