diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-10-16 01:00:07 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-10-16 01:00:07 +0200 |
commit | 299bf6fd51218a0912e7a3d9eb4b0043dbaad1f7 (patch) | |
tree | cd128b58711244ec6fc785a6e33b963642da663e /tests | |
parent | f157da4d57330a10e085a0e475936d4465577c6d (diff) | |
parent | 53240b099cf801ec51e5facdf159e35a3fef2cd9 (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I46dde4965e7718eab99306e2876622589cef487f
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 69 | ||||
-rw-r--r-- | tests/auto/qml/v4misc/tst_v4misc.cpp | 3 | ||||
-rw-r--r-- | tests/auto/quick/examples/tst_examples.cpp | 1 |
3 files changed, 72 insertions, 1 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 6bc0359483..a38224ef81 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -177,6 +177,8 @@ private slots: void translateScriptUnicodeIdBased_data(); void translateScriptUnicodeIdBased(); void translateFromBuiltinCallback(); + void translationFilePath_data(); + void translationFilePath(); void installConsoleFunctions(); void logging(); @@ -3915,6 +3917,73 @@ void tst_QJSEngine::translateFromBuiltinCallback() eng.evaluate("[10,20].forEach(foo)", "script.js"); } +void tst_QJSEngine::translationFilePath_data() +{ + QTest::addColumn<QString>("filename"); + + QTest::newRow("relative") << QStringLiteral("script.js"); + QTest::newRow("absolute unix") << QStringLiteral("/script.js"); + QTest::newRow("absolute /windows/") << QStringLiteral("c:/script.js"); +#ifdef Q_OS_WIN + QTest::newRow("absolute \\windows\\") << QStringLiteral("c:\\script.js"); +#endif + QTest::newRow("relative url") << QStringLiteral("file://script.js"); + QTest::newRow("absolute url unix") << QStringLiteral("file:///script.js"); + QTest::newRow("absolute url windows") << QStringLiteral("file://c:/script.js"); +} + +class DummyTranslator : public QTranslator +{ + Q_OBJECT + +public: + DummyTranslator(const char *sourceText) + : srcTxt(sourceText) + {} + + QString translate(const char *context, const char *sourceText, const char *disambiguation, int n) const override + { + Q_UNUSED(disambiguation); + Q_UNUSED(n); + + if (srcTxt == sourceText) + ctxt = QByteArray(context); + + return QString(sourceText); + } + + bool isEmpty() const override + { + return false; + } + + const char *sourceText() const + { return srcTxt.constData(); } + + QByteArray context() const + { return ctxt; } + +private: + QByteArray srcTxt; + mutable QByteArray ctxt; +}; + +void tst_QJSEngine::translationFilePath() +{ + QFETCH(QString, filename); + + DummyTranslator translator("some text"); + QCoreApplication::installTranslator(&translator); + QByteArray scriptContent = QByteArray("qsTr('%1')").replace("%1", translator.sourceText()); + + QJSEngine engine; + engine.installExtensions(QJSEngine::TranslationExtension); + QJSValue result = engine.evaluate(scriptContent, filename); + QCOMPARE(translator.context(), QByteArray("script")); + + QCoreApplication::removeTranslator(&translator); +} + void tst_QJSEngine::installConsoleFunctions() { QJSEngine engine; diff --git a/tests/auto/qml/v4misc/tst_v4misc.cpp b/tests/auto/qml/v4misc/tst_v4misc.cpp index a080826e15..f8e76fdf5c 100644 --- a/tests/auto/qml/v4misc/tst_v4misc.cpp +++ b/tests/auto/qml/v4misc/tst_v4misc.cpp @@ -111,6 +111,9 @@ void tst_v4misc::parserMisc_data() QTest::newRow("8[++i][+++i]") << QString("ReferenceError: Prefix ++ operator applied to value that is not a reference."); QTest::newRow("`a${1++}`") << QString("ReferenceError: Invalid left-hand side expression in postfix operation"); + QTest::newRow("for (var f in ++!binaryMathg) ;") << QString("ReferenceError: Prefix ++ operator applied to value that is not a reference."); + QTest::newRow("for (va() in obj) {}") << QString("ReferenceError: Invalid left-hand side expression for 'in' expression"); + QTest::newRow("[1]=7[A=8=9]") << QString("ReferenceError: left-hand side of assignment operator is not an lvalue"); } void tst_v4misc::parserMisc() diff --git a/tests/auto/quick/examples/tst_examples.cpp b/tests/auto/quick/examples/tst_examples.cpp index ea8830fefa..b3fc87a8de 100644 --- a/tests/auto/quick/examples/tst_examples.cpp +++ b/tests/auto/quick/examples/tst_examples.cpp @@ -79,7 +79,6 @@ tst_examples::tst_examples() excludedDirs << "shared"; //Not an example excludedDirs << "snippets/qml/path"; //No root QQuickItem excludedDirs << "examples/qml/qmlextensionplugins"; //Requires special import search path - excludedDirs << "examples/quick/tutorials/gettingStartedQml"; //C++ example, but no cpp files in root dir // These snippets are not expected to run on their own. excludedDirs << "snippets/qml/visualdatamodel_rootindex"; |