aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/snippets/tst_snippets.cpp
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2016-09-26 12:48:47 +0200
committerMitch Curtis <mitch.curtis@qt.io>2016-09-26 12:32:46 +0000
commit966c0348c7a19a17c5be53f87ef54d4fbab8d8c8 (patch)
treeb1ac27ab33f4ce6a27f0f4e96ec0157f342be9d4 /tests/auto/snippets/tst_snippets.cpp
parentd1efdcd2beac4d40d06ac7258b4d84e4376ab9d6 (diff)
Refactor tst_snippets to make it easier to add non-screenshot snippets
Add a separate test for non-screenshot snippets and move the screenshot snippets to their own folder. Change-Id: Ic3e7370321e346b83f7df42205e204d1265ce5b0 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'tests/auto/snippets/tst_snippets.cpp')
-rw-r--r--tests/auto/snippets/tst_snippets.cpp115
1 files changed, 70 insertions, 45 deletions
diff --git a/tests/auto/snippets/tst_snippets.cpp b/tests/auto/snippets/tst_snippets.cpp
index 6ca9e72c..7972591b 100644
--- a/tests/auto/snippets/tst_snippets.cpp
+++ b/tests/auto/snippets/tst_snippets.cpp
@@ -46,75 +46,100 @@ class tst_Snippets : public QObject
private slots:
void initTestCase();
+ void verify();
+ void verify_data();
+
void screenshots();
void screenshots_data();
private:
- QMap<QString, QStringPair> filePaths;
- QStringList nonVisualSnippets;
+ QMap<QString, QStringPair> snippetPaths;
+ QMap<QString, QStringPair> screenshotSnippetPaths;
};
+static QMap<QString, QStringPair> findSnippets(const QDir &inputDir, const QDir &outputDir = QDir())
+{
+ QMap<QString, QStringPair> snippetPaths;
+ QDirIterator it(inputDir.path(), QStringList() << "qtquick*.qml" << "qtlabs*.qml", QDir::Files | QDir::Readable);
+ while (it.hasNext()) {
+ QFileInfo fi(it.next());
+ const QString outDirPath = !outputDir.path().isEmpty() ? outputDir.filePath(fi.baseName() + ".png") : QString();
+ snippetPaths.insert(fi.baseName(), qMakePair(fi.filePath(), outDirPath));
+ }
+ return snippetPaths;
+}
+
void tst_Snippets::initTestCase()
{
- QDir outdir(QDir::current().filePath("screenshots"));
- QVERIFY(outdir.exists() || QDir::current().mkpath("screenshots"));
+ qInfo() << "Snippets are taken from" << QQC2_SNIPPETS_PATH;
- QString datadir(QQC2_SNIPPETS_PATH);
- QVERIFY(!datadir.isEmpty());
+ QDir snippetsDir(QQC2_SNIPPETS_PATH);
+ QVERIFY(!snippetsDir.path().isEmpty());
- qInfo() << datadir;
+ snippetPaths = findSnippets(snippetsDir);
+ QVERIFY(!snippetPaths.isEmpty());
- QDirIterator it(datadir, QStringList() << "qtquick*.qml" << "qtlabs*.qml", QDir::Files | QDir::Readable, QDirIterator::Subdirectories);
- while (it.hasNext()) {
- QFileInfo fi(it.next());
- filePaths.insert(fi.baseName(), qMakePair(fi.filePath(), outdir.filePath(fi.baseName() + ".png")));
- }
- QVERIFY(!filePaths.isEmpty());
+ QDir screenshotOutputDir(QDir::current().filePath("screenshots"));
+ QVERIFY(screenshotOutputDir.exists() || QDir::current().mkpath("screenshots"));
- nonVisualSnippets << "qtquickcontrols2-stackview-custom.qml"
- << "qtquickcontrols2-swipeview-custom.qml"
- << "qtquickcontrols2-tooltip-custom.qml";
+ QDir screenshotSnippetsDir(QQC2_SNIPPETS_PATH "/screenshots");
+ QVERIFY(!screenshotSnippetsDir.path().isEmpty());
+
+ screenshotSnippetPaths = findSnippets(screenshotSnippetsDir, screenshotOutputDir);
+ QVERIFY(!screenshotSnippetPaths.isEmpty());
}
Q_DECLARE_METATYPE(QList<QQmlError>)
-void tst_Snippets::screenshots()
+static void loadAndShow(QQuickView *view, const QString &source)
{
- QFETCH(QString, input);
- QFETCH(QString, output);
-
qRegisterMetaType<QList<QQmlError> >();
-
- QQuickView view;
- QSignalSpy warnings(view.engine(), SIGNAL(warnings(QList<QQmlError>)));
+ QSignalSpy warnings(view->engine(), SIGNAL(warnings(QList<QQmlError>)));
QVERIFY(warnings.isValid());
- view.setSource(QUrl::fromLocalFile(input));
- QCOMPARE(view.status(), QQuickView::Ready);
- QVERIFY(view.errors().isEmpty());
- QVERIFY(view.rootObject());
+ view->setSource(QUrl::fromLocalFile(source));
+ QCOMPARE(view->status(), QQuickView::Ready);
+ QVERIFY(view->errors().isEmpty());
+ QVERIFY(view->rootObject());
QVERIFY(warnings.isEmpty());
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
+ view->show();
+ view->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(view));
+}
- bool generateScreenshot = true;
- for (const QString &baseName : qAsConst(nonVisualSnippets)) {
- if (input.contains(baseName)) {
- generateScreenshot = false;
- break;
- }
- }
+void tst_Snippets::verify()
+{
+ QFETCH(QString, input);
- if (generateScreenshot) {
- QSharedPointer<QQuickItemGrabResult> result = view.contentItem()->grabToImage();
- QSignalSpy spy(result.data(), SIGNAL(ready()));
- QVERIFY(spy.isValid());
- QVERIFY(spy.wait());
- QVERIFY(result->saveToFile(output));
- }
+ QQuickView view;
+ loadAndShow(&view, input);
+ QGuiApplication::processEvents();
+}
+
+void tst_Snippets::verify_data()
+{
+ QTest::addColumn<QString>("input");
+
+ QMap<QString, QStringPair>::const_iterator it;
+ for (it = snippetPaths.constBegin(); it != snippetPaths.constEnd(); ++it)
+ QTest::newRow(qPrintable(it.key())) << it.value().first;
+}
+
+void tst_Snippets::screenshots()
+{
+ QFETCH(QString, input);
+ QFETCH(QString, output);
+
+ QQuickView view;
+ loadAndShow(&view, input);
+
+ QSharedPointer<QQuickItemGrabResult> result = view.contentItem()->grabToImage();
+ QSignalSpy spy(result.data(), SIGNAL(ready()));
+ QVERIFY(spy.isValid());
+ QVERIFY(spy.wait());
+ QVERIFY(result->saveToFile(output));
QGuiApplication::processEvents();
}
@@ -125,7 +150,7 @@ void tst_Snippets::screenshots_data()
QTest::addColumn<QString>("output");
QMap<QString, QStringPair>::const_iterator it;
- for (it = filePaths.constBegin(); it != filePaths.constEnd(); ++it)
+ for (it = screenshotSnippetPaths.constBegin(); it != screenshotSnippetPaths.constEnd(); ++it)
QTest::newRow(qPrintable(it.key())) << it.value().first << it.value().second;
}