Skip to content

Conversation

@joyeecheung
Copy link
Member

@joyeecheung joyeecheung commented Aug 8, 2025

This test previously squeezed 70+ test cases into one single file and has been constantly crashing on Windows with exit code 3221226505 and no stack trace. As it is already marked as flaky there is no way to understand which test case is failing and the Windows CI was constantly orange. This patch splits the test cases into different files so it's easier to find out which case is exactly failing and to be skipped.

Refs: #56794

This test previously squeezed 70+ test cases into one single file
and has been constantly crashing on Windows with exit code
3221226505 and no stack trace. As it is already marked as flaky
there is no way to understand which test case is failing and
the Windows CI was constantly orange. This patch splits the
test cases into different files so it's easier to find out
which case is exactly failing and to be skipped.
@joyeecheung joyeecheung marked this pull request as ready for review August 8, 2025 16:01
@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. test Issues and PRs related to the tests. labels Aug 8, 2025
@joyeecheung
Copy link
Member Author

Windows CI to figure out who is crashing: https://ci.nodejs.org/job/node-test-commit-windows-fanned/72339/

@codecov
Copy link

codecov bot commented Aug 8, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.90%. Comparing base (f3adc11) to head (83d3b6b).
⚠️ Report is 12 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #59408      +/-   ##
==========================================
+ Coverage   89.79%   89.90%   +0.11%     
==========================================
  Files         653      655       +2     
  Lines      192394   192829     +435     
  Branches    37650    37793     +143     
==========================================
+ Hits       172753   173369     +616     
+ Misses      12270    12013     -257     
- Partials     7371     7447      +76     

see 59 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@himself65 himself65 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 9, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 9, 2025
@nodejs-github-bot
Copy link
Collaborator

@joyeecheung
Copy link
Member Author

joyeecheung commented Aug 9, 2025

7 split test cases have failed on Windows. I noticed that there have been quite a lot of changes to fs.cpSync even after the test has been marked as flaky #56799 - for the purpose of this PR, I will just mark them as flaky. But it deserves more investigation because the tests could've already been broken by the recent changes and they were just ignored due to the flaky status. cc @dario-piotrowicz

See failures
not ok 339 parallel/test-fs-cp-sync-error-on-exist
  ---
  duration_ms: 267.00200
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/modules/run_main:107
        triggerUncaughtException(
        ^
    
    AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
    + actual - expected
    
      Comparison {
    +   code: ''
    -   code: 'ERR_FS_CP_EEXIST'
      }
    
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-error-on-exist.mjs:14:8
        at ModuleJob.run (node:internal/modules/esm/module_job:371:25)
        at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:669:26)
        at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
      generatedMessage: true,
      code: 'ERR_ASSERTION',
      actual: Error: , The file exists. '\\?\c:\workspace\node-test-binary-windows-js-suites\node\test\.tmp.339\copy_%1\a\b'
          at copyDir (node:internal/fs/cp/cp-sync:145:22)
          at onDir (node:internal/fs/cp/cp-sync:137:10)
          at getStats (node:internal/fs/cp/cp-sync:68:12)
          at cpSyncFn (node:internal/fs/cp/cp-sync:58:10)
          at cpSync (node:fs:3123:3)
          at assert.throws.code (file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-error-on-exist.mjs:15:9)
          at getActual (node:assert:584:5)
          at ok.throws (node:assert:732:24)
          at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-error-on-exist.mjs:14:8
          at ModuleJob.run (node:internal/modules/esm/module_job:371:25) {
        errno: 80,
        code: '',
        path: '\\\\?\\c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.339\\copy_%1\\a\\b',
        syscall: 'cp'
      },
      expected: { code: 'ERR_FS_CP_EEXIST' },
      operator: 'throws',
      diff: 'simple'
    }
    
    Node.js v25.0.0-pre
  ...

not ok 337 parallel/test-fs-cp-sync-copy-symlink-not-pointing-to-folder
  ---
  duration_ms: 154.00100
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/modules/run_main:107
        triggerUncaughtException(
        ^
    
    AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
    + actual - expected
    
    + 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.337\\copy_%1'
    - 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.337\\copy_%1'
    
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-copy-symlink-not-pointing-to-folder.mjs:19:8
        at ModuleJob.run (node:internal/modules/esm/module_job:371:25)
        at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:669:26)
        at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
      generatedMessage: true,
      code: 'ERR_ASSERTION',
      actual: 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.337\\copy_%1',
      expected: 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.337\\copy_%1',
      operator: 'strictEqual',
      diff: 'simple'
    }
    
    Node.js v25.0.0-pre
  ...

