"Maximum call stack size exceeded" running in Jest
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, node.js
- Ambito
- testing-qa
Direzione di ricerca
Inizia leggendo lib/diff_line.js e riproduci il fallimento rieseguendo i test interessati in Jest watch mode. Traccia come vengono assegnati content e rawContent durante caricamenti ripetuti del modulo; il lavoro è completato quando le esecuzioni ripetute non ricorrono più fino a causare l’overflow dello stack delle chiamate, mentre la prima esecuzione continua a passare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Having issues re-running some tests in Jest due to this line:
RangeError: Maximum call stack size exceeded
at DiffLine.Object.<anonymous>.DiffLine.content (node_modules/nodegit/dist/diff_line.js:13:13)
at DiffLine.Object.<anonymous>.DiffLine.rawContent (node_modules/nodegit/dist/diff_line.js:29:22)
at DiffLine.Object.<anonymous>.DiffLine.content (node_modules/nodegit/dist/diff_line.js:18:44)
at DiffLine.Object.<anonymous>.DiffLine.rawContent (node_modules/nodegit/dist/diff_line.js:29:22)
at DiffLine.Object.<anonymous>.DiffLine.content (node_modules/nodegit/dist/diff_line.js:18:44)
at DiffLine.Object.<anonymous>.DiffLine.rawContent (node_modules/nodegit/dist/diff_line.js:29:22)
at DiffLine.Object.<anonymous>.DiffLine.content (node_modules/nodegit/dist/diff_line.js:18:44)
Looks like prototype.content is reimplementing "native" content in JS land. But in doing so, it assumes the module is never "re-required" which is not always the case when running tests in Jest. When the module is imported the second time, _rawContent is referencing the JS implementation from the previous "require" and causing it to go into an infinite loop.
Just to be clear, the first run passes without issues. It's every run after that in watch mode that is an issue. I believe this is because the native modules are not reset between runs so closure over cached references isn't predictable.
A quick and dirty hack that fixes the issue:
var _rawContent = DiffLine._content = DiffLine._content || DiffLine.prototype.content;
Would this make an acceptable pull request? Or do you have a better way of addressing this issue?
System information
- node version: v16.13.0
- npm or yarn version: 8.3.0
- OS/version/architecture: darwin 21.3.0 arm64
- Applicable nodegit version: 0.28.0-alpha.11
- Lingua principale
- JavaScript
- Stelle
- 5.8k
- Fork
- 704
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nodegit/nodegit
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
DiffLine.rawContent() returns string instead of Buffer, causing non-UTF-8 encoding corruption Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di nodegit/nodegit
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Seeed-Studio/wiki-documents#5655 · 2 commenti ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
capricorn86/happy-dom#2435 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Edit: CW+ Apertachannels:edit check:passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
01 type: bug 30 needs: triage 99 tag: UX Accessibility
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100