Skip to content

Commit 2d742e5

Browse files
committed
Use the disabled log to avoid double yielding values in scheduler mock
1 parent 057e4a0 commit 2d742e5

File tree

9 files changed

+27
-56
lines changed

9 files changed

+27
-56
lines changed

packages/react-art/src/__tests__/ReactART-test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ describe('ReactART', () => {
391391
</CurrentRendererContext.Provider>,
392392
);
393393

394-
expect(Scheduler).toFlushAndYieldThrough(__DEV__ ? ['A', 'A'] : ['A']);
394+
expect(Scheduler).toFlushAndYieldThrough(['A']);
395395

396396
ReactDOM.render(
397397
<Surface>
@@ -406,9 +406,7 @@ describe('ReactART', () => {
406406
expect(ops).toEqual([null, 'ART']);
407407

408408
ops = [];
409-
expect(Scheduler).toFlushAndYield(
410-
__DEV__ ? ['B', 'B', 'C', 'C'] : ['B', 'C'],
411-
);
409+
expect(Scheduler).toFlushAndYield(['B', 'C']);
412410

413411
expect(ops).toEqual(['Test']);
414412
});

packages/react-dom/src/__tests__/ReactDOMFiberAsync-test.internal.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -639,9 +639,7 @@ describe('ReactDOMFiberAsync', () => {
639639
expect(container.textContent).toEqual('');
640640

641641
// Everything should render immediately in the next event
642-
expect(Scheduler).toFlushExpired(
643-
__DEV__ ? ['A', 'A', 'B', 'B', 'C', 'C'] : ['A', 'B', 'C'],
644-
);
642+
expect(Scheduler).toFlushExpired(['A', 'B', 'C']);
645643
expect(container.textContent).toEqual('ABC');
646644
});
647645
});

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

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,30 +1324,12 @@ describe('ReactUpdates', () => {
13241324
let hiddenDiv;
13251325
act(() => {
13261326
root.render(<Foo />);
1327-
if (__DEV__) {
1328-
expect(Scheduler).toFlushAndYieldThrough([
1329-
'Foo',
1330-
'Foo',
1331-
'Baz',
1332-
'Baz',
1333-
'Foo#effect',
1334-
]);
1335-
} else {
1336-
expect(Scheduler).toFlushAndYieldThrough([
1337-
'Foo',
1338-
'Baz',
1339-
'Foo#effect',
1340-
]);
1341-
}
1327+
expect(Scheduler).toFlushAndYieldThrough(['Foo', 'Baz', 'Foo#effect']);
13421328
hiddenDiv = container.firstChild.firstChild;
13431329
expect(hiddenDiv.hidden).toBe(true);
13441330
expect(hiddenDiv.innerHTML).toBe('');
13451331
// Run offscreen update
1346-
if (__DEV__) {
1347-
expect(Scheduler).toFlushAndYield(['Bar', 'Bar']);
1348-
} else {
1349-
expect(Scheduler).toFlushAndYield(['Bar']);
1350-
}
1332+
expect(Scheduler).toFlushAndYield(['Bar']);
13511333
expect(hiddenDiv.hidden).toBe(true);
13521334
expect(hiddenDiv.innerHTML).toBe('<p>bar 0</p>');
13531335
});
@@ -1359,11 +1341,7 @@ describe('ReactUpdates', () => {
13591341
expect(hiddenDiv.innerHTML).toBe('<p>bar 0</p>');
13601342

13611343
// Run offscreen update
1362-
if (__DEV__) {
1363-
expect(Scheduler).toFlushAndYield(['Bar', 'Bar']);
1364-
} else {
1365-
expect(Scheduler).toFlushAndYield(['Bar']);
1366-
}
1344+
expect(Scheduler).toFlushAndYield(['Bar']);
13671345
expect(hiddenDiv.innerHTML).toBe('<p>bar 1</p>');
13681346
},
13691347
);

packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1701,12 +1701,7 @@ describe('DOMModernPluginEventSystem', () => {
17011701
const root = ReactDOM.createRoot(container);
17021702
root.render(<Test counter={0} />);
17031703

1704-
// Dev double-render
1705-
if (__DEV__) {
1706-
expect(Scheduler).toFlushAndYield(['Test', 'Test']);
1707-
} else {
1708-
expect(Scheduler).toFlushAndYield(['Test']);
1709-
}
1704+
expect(Scheduler).toFlushAndYield(['Test']);
17101705

17111706
// Click the button
17121707
dispatchClickEvent(ref.current);
@@ -1718,12 +1713,7 @@ describe('DOMModernPluginEventSystem', () => {
17181713
// Increase counter
17191714
root.render(<Test counter={1} />);
17201715
// Yield before committing
1721-
// Dev double-render
1722-
if (__DEV__) {
1723-
expect(Scheduler).toFlushAndYieldThrough(['Test', 'Test']);
1724-
} else {
1725-
expect(Scheduler).toFlushAndYieldThrough(['Test']);
1726-
}
1716+
expect(Scheduler).toFlushAndYieldThrough(['Test']);
17271717

17281718
// Click the button again
17291719
dispatchClickEvent(ref.current);

packages/react-dom/src/events/__tests__/DeprecatedDOMEventResponderSystem-test.internal.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ describe('DOMEventResponderSystem', () => {
811811

812812
const root = ReactDOM.createRoot(container);
813813
root.render(<Test counter={0} />);
814-
expect(Scheduler).toFlushAndYield(__DEV__ ? ['Test', 'Test'] : ['Test']);
814+
expect(Scheduler).toFlushAndYield(['Test']);
815815

816816
// Click the button
817817
dispatchClickEvent(ref.current);
@@ -823,9 +823,7 @@ describe('DOMEventResponderSystem', () => {
823823
// Increase counter
824824
root.render(<Test counter={1} />);
825825
// Yield before committing
826-
expect(Scheduler).toFlushAndYieldThrough(
827-
__DEV__ ? ['Test', 'Test'] : ['Test'],
828-
);
826+
expect(Scheduler).toFlushAndYieldThrough(['Test']);
829827

830828
// Click the button again
831829
dispatchClickEvent(ref.current);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,14 +188,13 @@ describe('ReactIncrementalErrorLogging', () => {
188188
expect(Scheduler).toFlushAndYield(
189189
[
190190
'render: 0',
191-
__DEV__ && 'render: 0', // replay
192191

193192
'render: 1',
194-
__DEV__ && 'render: 1', // replay
193+
__DEV__ && 'render: 1', // replay due to invokeGuardedCallback
195194

196195
// Retry one more time before handling error
197196
'render: 1',
198-
__DEV__ && 'render: 1', // replay
197+
__DEV__ && 'render: 1', // replay due to invokeGuardedCallback
199198

200199
'componentWillUnmount: 0',
201200
].filter(Boolean),

packages/react-reconciler/src/__tests__/ReactNewContext-test.internal.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,9 +1103,7 @@ describe('ReactNewContext', () => {
11031103

11041104
// Render the provider again using a different renderer
11051105
ReactNoop.render(<App value={1} />);
1106-
expect(Scheduler).toFlushAndYield(
1107-
__DEV__ ? ['Foo', 'Foo', 'Foo', 'Foo'] : ['Foo', 'Foo'],
1108-
);
1106+
expect(Scheduler).toFlushAndYield(['Foo', 'Foo']);
11091107

11101108
if (__DEV__) {
11111109
expect(console.error.calls.argsFor(0)[0]).toContain(

packages/react/src/__tests__/ReactProfilerDevToolsIntegration-test.internal.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ describe('ReactProfiler DevTools integration', () => {
188188

189189
// Commit something
190190
root.update(<Text text="A" />);
191-
expect(Scheduler).toFlushAndYield(__DEV__ ? ['A', 'A'] : ['A']);
191+
expect(Scheduler).toFlushAndYield(['A']);
192192
expect(root).toMatchRenderedOutput('A');
193193

194194
// Advance time by many seconds, larger than the default expiration time
@@ -200,7 +200,7 @@ describe('ReactProfiler DevTools integration', () => {
200200
// Update B should not instantly expire.
201201
expect(Scheduler).toFlushExpired([]);
202202

203-
expect(Scheduler).toFlushAndYield(__DEV__ ? ['B', 'B'] : ['B']);
203+
expect(Scheduler).toFlushAndYield(['B']);
204204
expect(root).toMatchRenderedOutput('B');
205205
});
206206
});

packages/scheduler/src/forks/SchedulerHostConfig.mock.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,12 @@ export function unstable_flushAll(): void {
192192
}
193193

194194
export function unstable_yieldValue(value: mixed): void {
195+
// eslint-disable-next-line react-internal/no-production-logging
196+
if (console.log.name === 'disabledLog') {
197+
// If console.log has been patched, we assume we're in render
198+
// replaying and we ignore any values yielding in the second pass.
199+
return;
200+
}
195201
if (yieldedValues === null) {
196202
yieldedValues = [value];
197203
} else {
@@ -200,6 +206,12 @@ export function unstable_yieldValue(value: mixed): void {
200206
}
201207

202208
export function unstable_advanceTime(ms: number) {
209+
// eslint-disable-next-line react-internal/no-production-logging
210+
if (console.log.name === 'disabledLog') {
211+
// If console.log has been patched, we assume we're in render
212+
// replaying and we ignore any time advancing in the second pass.
213+
return;
214+
}
203215
currentTime += ms;
204216
if (scheduledTimeout !== null && timeoutTime <= currentTime) {
205217
scheduledTimeout(currentTime);

0 commit comments

Comments
 (0)