not ok 343 parallel/test-fs-cp-sync-symlink-points-to-dest-error
  ---
  duration_ms: 172.00200
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/modules/run_main:107
        triggerUncaughtException(
        ^
    
    AssertionError [ERR_ASSERTION]: Missing expected exception.
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-symlink-points-to-dest-error.mjs:17:8
        at ModuleJob.run (node:internal/modules/esm/module_job:371:25)
        at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:669:26)
        at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
      generatedMessage: false,
      code: 'ERR_ASSERTION',
      actual: undefined,
      expected: { code: 'ERR_FS_CP_EINVAL' },
      operator: 'throws',
      diff: 'simple'
    }
    
    Node.js v25.0.0-pre
  ...

not ok 344 parallel/test-fs-cp-sync-resolve-relative-symlinks-false
  ---
  duration_ms: 184.00600
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/modules/run_main:107
        triggerUncaughtException(
        ^
    
    AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
    + actual - expected
    
    + 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.343\\copy_%1\\foo.js'
    - 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.343\\copy_%1\\foo.js'
    
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-resolve-relative-symlinks-false.mjs:21:8
        at ModuleJob.run (node:internal/modules/esm/module_job:371:25)
        at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:669:26)
        at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
      generatedMessage: true,
      code: 'ERR_ASSERTION',
      actual: 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.343\\copy_%1\\foo.js',
      expected: 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.343\\copy_%1\\foo.js',
      operator: 'strictEqual',
      diff: 'simple'
    }
    
    Node.js v25.0.0-pre
  ...

not ok 335 parallel/test-fs-cp-async-symlink-points-to-dest
  ---
  duration_ms: 197.00000
  severity: fail
  exitcode: 1
  stack: |-
    file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-async-symlink-points-to-dest.mjs:19
      assert.strictEqual(err.code, 'ERR_FS_CP_EINVAL');
                             ^
    
    TypeError: Cannot read properties of null (reading 'code')
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-async-symlink-points-to-dest.mjs:19:26
        at c:\workspace\node-test-binary-windows-js-suites\node\test\common\index.js:437:15
        at node:fs:180:23
        at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
    
    Node.js v25.0.0-pre
  ...

not ok 346 parallel/test-fs-cp-sync-unicode-folder-names
  ---
  duration_ms: 271.00300
  severity: fail
  exitcode: 3221226505
  stack: |-
  ...

not ok 343 parallel/test-fs-cp-sync-resolve-relative-symlinks-default
  ---
  duration_ms: 173.00700
  severity: fail
  exitcode: 1
  stack: |-
    node:internal/modules/run_main:107
        triggerUncaughtException(
        ^
    
    AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
    + actual - expected
    
    + 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.342\\copy_%1\\foo.js'
    - 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.342\\copy_%1\\foo.js'
    
        at file:///c:/workspace/node-test-binary-windows-js-suites/node/test/parallel/test-fs-cp-sync-resolve-relative-symlinks-default.mjs:21:8
        at ModuleJob.run (node:internal/modules/esm/module_job:371:25)
        at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:669:26)
        at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
      generatedMessage: true,
      code: 'ERR_ASSERTION',
      actual: 'C:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.342\\copy_%1\\foo.js',
      expected: 'c:\\workspace\\node-test-binary-windows-js-suites\\node\\test\\.tmp.342\\copy_%1\\foo.js',
      operator: 'strictEqual',
      diff: 'simple'
    }
    
    Node.js v25.0.0-pre
  ...

@nodejs-github-bot
Copy link
Collaborator

@joyeecheung
Copy link
Member Author

joyeecheung commented Aug 9, 2025

FWIW in the 7 failed test cases, I can reproduce the 3 involving errors locally, I think they are just test cases being broken by recent changes without being noticed. The ones related to readlinkSync not returning an expected result (drive letters with different case) might have been breakages from readlink and specific to the setup of the CI machines. I don't know what's going on with the crashes with exist code 3221226505 but I cannot reproduce them.

@jasnell
Copy link
Member

jasnell commented Aug 9, 2025

Thank you for doing this!!! Sorely needed and it's been on my todo list for a while but just hadn't been able to find time. One suggestion that hopefully might make this easier... let's split this into two PRs... One PR containing all of the separated out tests that are not problematic at all, that we can hopefully get landed easily, and another PR that just separates the tests that are known to be problematic. That should (hopefully) make it at least a little bit easier to focus on just the tests that highlight problems.

@jasnell
Copy link
Member

jasnell commented Aug 9, 2025

@joyeecheung ... one thing to point out on some of the cp-sync errors. I noticed that in manual testing that at least a couple of the error messages themselves were incorrect due to argument order on the error construction being reversed but the tests were missing it entirely because the tests weren't looking at the error messages, only the codes. It was specifically cpSync that I saw this on but, again, due to just pure lack of available time, I haven't had a moment to correct it yet.

