Skip to content
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

Move jest-each to core #6278

Merged
merged 17 commits into from
May 27, 2018
Merged

Move jest-each to core #6278

merged 17 commits into from
May 27, 2018

Conversation

mattphillips
Copy link
Contributor

@mattphillips mattphillips commented May 26, 2018

Summary

This PR moves jest-each into the core repo.

It will serve two purposes for Jest and the community:

  1. It will contain the test.each logic that is required in both jest-jasmine2 and jest-circus
  2. It will allow users of older versions of Jest to use the each().test syntax that currently exists with the package.

Why core?

It will allow us to keep the behaviour between test.each and each().test the same (as it is the same code just different invocation techniques) and stop them from diverging.

Currently the each logic is baked into jest-jasmine2 and will need to be ported over to jest-circus so to stop any duplication/divergence the code should live in a shared namespace of jest-each

Test plan

For this PR I've brought in the exact code from jest-each which has 100% test coverage

TODO

  • Copy jest-each into core
  • Remove all dot files, scripts and metadata
  • Add FB peeps as owners on npm

Separate PRs

  • Move bind logic explicitly into jest-each from jest-jasmine2
  • Add jest-each as a dependency to jest-jasmine2
  • Add jest-each as a dependency to jest-circus

EDIT: relates to #4362

Copy link
Contributor

@aaronabramov aaronabramov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉 🎈

@@ -0,0 +1,200 @@
import each from '../';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would be awesome to have an integration test with snapshots of the output for it eventually!

return arrayEach(global)(...args);
};

each.withGlobal = g => (...args) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you could probably just export

export default each.withGlobal(global);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's more obvious to just export the each, as it is now

