caolan / caolan/nodeunit

fatal errors in test callbacks are not displayed (with fix)

Offen
#279 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
JavaScript
Sterne
1.9k
Forks
359
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Fatal errors in callbacks defined in the test functions are not displayed,
only the "test.done() not called" diagnostic is shown. It's useful to have
the error and line number too. (If not in a callback, the error is reported
as expected.)

To reproduce the issue, create a file t.js:

```
module.exports = {
test: function(t) {
var x;
setTimeout(function() {
x.a = 1;
}, 1);
}
}
```

Current nodeunit outputs:

```
% nodeunit t.js

t.js

FAILURES: Undone tests (or their setups/teardowns):
- test

To fix this, make sure all tests call test.done()
```

with the propsed fix it outputs:

```
% nodeunit t.js

t.js
Uncaught exception:
TypeError: Cannot set property 'a' of undefined
at null._onTimeout (/home/andras/node/t.js:5:21)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

FAILURES: Undone tests (or their setups/teardowns):
- test

To fix this, make sure all tests call test.done()
```

The proposed fix:

```
diff --git a/lib/track.js b/lib/track.js
index 5af98ad..f699fce 100644
--- a/lib/track.js
+++ b/lib/track.js
@@ -27,6 +27,11 @@ exports.createTracker = function (on_exit) {
}
};

+ // AR: display errors in callbacks defined within the tests
+ process.on('uncaughtException', function(e) {
+ console.log("Uncaught exception:\n" + e.stack);
+ });
+
process.on('exit', function() {
on_exit = on_exit || exports.default_on_exit;
on_exit(tracker);
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit lib/track.js und reproduziere das Problem anhand des t.js-Beispiels aus dem Bericht. Vergleiche die Ausgabe von nodeunit für den Callback-Fehler mit der erwarteten Ausgabe, einschließlich des Stacks der nicht abgefangenen Exception und der vorhandenen undone-test-Diagnose; das Issue ist erledigt, wenn der fatale Callback-Fehler und die Zeilennummer angezeigt werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
testing-qa
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.