@joyeecheung
Copy link
Member Author

joyeecheung commented Aug 9, 2025

One PR containing all of the separated out tests that are not problematic at all, that we can hopefully get landed easily, and another PR that just separates the tests that are known to be problematic.

Are you referring to one PR or one file? I don't think it's wise to continue keeping them in one file, that just repeats the mistake of keeping them in a monolith. This PR just splits all of them and marked the ones that have failed as flaky, if it's good enough for the Windows CI to not be red we can just go from there - people who have time to fix the individual flakes can just start fixing them in follow up PRs. If there are any more failures we can just mark individual test cases as flaky without disabling others. But if we keep them in one file, there will be a lot more churn than just adding an entry to the status file if there are still flakes in the monolith.

@nodejs-github-bot
Copy link
Collaborator

@jasnell
Copy link
Member

jasnell commented Aug 9, 2025

Are you referring to one PR or one file?...

PR, not file. It's awesome that you're splitting this into separate files. Let's take all the separate tests that pass with no problem and separate them out into separate files in one PR, then take all the ones that don't pass for whatever reason, or have bugs, and split those out into a separate PR. That way we can more easily ignore the ones that don't have any issues and we can more easily focus on the problems in the bad ones.

@joyeecheung
Copy link
Member Author

joyeecheung commented Aug 9, 2025

Let's take all the separate tests that pass with no problem and separate them out into separate files in one PR, then take all the ones that don't pass for whatever reason, or have bugs, and split those out into a separate PR.

Isn't that effectively: let's merge the failing tests that's already split here back into one file again and continue to not have visibility into failure reasons of all of them, only to split them in a later PR?

In any case, the CI is already orange in this one, the problematic test cases are already captured in the status file and the passing ones are left alone, so I think it has already arrived at the state after the two proposed separate PRs. Unless you insist that this PR must merge the split flakes back into one file, so that someone can open a follow up PR to split them again (I can't see what's the benefit of that?) I think this is good to land?

@joyeecheung
Copy link
Member Author

From what I can tell, @jasnell 's suggestion is non-blocking, that was just a suggestion to make it easier to land, but then this PR is already ready to land, and splitting it up would just make things more difficult and stalling it (I don't think I'll have time to merge the already split tests back into one file only to split them up again in another PR). Unless I heard otherwise, going to land it later today to make the CI output of the flakes less useless.

@joyeecheung
Copy link
Member Author

Looks like this needs a re-approval after the last push. @panva @lpinca @daeyeon @himself65 can you take a look again? Thanks

@panva panva added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Aug 10, 2025
@joyeecheung joyeecheung added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. labels Aug 10, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 10, 2025
@nodejs-github-bot nodejs-github-bot merged commit aac7925 into nodejs:main Aug 10, 2025
64 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in aac7925

@dario-piotrowicz
Copy link
Member

@joyeecheung ... one thing to point out on some of the cp-sync errors. I noticed that in manual testing that at least a couple of the error messages themselves were incorrect due to argument order on the error construction being reversed but the tests were missing it entirely because the tests weren't looking at the error messages, only the codes. It was specifically cpSync that I saw this on but, again, due to just pure lack of available time, I haven't had a moment to correct it yet.

