aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/snippets/tst_snippets.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-05-03 14:58:27 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-05-03 17:54:26 +0000
commit3af18224190d2c008a4ed6fe39b07e60db5dc683 (patch)
tree2dc4ef12a37cd7e95f9b1808f395fbd92c02441d /tests/auto/snippets/tst_snippets.cpp
parent4abe4a06494e0e54825170ed2130df91b45148bf (diff)
tst_snippets: take screenshots only when requested
The component loading code has been adjusted so that it can load snippets that use either a Window root element too. This speeds up the test a lot in the CI, and allows us to flatten the snippet-structure. Set SCREENSHOTS=1 environment variable to take screenshots. Change-Id: Ibd9e76befe62044dd1374899f18ea3d8c7ad454b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto/snippets/tst_snippets.cpp')
-rw-r--r--tests/auto/snippets/tst_snippets.cpp104
1 files changed, 43 insertions, 61 deletions
diff --git a/tests/auto/snippets/tst_snippets.cpp b/tests/auto/snippets/tst_snippets.cpp
index ab3a94bc..97b10fe1 100644
--- a/tests/auto/snippets/tst_snippets.cpp
+++ b/tests/auto/snippets/tst_snippets.cpp
@@ -49,13 +49,11 @@ private slots:
void verify();
void verify_data();
- void screenshots();
- void screenshots_data();
-
private:
- QQuickView view;
+ void loadSnippet(const QString &source);
+
+ bool takeScreenshots;
QMap<QString, QStringPair> snippetPaths;
- QMap<QString, QStringPair> screenshotSnippetPaths;
};
static QMap<QString, QStringPair> findSnippets(const QDir &inputDir, const QDir &outputDir = QDir())
@@ -77,86 +75,70 @@ void tst_Snippets::initTestCase()
QDir snippetsDir(QQC2_SNIPPETS_PATH);
QVERIFY(!snippetsDir.path().isEmpty());
- snippetPaths = findSnippets(snippetsDir);
- QVERIFY(!snippetPaths.isEmpty());
+ QDir screenshotsDir(QDir::current().filePath("screenshots"));
- QDir screenshotOutputDir(QDir::current().filePath("screenshots"));
- QVERIFY(screenshotOutputDir.exists() || QDir::current().mkpath("screenshots"));
+ takeScreenshots = qgetenv("SCREENSHOTS").toInt();
+ if (takeScreenshots)
+ QVERIFY(screenshotsDir.exists() || QDir::current().mkpath("screenshots"));
- QDir screenshotSnippetsDir(QQC2_SNIPPETS_PATH "/screenshots");
- QVERIFY(!screenshotSnippetsDir.path().isEmpty());
-
- screenshotSnippetPaths = findSnippets(screenshotSnippetsDir, screenshotOutputDir);
- QVERIFY(!screenshotSnippetPaths.isEmpty());
+ snippetPaths = findSnippets(snippetsDir, screenshotsDir);
+ QVERIFY(!snippetPaths.isEmpty());
}
Q_DECLARE_METATYPE(QList<QQmlError>)
-static void loadSnippet(QQuickView *view, const QString &source)
+void tst_Snippets::verify()
{
+ QFETCH(QString, input);
+ QFETCH(QString, output);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+
qRegisterMetaType<QList<QQmlError> >();
- QSignalSpy warnings(view->engine(), SIGNAL(warnings(QList<QQmlError>)));
+ QSignalSpy warnings(&engine, SIGNAL(warnings(QList<QQmlError>)));
QVERIFY(warnings.isValid());
- QUrl url = QUrl::fromLocalFile(source);
- QQmlComponent *component = new QQmlComponent(view->engine(), view);
- component->loadUrl(url);
+ QUrl url = QUrl::fromLocalFile(input);
+ component.loadUrl(url);
- QObject *root = component->beginCreate(view->rootContext());
+ QObject *root = component.create();
QVERIFY(root);
- view->setContent(url, component, root);
- component->completeCreate();
- QCOMPARE(view->status(), QQuickView::Ready);
- QVERIFY(view->errors().isEmpty());
- QVERIFY(view->rootObject());
+ QCOMPARE(component.status(), QQmlComponent::Ready);
+ QVERIFY(component.errors().isEmpty());
QVERIFY(warnings.isEmpty());
-}
-
-void tst_Snippets::verify()
-{
- QFETCH(QString, input);
- loadSnippet(&view, input);
+ if (takeScreenshots) {
+ QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
+ if (!window) {
+ QQuickView *view = new QQuickView;
+ view->setContent(url, &component, root);
+ window = view;
+ }
+
+ window->show();
+ window->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(window));
+
+ QSharedPointer<QQuickItemGrabResult> result = window->contentItem()->grabToImage();
+ QSignalSpy spy(result.data(), SIGNAL(ready()));
+ QVERIFY(spy.isValid());
+ QVERIFY(spy.wait());
+ QVERIFY(result->saveToFile(output));
+
+ window->close();
+ }
}
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);
-
- loadSnippet(&view, input);
-
- view.show();
- view.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&view));
-
- QSharedPointer<QQuickItemGrabResult> result = view.contentItem()->grabToImage();
- QSignalSpy spy(result.data(), SIGNAL(ready()));
- QVERIFY(spy.isValid());
- QVERIFY(spy.wait());
- QVERIFY(result->saveToFile(output));
-
- view.close();
-}
-
-void tst_Snippets::screenshots_data()
-{
- QTest::addColumn<QString>("input");
QTest::addColumn<QString>("output");
QMap<QString, QStringPair>::const_iterator it;
- for (it = screenshotSnippetPaths.constBegin(); it != screenshotSnippetPaths.constEnd(); ++it)
+ for (it = snippetPaths.constBegin(); it != snippetPaths.constEnd(); ++it)
QTest::newRow(qPrintable(it.key())) << it.value().first << it.value().second;
}