diff --git a/tests/auto/qml/qml/tst_qml.cpp b/tests/auto/qml/qml/tst_qml.cpp index 871a1273c6..3d6691929e 100644 --- a/tests/auto/qml/qml/tst_qml.cpp +++ b/tests/auto/qml/qml/tst_qml.cpp @@ -9,6 +9,8 @@ #include #include +#include + Q_LOGGING_CATEGORY(lcQml, "qt.qml.tests"); class tst_qml : public QQmlDataTest @@ -22,6 +24,7 @@ private slots: void nonWindow(); void itemAndWindowGeometry_data(); void itemAndWindowGeometry(); + void extraPositionalArguments(); private: QString qmlPath; @@ -175,6 +178,38 @@ void tst_qml::itemAndWindowGeometry() QCOMPARE(contentSize, expectedContentSize); } +void tst_qml::extraPositionalArguments() +{ + QProcess qml; + QStringList args; + + QTemporaryFile f; + QVERIFY(f.open()); + QVERIFY(f.write(R"(import QtQml + +QtObject { + Component.onCompleted: { + let s = "" + for (let i = 2; i < Qt.application.arguments.length; ++i) + s += Qt.application.arguments[i].substring(1) + console.log(s) + Qt.quit() + } +} +)")); + f.flush(); + + args << f.fileName(); + args << "--"; + for (char c = 'a'; c <= 'z'; ++c) + args << u'-' + QString(c); + + qml.start(qmlPath, args); + QVERIFY(qml.waitForFinished()); + QVERIFY(qml.exitStatus() == QProcess::NormalExit && qml.exitCode() == 0); + QVERIFY(qml.readAllStandardError().contains("abcdefghijklmnopqrstuvwxyz")); +} + QTEST_MAIN(tst_qml) #include diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index 79d75fb940..825c320c96 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -318,6 +318,9 @@ static void getAppFlags(int argc, char **argv) { #ifdef QT_GUI_LIB for (int i=0; i