When I made changes in cpSync I did manually test the error cases as well (and I also didn't see the tests failing either, probably due to the flakiness), sorry if I missed something 😓

anyways the changes I've made in cpSync (as well as those introduced by @anonrig I believe) are all perf related and should be simple to revert. That could be good also for #58869. What do you think? Would that maybe be a good path forward? (as in, moving back things to the js layer, consolidate cp/cpSync so that they share as much logic as possible and afterwords retry to move things in the C++ layer (with a better understanding and awareness of the various issues that surfaces since))

@joyeecheung
Copy link
Member Author

joyeecheung commented Aug 11, 2025

I did manually test the error cases as well

FWIW I am not trying to blame anyone, if anything I'd blame the test monoliths. I think it may have gone unnoticed if you did not run it on Windows? Because the failures are Windows-specific. If the tests were split up you'd notice individual failures in the Windows CI. But being in a monolith marked as flaky and if it's just crashing without stack trace, you won't be able to figure out anything unless you do a splitting like what this PR does first. I was raising the possibility because the monolith was marked as flaky 6 months ago so theoretically people would still have noticed breakages before that. But after that unless you go check the orange platforms you wouldn't notice it was failing.

What do you think? Would that maybe be a good path forward?

I think it's been long enough that reverting may become complicated. But if the revert comes back with no source conflicts it would be better to revert - generally I prefer "revert ASAP, fix and reland later", which is how Chromium/V8 manages to keep their CI mostly green. If not, I'd suggest fixing the 3 failures around error reporting mentioned above to at least make the CI less orange (or I think they are actual bugs because they reproduce consistently on Windows locally).

RafaelGSS pushed a commit that referenced this pull request Aug 11, 2025
This test previously squeezed 70+ test cases into one single file
and has been constantly crashing on Windows with exit code
3221226505 and no stack trace. As it is already marked as flaky
there is no way to understand which test case is failing and
the Windows CI was constantly orange. This patch splits the
test cases into different files so it's easier to find out
which case is exactly failing and to be skipped.

PR-URL: #59408
Refs: #56794
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Zeyu "Alex" Yang <[email protected]>
Reviewed-By: Daeyeon Jeong <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
RafaelGSS pushed a commit that referenced this pull request Aug 12, 2025
This test previously squeezed 70+ test cases into one single file
and has been constantly crashing on Windows with exit code
3221226505 and no stack trace. As it is already marked as flaky
there is no way to understand which test case is failing and
the Windows CI was constantly orange. This patch splits the
test cases into different files so it's easier to find out
which case is exactly failing and to be skipped.

PR-URL: #59408
Refs: #56794
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Zeyu "Alex" Yang <[email protected]>
Reviewed-By: Daeyeon Jeong <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
meteorqz6 pushed a commit to meteorqz6/node that referenced this pull request Aug 15, 2025
This test previously squeezed 70+ test cases into one single file
and has been constantly crashing on Windows with exit code
3221226505 and no stack trace. As it is already marked as flaky
there is no way to understand which test case is failing and
the Windows CI was constantly orange. This patch splits the
test cases into different files so it's easier to find out
which case is exactly failing and to be skipped.

PR-URL: nodejs#59408
Refs: nodejs#56794
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Zeyu "Alex" Yang <[email protected]>
Reviewed-By: Daeyeon Jeong <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 16, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `24.5.0` -> `24.6.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>nodejs/node (node)</summary>

### [`v24.6.0`](https://github.com/nodejs/node/releases/tag/v24.6.0): 2025-08-14, Version 24.6.0 (Current), @&#8203;RafaelGSS

[Compare Source](nodejs/node@v24.5.0...v24.6.0)

##### Notable Changes

- \[[`471fe712b3`](nodejs/node@471fe712b3)] - **(SEMVER-MINOR)** **cli**: add NODE\_USE\_SYSTEM\_CA=1 (Joyee Cheung) [#&#8203;59276](nodejs/node#59276)
- \[[`38aedfbf73`](nodejs/node@38aedfbf73)] - **(SEMVER-MINOR)** **crypto**: support ML-DSA KeyObject, sign, and verify (Filip Skokan) [#&#8203;59259](nodejs/node#59259)
- \[[`201304537e`](nodejs/node@201304537e)] - **(SEMVER-MINOR)** **zlib**: add dictionary support to zstdCompress and zstdDecompress (lluisemper) [#&#8203;59240](nodejs/node#59240)
- \[[`e79c93a5d0`](nodejs/node@e79c93a5d0)] - **(SEMVER-MINOR)** **http**: add server.keepAliveTimeoutBuffer option (Haram Jeong) [#&#8203;59243](nodejs/node#59243)
- \[[`c144d69efc`](nodejs/node@c144d69efc)] - **lib**: docs deprecate \_http\_\* (Sebastian Beltran) [#&#8203;59293](nodejs/node#59293)
- \[[`aeb4de55a7`](nodejs/node@aeb4de55a7)] - **(SEMVER-MINOR)** **fs**: port SonicBoom module to fs module as Utf8Stream (James M Snell) [#&#8203;58897](nodejs/node#58897)

##### Commits

- \[[`f7484575ff`](nodejs/node@f7484575ff)] - **assert**: change utils to use index instead of for...of (방진혁) [#&#8203;59278](nodejs/node#59278)
- \[[`269cd16185`](nodejs/node@269cd16185)] - **benchmark**: remove deprecated \_extend from benchmark (Rafael Gonzaga) [#&#8203;59228](nodejs/node#59228)
- \[[`848e49c20b`](nodejs/node@848e49c20b)] - **benchmark**: add fs warmup to writefile-promises (Bruno Rodrigues) [#&#8203;59215](nodejs/node#59215)
- \[[`8c609be1b1`](nodejs/node@8c609be1b1)] - **benchmark**: add calibrate-n script (Rafael Gonzaga) [#&#8203;59186](nodejs/node#59186)
- \[[`6a3bf772d8`](nodejs/node@6a3bf772d8)] - **build**: fix node\_use\_sqlite for GN builds (Shelley Vohr) [#&#8203;59017](nodejs/node#59017)
- \[[`471fe712b3`](nodejs/node@471fe712b3)] - **(SEMVER-MINOR)** **cli**: add NODE\_USE\_SYSTEM\_CA=1 (Joyee Cheung) [#&#8203;59276](nodejs/node#59276)
- \[[`38aedfbf73`](nodejs/node@38aedfbf73)] - **(SEMVER-MINOR)** **crypto**: support ML-DSA KeyObject, sign, and verify (Filip Skokan) [#&#8203;59259](nodejs/node#59259)
- \[[`a312e706cf`](nodejs/node@a312e706cf)] - **crypto**: prepare webcrypto key import/export for modern algorithms (Filip Skokan) [#&#8203;59284](nodejs/node#59284)
- \[[`3a7c2c3a47`](nodejs/node@3a7c2c3a47)] - **deps**: update ada to 3.2.7 (Node.js GitHub Bot) [#&#8203;59336](nodejs/node#59336)
- \[[`8d9ceeaf6a`](nodejs/node@8d9ceeaf6a)] - **deps**: update archs files for openssl-3.5.2 (Node.js GitHub Bot) [#&#8203;59371](nodejs/node#59371)
- \[[`33b06df354`](nodejs/node@33b06df354)] - **deps**: upgrade openssl sources to openssl-3.5.2 (Node.js GitHub Bot) [#&#8203;59371](nodejs/node#59371)
- \[[`fa70f1af77`](nodejs/node@fa70f1af77)] - **deps**: support madvise(3C) across ALL illumos revisions (Dan McDonald) [#&#8203;58237](nodejs/node#58237)
- \[[`f834a6be59`](nodejs/node@f834a6be59)] - **deps**: update undici to 7.13.0 (Node.js GitHub Bot) [#&#8203;59338](nodejs/node#59338)
- \[[`db2417487e`](nodejs/node@db2417487e)] - **deps**: update sqlite to 3.50.4 (Node.js GitHub Bot) [#&#8203;59337](nodejs/node#59337)
- \[[`41978adb08`](nodejs/node@41978adb08)] - **deps**: V8: backport [`493cb53`](nodejs/node@493cb53691be) (Chengzhong Wu) [#&#8203;59238](nodejs/node#59238)
- \[[`05667991ca`](nodejs/node@05667991ca)] - **deps**: V8: backport [`1c3e018`](nodejs/node@1c3e018e7d48) (Renegade334) [#&#8203;58818](nodejs/node#58818)
- \[[`fd61588bb4`](nodejs/node@fd61588bb4)] - **doc**: rename x509.extKeyUsage to x509.keyUsage (Filip Skokan) [#&#8203;59332](nodejs/node#59332)
- \[[`a271ae4360`](nodejs/node@a271ae4360)] - **doc**: fix Pbkdf2Params hash attribute heading (Filip Skokan) [#&#8203;59395](nodejs/node#59395)
- \[[`72cfff165b`](nodejs/node@72cfff165b)] - **doc**: fix missing reference links for server.keepAliveTimeoutBuffer (Lee Jiho) [#&#8203;59356](nodejs/node#59356)
- \[[`8341916772`](nodejs/node@8341916772)] - **doc**: fix grammar in global dispatcher usage (Eng Zer Jun) [#&#8203;59344](nodejs/node#59344)
- \[[`e3e489706b`](nodejs/node@e3e489706b)] - **doc**: run license-builder (github-actions\[bot]) [#&#8203;59343](nodejs/node#59343)
- \[[`46527e8cea`](nodejs/node@46527e8cea)] - **doc**: correct orthography `eg.` → `e.g.` (Jacob Smith) [#&#8203;59329](nodejs/node#59329)
- \[[`d140c3713e`](nodejs/node@d140c3713e)] - **doc**: clarify the need of compiler compatible with c++20 (Rafael Gonzaga) [#&#8203;59297](nodejs/node#59297)
- \[[`95e9cabf9d`](nodejs/node@95e9cabf9d)] - **doc**: clarify release candidate stability index (Filip Skokan) [#&#8203;59295](nodejs/node#59295)
- \[[`a056dd36d2`](nodejs/node@a056dd36d2)] - **doc**: add WDYT to glossary (btea) [#&#8203;59280](nodejs/node#59280)
- \[[`1e2c52f5c4`](nodejs/node@1e2c52f5c4)] - **doc**: add manpage entry for --use-system-ca (Joyee Cheung) [#&#8203;59273](nodejs/node#59273)
- \[[`31a46fdeb4`](nodejs/node@31a46fdeb4)] - **doc**: add path.join and path.normalize clarification (Rafael Gonzaga) [#&#8203;59262](nodejs/node#59262)
- \[[`cff3725ff9`](nodejs/node@cff3725ff9)] - **doc**: fix typo in `test/common/README.md` (Yoo) [#&#8203;59180](nodejs/node#59180)
- \[[`31a9283591`](nodejs/node@31a9283591)] - **doc**: add note on process memoryUsage (fengmk2) [#&#8203;59026](nodejs/node#59026)
- \[[`5a98bff6b8`](nodejs/node@5a98bff6b8)] - **doc**: format safely for `doc-kit` (Aviv Keller) [#&#8203;59229](nodejs/node#59229)
- \[[`95b8b7ea5c`](nodejs/node@95b8b7ea5c)] - **domain**: remove deprecated API call (Alex Yang) [#&#8203;59339](nodejs/node#59339)
- \[[`2990f178bd`](nodejs/node@2990f178bd)] - **fs**: fix glob TypeError on restricted dirs (Sylphy-0xd3ac) [#&#8203;58674](nodejs/node#58674)
- \[[`e2fb4caf9c`](nodejs/node@e2fb4caf9c)] - **fs**: correct error message when FileHandle is transferred (Alex Yang) [#&#8203;59156](nodejs/node#59156)
- \[[`aeb4de55a7`](nodejs/node@aeb4de55a7)] - **(SEMVER-MINOR)** **fs**: port SonicBoom module to fs module as Utf8Stream (James M Snell) [#&#8203;58897](nodejs/node#58897)
- \[[`e79c93a5d0`](nodejs/node@e79c93a5d0)] - **(SEMVER-MINOR)** **http**: add server.keepAliveTimeoutBuffer option (Haram Jeong) [#&#8203;59243](nodejs/node#59243)
- \[[`0fb005a53f`](nodejs/node@0fb005a53f)] - **http2**: set Http2Stream#sentHeaders for raw headers (Darshan Sen) [#&#8203;59244](nodejs/node#59244)
- \[[`e055539604`](nodejs/node@e055539604)] - **lib**: add trace-sigint APIs (theanarkh) [#&#8203;59040](nodejs/node#59040)
- \[[`d2183d860a`](nodejs/node@d2183d860a)] - **lib**: optimize writable stream buffer clearing (Yoo) [#&#8203;59406](nodejs/node#59406)
- \[[`47543a7e17`](nodejs/node@47543a7e17)] - **lib**: handle windows reserved device names on UNC (Rafael Gonzaga) [#&#8203;59286](nodejs/node#59286)
- \[[`c6911f0717`](nodejs/node@c6911f0717)] - **lib**: do not modify prototype deprecated asyncResource (RafaelGSS) [#&#8203;59195](nodejs/node#59195)
- \[[`3c88b769bb`](nodejs/node@3c88b769bb)] - **lib**: restructure assert to become a class (Miguel Marcondes Filho) [#&#8203;58253](nodejs/node#58253)
- \[[`e91b54df59`](nodejs/node@e91b54df59)] - **lib**: handle superscript variants on windows device (Rafael Gonzaga) [#&#8203;59261](nodejs/node#59261)
- \[[`4ee467905d`](nodejs/node@4ee467905d)] - **lib**: use validateString (hotpineapple) [#&#8203;59296](nodejs/node#59296)
- \[[`c144d69efc`](nodejs/node@c144d69efc)] - **lib**: docs deprecate \_http\_\* (Sebastian Beltran) [#&#8203;59293](nodejs/node#59293)
- \[[`c89b67e681`](nodejs/node@c89b67e681)] - **lib**: add type names in source mapped stack traces (Chengzhong Wu) [#&#8203;58976](nodejs/node#58976)
- \[[`5b2363be8d`](nodejs/node@5b2363be8d)] - **lib**: prefer AsyncIteratorPrototype primordial (René) [#&#8203;59097](nodejs/node#59097)
- \[[`41b4f4d694`](nodejs/node@41b4f4d694)] - **meta**: clarify pr objection process further (James M Snell) [#&#8203;59096](nodejs/node#59096)
- \[[`0eb5962f1e`](nodejs/node@0eb5962f1e)] - **meta**: add mailmap entry for aditi-1400 (Aditi) [#&#8203;59316](nodejs/node#59316)
- \[[`a2b72c2304`](nodejs/node@a2b72c2304)] - **meta**: add tsc and build team as codeowners building.md (Rafael Gonzaga) [#&#8203;59298](nodejs/node#59298)
- \[[`d69f3ee1e0`](nodejs/node@d69f3ee1e0)] - **meta**: add nodejs/path to path files (Rafael Gonzaga) [#&#8203;59289](nodejs/node#59289)
- \[[`1e37eab865`](nodejs/node@1e37eab865)] - **node-api**: reword "implementation in an alternative VM" as implementable (Chengzhong Wu) [#&#8203;59036](nodejs/node#59036)
- \[[`64add6302a`](nodejs/node@64add6302a)] - **src**: use simdjson to parse SEA configuration (Joyee Cheung) [#&#8203;59323](nodejs/node#59323)
- \[[`e9c6636585`](nodejs/node@e9c6636585)] - **src**: mark realm leaf classes final (Anna Henningsen) [#&#8203;59355](nodejs/node#59355)
- \[[`42ef8147d1`](nodejs/node@42ef8147d1)] - **src**: warn about FastOneByteString invalidation (James M Snell) [#&#8203;59275](nodejs/node#59275)
- \[[`8686b8037a`](nodejs/node@8686b8037a)] - **src**: remove unused DSAKeyExportJob (Filip Skokan) [#&#8203;59291](nodejs/node#59291)
- \[[`1e5f632666`](nodejs/node@1e5f632666)] - **src**: use C++20 `contains()` method (iknoom) [#&#8203;59304](nodejs/node#59304)
- \[[`22d4683cfe`](nodejs/node@22d4683cfe)] - **src**: added CHECK\_NOT\_NULL check for multiple eq\_wrap\_async (F3lixTheCat) [#&#8203;59267](nodejs/node#59267)
- \[[`6a47ff4943`](nodejs/node@6a47ff4943)] - **src**: clear all linked module caches once instantiated (Chengzhong Wu) [#&#8203;59117](nodejs/node#59117)
- \[[`33728cb4ca`](nodejs/node@33728cb4ca)] - **src**: add nullptr checks in `StreamPipe::New` (Burkov Egor) [#&#8203;57613](nodejs/node#57613)
- \[[`4a907bdad1`](nodejs/node@4a907bdad1)] - **src**: add percentage support to --max-old-space-size (Asaf Federman) [#&#8203;59082](nodejs/node#59082)
- \[[`7c189d4f55`](nodejs/node@7c189d4f55)] - **test**: deflake sequential/test-tls-session-timeout (Joyee Cheung) [#&#8203;59423](nodejs/node#59423)
- \[[`fb0a6fb57f`](nodejs/node@fb0a6fb57f)] - **test**: exclude mock from coverage (Shima Ryuhei) [#&#8203;59348](nodejs/node#59348)
- \[[`7e10f95f13`](nodejs/node@7e10f95f13)] - **test**: split test-fs-cp.js (Joyee Cheung) [#&#8203;59408](nodejs/node#59408)
- \[[`41bcf5f659`](nodejs/node@41bcf5f659)] - **test**: update WPT resources,WebCryptoAPI,webstorage (Filip Skokan) [#&#8203;59311](nodejs/node#59311)
- \[[`f9f3dc94cb`](nodejs/node@f9f3dc94cb)] - **test**: add known issue test for fs.cpSync dereference bug (James M Snell) [#&#8203;58941](nodejs/node#58941)
- \[[`244d0c38a8`](nodejs/node@244d0c38a8)] - **test**: deflake stream-readable-to-web test (Ethan Arrowood) [#&#8203;58948](nodejs/node#58948)
- \[[`564e604a1a`](nodejs/node@564e604a1a)] - **test**: make test-inspector-network-resource sequential (Shima Ryuhei) [#&#8203;59104](nodejs/node#59104)
- \[[`7ab13b7477`](nodejs/node@7ab13b7477)] - **test**: don't use expose internals in test-http-outgoing-buffer.js (Meghan Denny) [#&#8203;59219](nodejs/node#59219)
- \[[`319df3859a`](nodejs/node@319df3859a)] - **test,crypto**: skip unsupported ciphers (Shelley Vohr) [#&#8203;59388](nodejs/node#59388)
- \[[`713c70c32a`](nodejs/node@713c70c32a)] - **test\_runner**: remove unused callee convertion (Alex Yang) [#&#8203;59221](nodejs/node#59221)
- \[[`e4ca30e115`](nodejs/node@e4ca30e115)] - **tools**: disable nullability-completeness warnings (Michaël Zasso) [#&#8203;59392](nodejs/node#59392)
- \[[`dab7f6b542`](nodejs/node@dab7f6b542)] - **tools**: check for std::vector\<v8::Local> in lint (Aditi) [#&#8203;58497](nodejs/node#58497)
- \[[`7b94982eb0`](nodejs/node@7b94982eb0)] - **tools**: allow selecting test subsystems with numbers in their names (Darshan Sen) [#&#8203;59242](nodejs/node#59242)
- \[[`16bbcd8881`](nodejs/node@16bbcd8881)] - **typings**: improve internal binding types (Nam Yooseong) [#&#8203;59351](nodejs/node#59351)
- \[[`76bc4d659b`](nodejs/node@76bc4d659b)] - **typings**: improve internal binding types (Michaël Zasso) [#&#8203;59176](nodejs/node#59176)
- \[[`eecd3272a6`](nodejs/node@eecd3272a6)] - **worker**: add name for worker (theanarkh) [#&#8203;59213](nodejs/node#59213)
- \[[`84c3513ce2`](nodejs/node@84c3513ce2)] - **worker**: implements nits in Web Locks code (Antoine du Hamel) [#&#8203;59270](nodejs/node#59270)
- \[[`bd68fbd753`](nodejs/node@bd68fbd753)] - **worker**: add cpuUsage for worker (theanarkh) [#&#8203;59177](nodejs/node#59177)
- \[[`201304537e`](nodejs/node@201304537e)] - **(SEMVER-MINOR)** **zlib**: add dictionary support to zstdCompress and zstdDecompress (lluisemper) [#&#8203;59240](nodejs/node#59240)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS43MS4wIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
@dario-piotrowicz
Copy link
Member

I did manually test the error cases as well

FWIW I am not trying to blame anyone, if anything I'd blame the test monoliths. I think it may have gone unnoticed if you did not run it on Windows? Because the failures are Windows-specific. If the tests were split up you'd notice individual failures in the Windows CI. But being in a monolith marked as flaky and if it's just crashing without stack trace, you won't be able to figure out anything unless you do a splitting like what this PR does first. I was raising the possibility because the monolith was marked as flaky 6 months ago so theoretically people would still have noticed breakages before that. But after that unless you go check the orange platforms you wouldn't notice it was failing.

What do you think? Would that maybe be a good path forward?

I think it's been long enough that reverting may become complicated. But if the revert comes back with no source conflicts it would be better to revert - generally I prefer "revert ASAP, fix and reland later", which is how Chromium/V8 manages to keep their CI mostly green. If not, I'd suggest fixing the 3 failures around error reporting mentioned above to at least make the CI less orange (or I think they are actual bugs because they reproduce consistently on Windows locally).

Thanks @joyeecheung (and so sorry for the late reply 🙇)

Thanks a lot for the understanding, anyways I will poke around to see if the revert is feasible 🙂🙏

nodejs-github-bot pushed a commit that referenced this pull request Aug 28, 2025
These tests are likely actual regressions introduced when the
monolithic test-fs-cp.mjs was marked as flaky and got ignored due
to the flaky status. They are now constantly failing the Windows
CI and require the CI to always be re-run on Windows when the job
is resumed. Simply skip them until someone fixes them, as there's
no point keep running these known regressions on Windows anymore.

PR-URL: #59637
Refs: #59636
Refs: #59408
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Stefan Stojanovic <[email protected]>
targos pushed a commit that referenced this pull request Sep 4, 2025
These tests are likely actual regressions introduced when the
monolithic test-fs-cp.mjs was marked as flaky and got ignored due
to the flaky status. They are now constantly failing the Windows
CI and require the CI to always be re-run on Windows when the job
is resumed. Simply skip them until someone fixes them, as there's
no point keep running these known regressions on Windows anymore.

PR-URL: #59637
Refs: #59636
Refs: #59408
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Stefan Stojanovic <[email protected]>
richardlau pushed a commit that referenced this pull request Sep 20, 2025
This test previously squeezed 70+ test cases into one single file
and has been constantly crashing on Windows with exit code
3221226505 and no stack trace. As it is already marked as flaky
there is no way to understand which test case is failing and
the Windows CI was constantly orange. This patch splits the
test cases into different files so it's easier to find out
which case is exactly failing and to be skipped.

PR-URL: #59408
Refs: #56794
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Zeyu "Alex" Yang <[email protected]>
Reviewed-By: Daeyeon Jeong <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
richardlau pushed a commit that referenced this pull request Sep 20, 2025
These tests are likely actual regressions introduced when the
monolithic test-fs-cp.mjs was marked as flaky and got ignored due
to the flaky status. They are now constantly failing the Windows
CI and require the CI to always be re-run on Windows when the job
is resumed. Simply skip them until someone fixes them, as there's
no point keep running these known regressions on Windows anymore.

PR-URL: #59637
Refs: #59636
Refs: #59408
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Stefan Stojanovic <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs that have at least one approval, no pending requests for changes, and a CI started. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. needs-ci PRs that need a full CI run. test Issues and PRs related to the tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants