diff --git a/tests/script-engine/src/ScriptEngineNetworkedTests.cpp b/tests/script-engine/src/ScriptEngineNetworkedTests.cpp index 53a6b3d420..9648e88d56 100644 --- a/tests/script-engine/src/ScriptEngineNetworkedTests.cpp +++ b/tests/script-engine/src/ScriptEngineNetworkedTests.cpp @@ -155,3 +155,31 @@ void ScriptEngineNetworkedTests::testRequire() { +void ScriptEngineNetworkedTests::testRequireInfinite() { + auto sm = makeManager( + "print(\"Starting\");" + "Script.require('./tests/require_inf_a.js');" + "print(\"Done\");" + "Script.stop(true);", "testRequireInf.js"); + QString errors; + + + + QVERIFY(!sm->isRunning()); + QVERIFY(!sm->isStopped()); + QVERIFY(!sm->isFinished()); + + connect(sm.get(), &ScriptManager::errorMessage, [&errors](const QString& message, const QString& engineName){ + errors.append(message); + }); + + + qInfo() << "About to run script"; + sm->run(); + + QVERIFY(!sm->isRunning()); + QVERIFY(!sm->isStopped()); + QVERIFY(sm->isFinished()); + + QVERIFY(errors.contains("Maximum call stack size exceeded")); +} diff --git a/tests/script-engine/src/ScriptEngineNetworkedTests.h b/tests/script-engine/src/ScriptEngineNetworkedTests.h index ff1ff8babb..d88478f83e 100644 --- a/tests/script-engine/src/ScriptEngineNetworkedTests.h +++ b/tests/script-engine/src/ScriptEngineNetworkedTests.h @@ -27,6 +27,7 @@ class ScriptEngineNetworkedTests : public QObject { private slots: void initTestCase(); void testRequire(); + void testRequireInfinite(); private: diff --git a/tests/script-engine/src/tests/require_inf_a.js b/tests/script-engine/src/tests/require_inf_a.js new file mode 100644 index 0000000000..54b10ff7a0 --- /dev/null +++ b/tests/script-engine/src/tests/require_inf_a.js @@ -0,0 +1,2 @@ +module.exports = { value: 1 }; +var a = Script.require('./require_inf_b.js'); \ No newline at end of file diff --git a/tests/script-engine/src/tests/require_inf_b.js b/tests/script-engine/src/tests/require_inf_b.js new file mode 100644 index 0000000000..6d8529dff3 --- /dev/null +++ b/tests/script-engine/src/tests/require_inf_b.js @@ -0,0 +1,2 @@ +module.exports = { value: 1 }; +var a = Script.require('./require_inf_c.js'); \ No newline at end of file diff --git a/tests/script-engine/src/tests/require_inf_c.js b/tests/script-engine/src/tests/require_inf_c.js new file mode 100644 index 0000000000..7176cc43dc --- /dev/null +++ b/tests/script-engine/src/tests/require_inf_c.js @@ -0,0 +1,2 @@ +module.exports = { value: 1 }; +var a = Script.require('./require_inf_a.js'); \ No newline at end of file