@@ -0,0 +1,3 @@
**/__tests__/**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can add **/__mocks__/** just in case

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, this should copy all of the other npmignores, but add asset in addition to them

@@ -0,0 +1,18 @@
{
"name": "jest-each",
"version": "0.5.0",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

version 23.0.0

@@ -0,0 +1,40 @@
import util from 'util';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add // @flow to every source file (not needed for tests) :D

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be added as a followup, as it will probably blow away

CHANGELOG.md Outdated
@@ -1,5 +1,10 @@
## master

### Features

* `[jest-each]` Move jest-each into core Jest
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move `jest-each` into Jest core

?

Copy link
Collaborator

@thymikee thymikee May 26, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also I think this is more of a chore action, but I'm probably wrong. cc @SimenB

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree - the feature has already landed in Jest, moving this package in is just a step on the way for circus to get the feature as well

Copy link
Collaborator

@thymikee thymikee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix some inline comments and I'm good 👍

Copy link
Member

@SimenB SimenB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing flow types as pointed out, but that's fine as a follow-up

@codecov-io
Copy link

Codecov Report

❗ No coverage uploaded for pull request base (master@f527647). Click here to learn what that means.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff            @@
##             master    #6278   +/-   ##
=========================================
  Coverage          ?   63.65%           
=========================================
  Files             ?      225           
  Lines             ?     8626           
  Branches          ?        4           
=========================================
  Hits              ?     5491           
  Misses            ?     3134           
  Partials          ?        1
Impacted Files Coverage Δ
packages/jest-each/src/template.js 100% <100%> (ø)
packages/jest-each/src/array.js 100% <100%> (ø)
packages/jest-each/src/index.js 100% <100%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f527647...9d40446. Read the comment docs.

@mattphillips
Copy link
Contributor Author

@SimenB @thymikee @aaronabramov I think this is good to go.

I'll fix the flow changes in the next PR when I update jest-jasmine2 to use this - I've found a nice abstraction to remove most of this code anyway 😄

@thymikee
Copy link
Collaborator

Awesome! Let's do it

@thymikee thymikee merged commit 8816df7 into jestjs:master May 27, 2018
@mattphillips mattphillips deleted the jest-each branch May 27, 2018 09:39
calebeby referenced this pull request in Pigmice2733/scouting-frontend May 30, 2018
This Pull Request updates dependency [jest](https://github.com/facebook/jest) from `v22.4.3` to `v23.0.1`



<details>
<summary>Release Notes</summary>

### [`v23.0.1`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2301)
[Compare Source](jestjs/jest@v23.0.0...3a3b4e3)
##### Chore & Maintenance

* `[jest-jasemine2]` Add dependency on jest-each ([#&#8203;6308](`https://github.com/facebook/jest/pull/6308`))
* `[jest-each]` Move jest-each into core Jest ([#&#8203;6278](`https://github.com/facebook/jest/pull/6278`))
* `[examples]` Update typescript example to using ts-jest ([#&#8203;6260](`https://github.com/facebook/jest/pull/6260`))
##### Fixes

* `[pretty-format]` Serialize inverse asymmetric matchers correctly ([#&#8203;6272](`https://github.com/facebook/jest/pull/6272`))

---

### [`v23.0.0`](https://github.com/facebook/jest/blob/master/CHANGELOG.md#&#8203;2300)
[Compare Source](jestjs/jest@2745e3e...v23.0.0)
##### Features

* `[expect]` Expose `getObjectSubset`, `iterableEquality`, and `subsetEquality` ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-snapshot]` Add snapshot property matchers ([#&#8203;6210](`https://github.com/facebook/jest/pull/6210`))
* `[jest-config]` Support jest-preset.js files within Node modules ([#&#8203;6185](`https://github.com/facebook/jest/pull/6185`))
* `[jest-cli]` Add `--detectOpenHandles` flag which enables Jest to potentially track down handles keeping it open after tests are complete. ([#&#8203;6130](`https://github.com/facebook/jest/pull/6130`))
* `[jest-jasmine2]` Add data driven testing based on `jest-each` ([#&#8203;6102](`https://github.com/facebook/jest/pull/6102`))
* `[jest-matcher-utils]` Change "suggest to equal" message to be more advisory ([#&#8203;6103](`https://github.com/facebook/jest/issues/6103`))
* `[jest-message-util]` Don't ignore messages with `vendor` anymore ([#&#8203;6117](`https://github.com/facebook/jest/pull/6117`))
* `[jest-validate]` Get rid of `jest-config` dependency ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-validate]` Adds option to inject `deprecationEntries` ([#&#8203;6067](`https://github.com/facebook/jest/pull/6067`))
* `[jest-snapshot]` [**BREAKING**] Concatenate name of test, optional snapshot name and count ([#&#8203;6015](`https://github.com/facebook/jest/pull/6015`))
* `[jest-runtime]` Allow for transform plugins to skip the definition process method if createTransformer method was defined. ([#&#8203;5999](`https://github.com/facebook/jest/pull/5999`))
* `[expect]` Add stack trace for async errors ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for timeouts ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-jasmine2]` Add stack trace for thrown non-`Error`s ([#&#8203;6008](`https://github.com/facebook/jest/pull/6008`))
* `[jest-runtime]` Prevent modules from marking themselves as their own parent ([#&#8203;5235](`https://github.com/facebook/jest/issues/5235`))
* `[jest-mock]` Add support for auto-mocking generator functions ([#&#8203;5983](`https://github.com/facebook/jest/pull/5983`))
* `[expect]` Add support for async matchers  ([#&#8203;5919](`https://github.com/facebook/jest/pull/5919`))
* `[expect]` Suggest toContainEqual ([#&#8203;5948](`https://github.com/facebook/jest/pull/5953`))
* `[jest-config]` Export Jest's default options ([#&#8203;5948](`https://github.com/facebook/jest/pull/5948`))
* `[jest-editor-support]` Move `coverage` to `ProjectWorkspace.collectCoverage` ([#&#8203;5929](`https://github.com/facebook/jest/pull/5929`))
* `[jest-editor-support]` Add `coverage` option to runner ([#&#8203;5836](`https://github.com/facebook/jest/pull/5836`))
* `[jest-haste-map]` Support extracting dynamic `import`s ([#&#8203;5883](`https://github.com/facebook/jest/pull/5883`))
* `[expect]` Improve output format for mismatchedArgs in mock/spy calls. ([#&#8203;5846](`https://github.com/facebook/jest/pull/5846`))
* `[jest-cli]` Add support for using `--coverage` in combination with watch mode, `--onlyChanged`, `--findRelatedTests` and more ([#&#8203;5601](`https://github.com/facebook/jest/pull/5601`))
* `[jest-jasmine2]` [**BREAKING**] Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments. `[jest-circus]` Adds error throwing and descriptive errors to `it`/ `test` for invalid arguments ([#&#8203;5558](`https://github.com/facebook/jest/pull/5558`))
* `[jest-matcher-utils]` Add `isNot` option to `matcherHint` function ([#&#8203;5512](`https://github.com/facebook/jest/pull/5512`))
* `[jest-config]` Add `<rootDir>` to runtime files not found error report ([#&#8203;5693](`https://github.com/facebook/jest/pull/5693`))
* `[expect]` Make toThrow matcher pass only if Error object is returned from promises ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add isError to utils ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[expect]` Add inverse matchers (`expect.not.arrayContaining`, etc., [#&#8203;5517](`https://github.com/facebook/jest/pull/5517`))
* `[expect]` `expect.extend` now also extends asymmetric matchers ([#&#8203;5503](`https://github.com/facebook/jest/pull/5503`))
* `[jest-mock]` Update `spyOnProperty` to support spying on the prototype chain ([#&#8203;5753](`https://github.com/facebook/jest/pull/5753`))
* `[jest-mock]` Add tracking of return values in the `mock` property ([#&#8203;5752](`https://github.com/facebook/jest/pull/5752`))
* `[jest-mock]` Add tracking of thrown errors in the `mock` property ([#&#8203;5764](`https://github.com/facebook/jest/pull/5764`))
* `[expect]`Add nthCalledWith spy matcher ([#&#8203;5605](`https://github.com/facebook/jest/pull/5605`))
* `[jest-cli]` Add `isSerial` property that runners can expose to specify that they can not run in parallel ([#&#8203;5706](`https://github.com/facebook/jest/pull/5706`))
* `[expect]` Add `.toBeCalledTimes` and `toHaveBeenNthCalledWith` aliases ([#&#8203;5826](`https://github.com/facebook/jest/pull/5826`))
* `[jest-cli]` Interactive Snapshot Mode improvements ([#&#8203;5864](`https://github.com/facebook/jest/pull/5864`))
* `[jest-editor-support]` Add `no-color` option to runner ([#&#8203;5909](`https://github.com/facebook/jest/pull/5909`))
* `[jest-jasmine2]` Pretty-print non-Error object errors ([#&#8203;5980](`https://github.com/facebook/jest/pull/5980`))
* `[jest-message-util]` Include column in stack frames ([#&#8203;5889](`https://github.com/facebook/jest/pull/5889`))
* `[expect]` Introduce toStrictEqual ([#&#8203;6032](`https://github.com/facebook/jest/pull/6032`))
* `[expect]` Add return matchers ([#&#8203;5879](`https://github.com/facebook/jest/pull/5879`))
* `[jest-cli]` Improve snapshot summaries ([#&#8203;6181](`https://github.com/facebook/jest/pull/6181`))
* `[expect]` Include custom mock names in error messages ([#&#8203;6199](`https://github.com/facebook/jest/pull/6199`))
* `[jest-diff]` Support returning diff from oneline strings ([#&#8203;6221](`https://github.com/facebook/jest/pull/6221`))
* `[expect]` Improve return matchers ([#&#8203;6172](`https://github.com/facebook/jest/pull/6172`))
* `[jest-cli]` Overhaul watch plugin hooks names ([#&#8203;6249](`https://github.com/facebook/jest/pull/6249`))
* `[jest-mock]` Include tracked call results in serialized mock ([#&#8203;6244](`https://github.com/facebook/jest/pull/6244`))
##### Fixes

* `[jest-cli]` Fix stdin encoding to utf8 for watch plugins. ([#&#8203;6253](`https://github.com/facebook/jest/issues/6253`))
* `[expect]` Better detection of DOM Nodes for equality ([#&#8203;6246](`https://github.com/facebook/jest/pull/6246`))
* `[jest-cli]` Fix misleading action description for F key when in "only failed tests" mode. ([#&#8203;6167](`https://github.com/facebook/jest/issues/6167`))
* `[jest-worker]` Stick calls to workers before processing them ([#&#8203;6073](`https://github.com/facebook/jest/pull/6073`))
* `[babel-plugin-jest-hoist]` Allow using `console` global variable ([#&#8203;6075](`https://github.com/facebook/jest/pull/6075`))
* `[jest-jasmine2]` Always remove node core message from assert stack traces ([#&#8203;6055](`https://github.com/facebook/jest/pull/6055`))
* `[expect]` Add stack trace when `expect.assertions` and `expect.hasAssertions` causes test failures. ([#&#8203;5997](`https://github.com/facebook/jest/pull/5997`))
* `[jest-runtime]` Throw a more useful error when trying to require modules after the test environment is torn down ([#&#8203;5888](`https://github.com/facebook/jest/pull/5888`))
* `[jest-mock]` [**BREAKING**] Replace timestamps with `invocationCallOrder` ([#&#8203;5867](`https://github.com/facebook/jest/pull/5867`))
* `[jest-jasmine2]` Install `sourcemap-support` into normal runtime to catch runtime errors ([#&#8203;5945](`https://github.com/facebook/jest/pull/5945`))
* `[jest-jasmine2]` Added assertion error handling inside `afterAll hook` ([#&#8203;5884](`https://github.com/facebook/jest/pull/5884`))
* `[jest-cli]` Remove the notifier actions in case of failure when not in watch mode. ([#&#8203;5861](`https://github.com/facebook/jest/pull/5861`))
* `[jest-mock]` Extend .toHaveBeenCalled return message with outcome ([#&#8203;5951](`https://github.com/facebook/jest/pull/5951`))
* `[jest-runner]` Assign `process.env.JEST_WORKER_ID="1"` when in runInBand mode ([#&#8203;5860](`https://github.com/facebook/jest/pull/5860`))
* `[jest-cli]` Add descriptive error message when trying to use `globalSetup`/`globalTeardown` file that doesn't export a function. ([#&#8203;5835](`https://github.com/facebook/jest/pull/5835`))
* `[expect]` Do not rely on `instanceof RegExp`, since it will not work for RegExps created inside of a different VM ([#&#8203;5729](`https://github.com/facebook/jest/pull/5729`))
* `[jest-resolve]` Update node module resolution algorithm to correctly handle symlinked paths ([#&#8203;5085](`https://github.com/facebook/jest/pull/5085`))
* `[jest-editor-support]` Update `Settings` to use spawn in shell option ([#&#8203;5658](`https://github.com/facebook/jest/pull/5658`))
* `[jest-cli]` Improve the error message when 2 projects resolve to the same config ([#&#8203;5674](`https://github.com/facebook/jest/pull/5674`))
* `[jest-runtime]` remove retainLines from coverage instrumentation ([#&#8203;5692](`https://github.com/facebook/jest/pull/5692`))
* `[jest-cli]` Fix update snapshot issue when using watchAll ([#&#8203;5696](`https://github.com/facebook/jest/pull/5696`))
* `[expect]` Fix rejects.not matcher ([#&#8203;5670](`https://github.com/facebook/jest/pull/5670`))
* `[jest-runtime]` Prevent Babel warnings on large files ([#&#8203;5702](`https://github.com/facebook/jest/pull/5702`))
* `[jest-mock]` Prevent `mockRejectedValue` from causing unhandled rejection ([#&#8203;5720](`https://github.com/facebook/jest/pull/5720`))
* `[pretty-format]` Handle React fragments better ([#&#8203;5816](`https://github.com/facebook/jest/pull/5816`))
* `[pretty-format]` Handle formatting of `React.forwardRef` and `Context` components ([#&#8203;6093](`https://github.com/facebook/jest/pull/6093`))
* `[jest-cli]` Switch collectCoverageFrom back to a string ([#&#8203;5914](`https://github.com/facebook/jest/pull/5914`))
* `[jest-regex-util]` Fix handling regex symbols in tests path on Windows ([#&#8203;5941](`https://github.com/facebook/jest/pull/5941`))
* `[jest-util]` Fix handling of NaN/Infinity in mock timer delay ([#&#8203;5966](`https://github.com/facebook/jest/pull/5966`))
* `[jest-resolve]` Generalise test for package main entries equivalent to ".". ([#&#8203;5968](`https://github.com/facebook/jest/pull/5968`))
* `[jest-config]` Ensure that custom resolvers are used when resolving the configuration ([#&#8203;5976](`https://github.com/facebook/jest/pull/5976`))
* `[website]` Fix website docs ([#&#8203;5853](`https://github.com/facebook/jest/pull/5853`))
* `[expect]` Fix isEqual Set and Map to compare object values and keys regardless of order ([#&#8203;6150](`https://github.com/facebook/jest/pull/6150`))
* `[pretty-format]` [**BREAKING**] Remove undefined props from React elements ([#&#8203;6162](`https://github.com/facebook/jest/pull/6162`))
* `[jest-haste-map]` Properly resolve mocked node modules without package.json defined ([#&#8203;6232](`https://github.com/facebook/jest/pull/6232`))
##### Chore & Maintenance

* `[jest-runner]` Move sourcemap installation from `jest-jasmine2` to `jest-runner` ([#&#8203;6176](`https://github.com/facebook/jest/pull/6176`))
* `[jest-cli]` Use yargs's built-in `version` instead of rolling our own ([#&#8203;6215](`https://github.com/facebook/jest/pull/6215`))
* `[docs]` Add explanation on how to mock methods not implemented in JSDOM
* `[jest-jasmine2]` Simplify `Env.execute` and TreeProcessor to setup and clean resources for the top suite the same way as for all of the children suites ([#&#8203;5885](`https://github.com/facebook/jest/pull/5885`))
* `[babel-jest]` [**BREAKING**] Always return object from transformer ([#&#8203;5991](`https://github.com/facebook/jest/pull/5991`))
* `[*]` Run Prettier on compiled output ([#&#8203;5858](`https://github.com/facebook/jest/pull/3497`))
* `[jest-cli]` Add fileChange hook for plugins ([#&#8203;5708](`https://github.com/facebook/jest/pull/5708`))
* `[docs]` Add docs on using `jest.mock(...)` ([#&#8203;5648](`https://github.com/facebook/jest/pull/5648`))
* `[docs]` Mention Jest Puppeteer Preset ([#&#8203;5722](`https://github.com/facebook/jest/pull/5722`))
* `[docs]` Add jest-community section to website ([#&#8203;5675](`https://github.com/facebook/jest/pull/5675`))
* `[docs]` Add versioned docs for v22.4 ([#&#8203;5733](`https://github.com/facebook/jest/pull/5733`))
* `[docs]` Improve Snapshot Testing Guide ([#&#8203;5812](`https://github.com/facebook/jest/issues/5812`))
* `[jest-runtime]` [**BREAKING**] Remove `jest.genMockFn` and `jest.genMockFunction` ([#&#8203;6173](`https://github.com/facebook/jest/pull/6173`))
* `[jest-message-util]` Avoid adding unnecessary indent to blank lines in stack traces ([#&#8203;6211](`https://github.com/facebook/jest/pull/6211`))

---

### [`v22.4.4`](jestjs/jest@6851d8b...v22.4.4)
[Compare Source](jestjs/jest@6851d8b...v22.4.4)


---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
@github-actions
Copy link

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.
Please note this issue tracker is not a help forum. We recommend using StackOverflow or our discord channel for questions.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 12, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants