Duplicate test.done() breaks nodeunit internals
- Vorherrschende Sprache
- JavaScript
- Sterne
- 1.9k
- Forks
- 359
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
test.js (there's no smaller repro than this!):
``` javascript
exports.duplicateDoneBreaksNodeUnit = function(test) {
test.done();
test.done();
};
```
output:
```
[1m[32mOK: [39m[22m0 assertions (105ms)
...\project\node_modules\nodeunit\lib\core.js:284
if (group.setUp) {
^
TypeError: Cannot read property 'setUp' of undefined
at wrapGroup (...\project\node_modules\nodeunit\lib\core.js:284:14)
at Object.exports.runSuite (...\project\node_modules\nodeunit\lib\core.js:92:13)
at exports.runSuite (...\project\node_modules\nodeunit\lib\core.js:124:21)
at _concat (...\project\node_modules\nodeunit\deps\async.js:513:13)
at async.forEachSeries.iterate (...\project\node_modules\nodeunit\deps\async.js:123:13)
at async.forEachSeries.iterate (...\project\node_modules\nodeunit\deps\async.js:134:25)
at _concat (...\project\node_modules\nodeunit\deps\async.js:515:17)
at exports.test.test.done (...\project\node_modules\nodeunit\lib\types.js:146:17)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
```
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Reproduziere das Problem mit dem Beispiel test.js, untersuche dann test.done in lib/types.js und den Pfad wrapGroup in lib/core.js, insbesondere die Stack-Trace-Positionen. Verfolge, was der zweite Abschluss tut, und füge einen Regressionstest hinzu oder aktualisiere ihn; fertig ist es, wenn ein doppeltes test.done() die Interna von nodeunit nicht mehr zum Absturz bringt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, node.js
- Bereich
- testing-qa
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100