diff options
Diffstat (limited to 'tests/auto/qml/qjsengine')
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 81e150bf1f..1be35aef75 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -193,6 +193,8 @@ private slots: void asserts(); void exceptions(); + void exceptionReporting(); + void installGarbageCollectionFunctions(); void installAllExtensions(); @@ -4260,6 +4262,25 @@ void tst_QJSEngine::exceptions() engine.evaluate("console.exception('Exception 1')"); } +void tst_QJSEngine::exceptionReporting() +{ + QJSEngine engine; + QStringList stackTrace; + QJSValue result = engine.evaluate(R"( + function f() {throw 'an exception'} + function g() {f()} + g() )", QString("tesfile.js"), 1, &stackTrace); + QVERIFY2(!result.isError(), qPrintable(result.toString())); + QCOMPARE(stackTrace.count(), 3); + QCOMPARE(stackTrace.at(0), "f:2:-1:file:tesfile.js"); + QCOMPARE(stackTrace.at(1), "g:3:-1:file:tesfile.js"); + QCOMPARE(stackTrace.at(2), "%entry:4:-1:file:tesfile.js"); + + result = engine.evaluate("42", QString(), 1, &stackTrace); + QVERIFY2(!result.isError(), qPrintable(result.toString())); + QVERIFY(stackTrace.isEmpty()); +} + void tst_QJSEngine::installGarbageCollectionFunctions() { QJSEngine engine; |