Skip to content

Commit 707ca7f

Browse files
authored
Update Jest and remove hacks (#11372)
* Update Jest * Remove hacks for Jest + Workspace integration They were fixed by jestjs/jest#4761. * Use relative requires in tests relying on private APIs I changed them to absolute to work around a Jest bug. The bug has been fixed so I can revert my past changes now.
1 parent 3addf20 commit 707ca7f

38 files changed

+279
-315
lines changed

package.json

+6-9
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"babel-cli": "^6.6.5",
1111
"babel-core": "^6.0.0",
1212
"babel-eslint": "^7.1.0",
13-
"babel-jest": "21.2.0",
13+
"babel-jest": "^21.3.0-beta.4",
1414
"babel-plugin-check-es2015-constants": "^6.5.0",
1515
"babel-plugin-external-helpers": "^6.22.0",
1616
"babel-plugin-syntax-trailing-function-commas": "^6.5.0",
@@ -53,6 +53,7 @@
5353
"eslint-plugin-flowtype": "^2.25.0",
5454
"eslint-plugin-react": "^6.7.1",
5555
"eslint-plugin-react-internal": "file:./scripts/eslint-rules",
56+
"expect": "^21.3.0-beta.4",
5657
"fbjs": "^0.8.16",
5758
"fbjs-scripts": "^0.6.0",
5859
"filesize": "^3.5.6",
@@ -63,11 +64,10 @@
6364
"gzip-js": "~0.3.2",
6465
"gzip-size": "^3.0.0",
6566
"jasmine-check": "^1.0.0-rc.0",
66-
"jest": "21.2.1",
67-
"jest-config": "21.2.1",
68-
"jest-jasmine2": "21.2.1",
69-
"jest-matchers": "20.1.0-delta.1",
70-
"jest-runtime": "21.2.1",
67+
"jest": "^21.3.0-beta.4",
68+
"jest-config": "^21.3.0-beta.4",
69+
"jest-jasmine2": "^21.3.0-beta.4",
70+
"jest-runtime": "^21.3.0-beta.4",
7171
"merge-stream": "^1.0.0",
7272
"minimist": "^1.2.0",
7373
"ncp": "^2.0.0",
@@ -115,9 +115,6 @@
115115
"transform": {
116116
".*": "./scripts/jest/preprocessor.js"
117117
},
118-
"transformIgnorePatterns": [
119-
"/node_modules/(?!react|shared|events)"
120-
],
121118
"setupFiles": [
122119
"./scripts/jest/setup.js",
123120
"./scripts/jest/environment.js"

packages/react-cs-renderer/src/__tests__/ReactNativeCS-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var React;
1313
var ReactNativeCS;
1414

1515
jest.mock('shared/ReactFeatureFlags', () =>
16-
require('react-cs-renderer/src/ReactNativeCSFeatureFlags'),
16+
require('../ReactNativeCSFeatureFlags'),
1717
);
1818

1919
describe('ReactNativeCS', () => {

packages/react-dom/src/__tests__/EventPluginHub-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
'use strict';
1111

12-
jest.mock('react-dom/src/events/isEventSupported');
12+
jest.mock('../events/isEventSupported');
1313

1414
describe('EventPluginHub', () => {
1515
var React;

packages/react-dom/src/__tests__/ReactBrowserEventEmitter-test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ describe('ReactBrowserEventEmitter', () => {
6363
EventPluginRegistry = require('events/EventPluginRegistry');
6464
React = require('react');
6565
ReactDOM = require('react-dom');
66-
ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
67-
ReactBrowserEventEmitter = require('react-dom/src/events/ReactBrowserEventEmitter');
66+
ReactDOMComponentTree = require('../client/ReactDOMComponentTree');
67+
ReactBrowserEventEmitter = require('../events/ReactBrowserEventEmitter');
6868
ReactTestUtils = require('react-dom/test-utils');
69-
TapEventPlugin = require('react-dom/src/events/TapEventPlugin');
69+
TapEventPlugin = require('../events/TapEventPlugin');
7070

7171
var container = document.createElement('div');
7272

packages/react-dom/src/__tests__/ReactDOMComponent-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ describe('ReactDOMComponent', () => {
2727
ReactDOMServer = require('react-dom/server');
2828
ReactTestUtils = require('react-dom/test-utils');
2929
// TODO: can we express this test with only public API?
30-
inputValueTracking = require('react-dom/src/client/inputValueTracking');
30+
inputValueTracking = require('../client/inputValueTracking');
3131
});
3232

3333
describe('updateDOM', () => {

packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe('ReactDOMComponentTree', () => {
3434
React = require('react');
3535
ReactDOM = require('react-dom');
3636
// TODO: can we express this test with only public API?
37-
ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
37+
ReactDOMComponentTree = require('../client/ReactDOMComponentTree');
3838
ReactDOMServer = require('react-dom/server');
3939
});
4040

packages/react-dom/src/__tests__/ReactDOMEventListener-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ describe('ReactDOMEventListener', () => {
2424
React = require('react');
2525
ReactDOM = require('react-dom');
2626
// TODO: can we express this test with only public API?
27-
ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
28-
ReactDOMEventListener = require('react-dom/src/events/ReactDOMEventListener');
27+
ReactDOMComponentTree = require('../client/ReactDOMComponentTree');
28+
ReactDOMEventListener = require('../events/ReactDOMEventListener');
2929
ReactTestUtils = require('react-dom/test-utils');
3030

3131
handleTopLevel = jest.fn();

packages/react-dom/src/__tests__/ReactDOMInput-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('ReactDOMInput', () => {
3636
ReactDOMServer = require('react-dom/server');
3737
ReactTestUtils = require('react-dom/test-utils');
3838
// TODO: can we express this test with only public API?
39-
inputValueTracking = require('react-dom/src/client/inputValueTracking');
39+
inputValueTracking = require('../client/inputValueTracking');
4040
spyOn(console, 'error');
4141
});
4242

packages/react-dom/src/__tests__/ReactDOMSelection-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ describe('ReactDOMSelection', () => {
2020
beforeEach(() => {
2121
React = require('react');
2222
ReactDOM = require('react-dom');
23-
ReactDOMSelection = require('react-dom/src/client/ReactDOMSelection');
23+
ReactDOMSelection = require('../client/ReactDOMSelection');
2424
invariant = require('fbjs/lib/invariant');
2525

2626
({getModernOffsetsFromPoints} = ReactDOMSelection);

packages/react-dom/src/__tests__/ReactMount-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
'use strict';
1111

12-
const {COMMENT_NODE} = require('react-dom/src/shared/HTMLNodeType');
12+
const {COMMENT_NODE} = require('../shared/HTMLNodeType');
1313

1414
const invariant = require('invariant');
1515

packages/react-dom/src/__tests__/ReactServerRendering-test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ describe('ReactDOMServer', () => {
3434
ExecutionEnvironment.canUseDOM = false;
3535
ReactDOMServer = require('react-dom/server');
3636

37-
var DOMProperty = require('react-dom/src/shared/DOMProperty');
37+
// TODO: can we express this test with only public API?
38+
var DOMProperty = require('../shared/DOMProperty');
3839
ROOT_ATTRIBUTE_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;
3940
});
4041

packages/react-dom/src/__tests__/escapeTextContentForBrowser-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
describe('escapeTextContentForBrowser', () => {
1313
// TODO: can we express this test with only public API?
14-
var escapeTextContentForBrowser = require('react-dom/src/shared/escapeTextContentForBrowser');
14+
var escapeTextContentForBrowser = require('../shared/escapeTextContentForBrowser');
1515

1616
it('should escape boolean to string', () => {
1717
expect(escapeTextContentForBrowser(true)).toBe('true');

packages/react-dom/src/__tests__/inputValueTracking-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var React = require('react');
1313
var ReactDOM = require('react-dom');
1414
var ReactTestUtils = require('react-dom/test-utils');
1515
// TODO: can we express this test with only public API?
16-
var inputValueTracking = require('react-dom/src/client/inputValueTracking');
16+
var inputValueTracking = require('../client/inputValueTracking');
1717

1818
var getTracker = inputValueTracking._getTrackerFromNode;
1919

packages/react-dom/src/__tests__/quoteAttributeValueForBrowser-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
describe('quoteAttributeValueForBrowser', () => {
1313
// TODO: can we express this test with only public API?
14-
var quoteAttributeValueForBrowser = require('react-dom/src/shared/quoteAttributeValueForBrowser');
14+
var quoteAttributeValueForBrowser = require('../shared/quoteAttributeValueForBrowser');
1515

1616
it('should escape boolean to string', () => {
1717
expect(quoteAttributeValueForBrowser(true)).toBe('"true"');

packages/react-dom/src/__tests__/validateDOMNesting-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ describe('ReactContextValidator', () => {
136136
jest.resetModules();
137137

138138
// TODO: can we express this test with only public API?
139-
validateDOMNesting = require('react-dom/src/client/validateDOMNesting');
139+
validateDOMNesting = require('../client/validateDOMNesting');
140140
});
141141

142142
it('allows any tag with no context', () => {

packages/react-dom/src/client/__tests__/getNodeForCharacterOffset-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'use strict';
1111

1212
// TODO: can we express this test with only public API?
13-
var getNodeForCharacterOffset = require('react-dom/src/client/getNodeForCharacterOffset');
13+
var getNodeForCharacterOffset = require('../getNodeForCharacterOffset');
1414

1515
// Create node from HTML string
1616
function createNode(html) {

packages/react-dom/src/client/__tests__/setInnerHTML-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
'use strict';
1111

1212
// TODO: can we express this test with only public API?
13-
var setInnerHTML = require('react-dom/src/client/setInnerHTML');
14-
var Namespaces = require('react-dom/src/shared/DOMNamespaces').Namespaces;
13+
var setInnerHTML = require('../setInnerHTML');
14+
var Namespaces = require('../../shared/DOMNamespaces').Namespaces;
1515

1616
describe('setInnerHTML', () => {
1717
describe('when the node has innerHTML property', () => {

packages/react-dom/src/events/__tests__/BeforeInputEventPlugin-test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ describe('BeforeInputEventPlugin', function() {
4949
this.ReactDOM = require('react-dom');
5050

5151
// TODO: can we express this test with only public API?
52-
this.ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
53-
this.SyntheticCompositionEvent = require('react-dom/src/events/SyntheticCompositionEvent');
54-
this.SyntheticInputEvent = require('react-dom/src/events/SyntheticInputEvent');
55-
this.BeforeInputEventPlugin = require('react-dom/src/events/BeforeInputEventPlugin');
52+
this.ReactDOMComponentTree = require('../../client//ReactDOMComponentTree');
53+
this.SyntheticCompositionEvent = require('../SyntheticCompositionEvent');
54+
this.SyntheticInputEvent = require('../SyntheticInputEvent');
55+
this.BeforeInputEventPlugin = require('../BeforeInputEventPlugin');
5656
}
5757

5858
function extract(node, eventType, optionalData) {

packages/react-dom/src/events/__tests__/EnterLeaveEventPlugin-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ describe('EnterLeaveEventPlugin', () => {
2323
ReactDOM = require('react-dom');
2424
ReactTestUtils = require('react-dom/test-utils');
2525
// TODO: can we express this test with only public API?
26-
ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
27-
EnterLeaveEventPlugin = require('react-dom/src/events/EnterLeaveEventPlugin');
26+
ReactDOMComponentTree = require('../../client/ReactDOMComponentTree');
27+
EnterLeaveEventPlugin = require('../EnterLeaveEventPlugin');
2828
});
2929

3030
it('should set relatedTarget properly in iframe', () => {

packages/react-dom/src/events/__tests__/FallbackCompositionState-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ describe('FallbackCompositionState', () => {
1616

1717
beforeEach(() => {
1818
// TODO: can we express this test with only public API?
19-
FallbackCompositionState = require('react-dom/src/events/FallbackCompositionState');
19+
FallbackCompositionState = require('../FallbackCompositionState');
2020
});
2121

2222
function getInput() {

packages/react-dom/src/events/__tests__/SelectEventPlugin-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ describe('SelectEventPlugin', () => {
3030
ReactDOM = require('react-dom');
3131
ReactTestUtils = require('react-dom/test-utils');
3232
// TODO: can we express this test with only public API?
33-
ReactDOMComponentTree = require('react-dom/src/client/ReactDOMComponentTree');
34-
SelectEventPlugin = require('react-dom/src/events/SelectEventPlugin');
33+
ReactDOMComponentTree = require('../../client/ReactDOMComponentTree');
34+
SelectEventPlugin = require('../SelectEventPlugin');
3535
});
3636

3737
it('should skip extraction if no listeners are present', () => {

packages/react-dom/src/events/__tests__/SyntheticClipboardEvent-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ describe('SyntheticClipboardEvent', () => {
1616

1717
beforeEach(() => {
1818
// TODO: can we express this test with only public API?
19-
SyntheticClipboardEvent = require('react-dom/src/events/SyntheticClipboardEvent');
19+
SyntheticClipboardEvent = require('../SyntheticClipboardEvent');
2020
createEvent = function(nativeEvent) {
21-
var target = require('react-dom/src/events/getEventTarget')(nativeEvent);
21+
var target = require('../getEventTarget')(nativeEvent);
2222
return SyntheticClipboardEvent.getPooled({}, '', nativeEvent, target);
2323
};
2424
});

packages/react-dom/src/events/__tests__/SyntheticEvent-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ describe('SyntheticEvent', () => {
2525
ReactTestUtils = require('react-dom/test-utils');
2626

2727
createEvent = function(nativeEvent) {
28-
var target = require('react-dom/src/events/getEventTarget')(nativeEvent);
28+
var target = require('../getEventTarget')(nativeEvent);
2929
return SyntheticEvent.getPooled({}, '', nativeEvent, target);
3030
};
3131
});

packages/react-dom/src/events/__tests__/SyntheticKeyboardEvent-test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ describe('SyntheticKeyboardEvent', () => {
1717

1818
beforeEach(() => {
1919
// Mock getEventCharCode for proper unit testing
20-
jest.mock('react-dom/src/events/getEventCharCode');
21-
getEventCharCode = require('react-dom/src/events/getEventCharCode');
20+
jest.mock('../getEventCharCode');
21+
getEventCharCode = require('../getEventCharCode');
2222

2323
// TODO: can we express this test with only public API?
24-
SyntheticKeyboardEvent = require('react-dom/src/events/SyntheticKeyboardEvent');
24+
SyntheticKeyboardEvent = require('../SyntheticKeyboardEvent');
2525
createEvent = function(nativeEvent) {
26-
var target = require('react-dom/src/events/getEventTarget')(nativeEvent);
26+
var target = require('../getEventTarget')(nativeEvent);
2727
return SyntheticKeyboardEvent.getPooled({}, '', nativeEvent, target);
2828
};
2929
});

packages/react-dom/src/events/__tests__/SyntheticWheelEvent-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ describe('SyntheticWheelEvent', () => {
1616

1717
beforeEach(() => {
1818
// TODO: can we express this test with only public API?
19-
SyntheticWheelEvent = require('react-dom/src/events/SyntheticWheelEvent');
19+
SyntheticWheelEvent = require('../SyntheticWheelEvent');
2020

2121
createEvent = function(nativeEvent) {
22-
var target = require('react-dom/src/events/getEventTarget')(nativeEvent);
22+
var target = require('../getEventTarget')(nativeEvent);
2323
return SyntheticWheelEvent.getPooled({}, '', nativeEvent, target);
2424
};
2525
});

packages/react-dom/src/events/__tests__/getEventCharCode-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'use strict';
1111

1212
// TODO: can we express this test with only public API?
13-
var getEventCharCode = require('react-dom/src/events/getEventCharCode');
13+
var getEventCharCode = require('../getEventCharCode');
1414

1515
describe('getEventCharCode', () => {
1616
describe('when charCode is present in nativeEvent', () => {

packages/react-dom/src/events/__tests__/getEventKey-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'use strict';
1111

1212
// TODO: can we express this test with only public API?
13-
var getEventKey = require('react-dom/src/events/getEventKey');
13+
var getEventKey = require('../getEventKey');
1414

1515
describe('getEventKey', () => {
1616
describe('when key is implemented in a browser', () => {

packages/react-native-renderer/src/__tests__/ReactNativeAttributePayload-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88
'use strict';
99

10-
var ReactNativeAttributePayload = require('react-native-renderer/src/ReactNativeAttributePayload');
11-
var ReactNativePropRegistry = require('react-native-renderer/src/ReactNativePropRegistry');
10+
var ReactNativeAttributePayload = require('../ReactNativeAttributePayload');
11+
var ReactNativePropRegistry = require('../ReactNativePropRegistry');
1212

1313
var diff = ReactNativeAttributePayload.diff;
1414

packages/react-native-renderer/src/__tests__/ReactNativeEvents-test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ beforeEach(() => {
6969
RCTEventEmitter = require('RCTEventEmitter');
7070
React = require('react');
7171
ReactNative = require('react-native-renderer');
72-
ReactNativeBridgeEventPlugin = require('react-native-renderer/src/ReactNativeBridgeEventPlugin');
72+
ReactNativeBridgeEventPlugin = require('../ReactNativeBridgeEventPlugin');
7373
ResponderEventPlugin = require('events/ResponderEventPlugin');
7474
UIManager = require('UIManager');
75-
createReactNativeComponentClass = require('react-native-renderer/src/createReactNativeComponentClass');
75+
createReactNativeComponentClass = require('../createReactNativeComponentClass');
7676
});
7777

7878
it('fails if unknown/unsupported event types are dispatched', () => {

packages/react-native-renderer/src/__tests__/ReactNativeMount-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ describe('ReactNative', () => {
2121
React = require('react');
2222
ReactNative = require('react-native-renderer');
2323
UIManager = require('UIManager');
24-
createReactNativeComponentClass = require('react-native-renderer/src/createReactNativeComponentClass');
24+
createReactNativeComponentClass = require('../createReactNativeComponentClass');
2525
});
2626

2727
it('should be able to create and render a native component', () => {

packages/react-native-renderer/src/__tests__/createReactNativeComponentClass-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('createReactNativeComponentClass', () => {
1717
beforeEach(() => {
1818
jest.resetModules();
1919

20-
createReactNativeComponentClass = require('react-native-renderer/src/createReactNativeComponentClass');
20+
createReactNativeComponentClass = require('../createReactNativeComponentClass');
2121
React = require('react');
2222
ReactNative = require('react-native-renderer');
2323
});

packages/react-noop-renderer/src/ReactNoop.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var ReactFiberReconciler = require('react-reconciler');
2525
var ReactFeatureFlags = require('shared/ReactFeatureFlags');
2626
var ReactInstanceMap = require('shared/ReactInstanceMap');
2727
var emptyObject = require('fbjs/lib/emptyObject');
28-
var expect = require('jest-matchers');
28+
var expect = require('expect');
2929

3030
const UPDATE_SIGNAL = {};
3131

packages/react-reconciler/src/__tests__/ReactIncrementalErrorHandling-test.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -935,11 +935,9 @@ describe('ReactIncrementalErrorHandling', () => {
935935
function initReactFiberErrorLoggerMock(mock) {
936936
jest.resetModules();
937937
if (mock) {
938-
// TODO: direct imports like some-package/src/* are bad. Fix me.
939-
jest.mock('react-reconciler/src/ReactFiberErrorLogger');
938+
jest.mock('../ReactFiberErrorLogger');
940939
} else {
941-
// TODO: direct imports like some-package/src/* are bad. Fix me.
942-
jest.unmock('react-reconciler/src/ReactFiberErrorLogger');
940+
jest.unmock('../ReactFiberErrorLogger');
943941
}
944942
React = require('react');
945943
ReactNoop = require('react-noop-renderer');
@@ -1035,8 +1033,7 @@ describe('ReactIncrementalErrorHandling', () => {
10351033

10361034
const logCapturedErrorCalls = [];
10371035

1038-
// TODO: direct imports like some-package/src/* are bad. Fix me.
1039-
const ReactFiberErrorLogger = require('react-reconciler/src/ReactFiberErrorLogger');
1036+
const ReactFiberErrorLogger = require('../ReactFiberErrorLogger');
10401037
ReactFiberErrorLogger.logCapturedError.mockImplementation(
10411038
capturedError => {
10421039
logCapturedErrorCalls.push(capturedError);

packages/react-reconciler/src/__tests__/ReactIncrementalPerf-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ describe('ReactDebugFiberPerf', () => {
117117
ReactNoop = require('react-noop-renderer');
118118
ReactCallReturn = require('react-call-return');
119119
// TODO: can we express this test with only public API?
120-
ReactPortal = require('react-reconciler/src/ReactPortal');
120+
ReactPortal = require('../ReactPortal');
121121
PropTypes = require('prop-types');
122122
});
123123

0 commit comments

Comments
 (0)