-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add error context if timers are infinite looped #4626
Changes from 7 commits
c59bd2d
a829147
00189e8
0ece0e9
0c4b2c8
ec17d52
80cba31
2754435
eae4426
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -225,11 +225,37 @@ export default class FakeTimers { | |
} | ||
|
||
if (i === this._maxLoops) { | ||
const timers = Object.assign({}, this._timers); | ||
throw new Error( | ||
'Ran ' + | ||
this._maxLoops + | ||
' timers, and there are still more! ' + | ||
"Assuming we've hit an infinite recursion and bailing out...", | ||
"Assuming we've hit an infinite recursion and bailing out." + | ||
'The following timers are still pending:' + | ||
String( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is unnecessary, you should do a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Or just There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thx, i will do that today |
||
Object.keys(timers) | ||
.sort((left, right) => timers[left].expiry - timers[right].expiry) | ||
.map(function(key, index) { | ||
return ( | ||
'\n\nsetTimeout - pending timer time ' + | ||
String(Number(timers[key].expiry) - this._now) + | ||
'\n' + | ||
formatStackTrace(new Error().stack, this._global.setTimeout, { | ||
noStackTrace: false, | ||
}) + | ||
'\n\nsetImmediate - pending timer time ' + | ||
String(Number(timers[key].expiry) - this._now) + | ||
'\n' + | ||
formatStackTrace( | ||
new Error().stack, | ||
this._global.setImmediate, | ||
{ | ||
noStackTrace: false, | ||
}, | ||
) | ||
); | ||
}), | ||
), | ||
); | ||
} | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1991,8 +1991,8 @@ [email protected]: | |
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" | ||
|
||
diff@^3.2.0: | ||
version "3.3.1" | ||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" | ||
version "3.4.0" | ||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" | ||
|
||
diffie-hellman@^5.0.0: | ||
version "5.0.2" | ||
|
@@ -2446,8 +2446,8 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: | |
safe-buffer "^5.1.1" | ||
|
||
exec-sh@^0.2.0: | ||
version "0.2.0" | ||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" | ||
version "0.2.1" | ||
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" | ||
dependencies: | ||
merge "^1.1.3" | ||
|
||
|
@@ -4202,7 +4202,7 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: | |
dependencies: | ||
brace-expansion "^1.1.7" | ||
|
||
[email protected]: | ||
[email protected], minimist@~0.0.1: | ||
version "0.0.8" | ||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" | ||
|
||
|
@@ -4214,10 +4214,6 @@ minimist@^0.1.0: | |
version "0.1.0" | ||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" | ||
|
||
minimist@~0.0.1: | ||
version "0.0.10" | ||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" | ||
|
||
[email protected], "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: | ||
version "0.5.1" | ||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" | ||
|
@@ -5277,16 +5273,16 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, | |
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" | ||
|
||
sane@^2.0.0: | ||
version "2.0.0" | ||
resolved "https://registry.yarnpkg.com/sane/-/sane-2.0.0.tgz#99cb79f21f4a53a69d4d0cd957c2db04024b8eb2" | ||
version "2.2.0" | ||
resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56" | ||
dependencies: | ||
anymatch "^1.3.0" | ||
exec-sh "^0.2.0" | ||
fb-watchman "^2.0.0" | ||
minimatch "^3.0.2" | ||
minimist "^1.1.1" | ||
walker "~1.0.5" | ||
watch "~0.10.0" | ||
watch "~0.18.0" | ||
optionalDependencies: | ||
fsevents "^1.1.1" | ||
|
||
|
@@ -6004,9 +6000,12 @@ walker@~1.0.5: | |
dependencies: | ||
makeerror "1.0.x" | ||
|
||
watch@~0.10.0: | ||
version "0.10.0" | ||
resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" | ||
watch@~0.18.0: | ||
version "0.18.0" | ||
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" | ||
dependencies: | ||
exec-sh "^0.2.0" | ||
minimist "^1.2.0" | ||
|
||
watchify@^3.9.0: | ||
version "3.9.0" | ||
|
@@ -6222,8 +6221,8 @@ yargs@^8.0.2: | |
yargs-parser "^7.0.0" | ||
|
||
yargs@^9.0.0: | ||
version "9.0.0" | ||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.0.tgz#efe5b1ad3f94bdc20423411b90628eeec0b25f3c" | ||
version "9.0.1" | ||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" | ||
dependencies: | ||
camelcase "^4.1.0" | ||
cliui "^3.2.0" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you don't need to do this if you only do
Object.keys
on it (just don't mutate the object)