-
-
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
Jest-internal sandbox escape hatch #9907
Conversation
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.
great stuff 😀
packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts
Outdated
Show resolved
Hide resolved
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.
I like this - turned out quite minimal. Needs a changelog entry 😀
Do you wanna land this without using it?
Yeah I think it's fine to land without usages, we can adapt or revert in any way we like later if something else goes wrong, since it's all internal. |
Good call |
You could just rebase #7792 on this and play with it if we want some assurance it's a feasible solution |
Will pollute the diff there a bit but can do yeah, it's otherwise finished so.. |
I've added a bunch of cache clearing on master, so might even happen that PR passes now... |
This means other tools (e.g. Yarn PnP) should ignore the unknown option
#7792 (rebased on this and adding a usage) has proven that this works. With all the added Babel and Prettier deps required from the outside, the OOM on circus is avoided and so is the 15-20% overall test run performance degradation. |
The next steps after this (before #7792) will be to land a PR with the first usage (in |
Sure you want that entry? No one is supposed to (be able to) use any of this 😅 |
Almost forgot my one todo, done now: |
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.
I really like this 👍
The changelog entry is mostly to have a checklist for release and changes that might impact things. "Added way to break out of sandbox" is definitely part of that, even if we think we've made it impossible for user code 😀 But if we detect 2 months from now some |
…esolve-outside * upstream/master: (106 commits) docs: fix jest-diff example (jestjs#10067) Cleanup `displayName` type (jestjs#10049) docs: correct confusing filename in `enableAutomock` example (jestjs#10055) chore: minor optimize getTransformer (jestjs#10050) chore: fix TestUtils.ts to match the types (jestjs#10034) Minor test name typo fix (jestjs#10033) chore: upgrade to typescript 3.9 (jestjs#10031) feat: CLI argument to filter tests by projects (jestjs#8612) chore: bump `istanbul-lib-instrument` (jestjs#10009) feat: support config files exporting (`async`) `function`s (jestjs#10001) fix: add missing haste-map dep to jest-snapshot (jestjs#10008) 🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉 (jestjs#10000) Fix typo in dependency warning (jestjs#10006) chore: add missing comma (jestjs#9999) fix: Control no diff message color with diff options (jestjs#9997) fix(jest-jasmine2): fix Error message (jestjs#9990) docs: fix jest-object ids for docusaurs (jestjs#9994) docs: fix Configuration, JestPlatform and JestObjectAPI docs for 26 (jestjs#9985) Add migration notes for breaking changes (jestjs#9978) chore: fix date and heading in blog post (jestjs#9977) ...
Merged master and added changelog entry. I think this is good to go now. When I find time I will follow up with a Babel plugin and then start introducing usages of this, for the uglier inline snapshots PR and maybe for perf optimization PRs |
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Summary
Closes #9898 (implements the runtime part) - to be easily usable, we will also need a Babel plugin to generate the
require(resolve())
structure for our Jest-internal code.Test plan
Tests added - including a test verifying that this is ignored for external modules to make sure users cannot use this to escape the sandbox.
The first commits adds some general runtime require.resolve test cases unrelated to the change.