deno/tests/node_compat
Daniel Osvaldo Rahmanto ebcb2fa294
fix(ext/node): fs.statfsSync and fs.statfs compatibility (#30662)
Towards #29972

- Converts the polyfill to typescript.
- Implement async op.
- Allows `Buffer` type path.
- Allows
[parallel/test-fs-statfs.js](https://github.com/nodejs/node/blob/v24.2.0/test/parallel/test-fs-statfs.js)
test to pass.
2025-09-18 16:03:30 +02:00
..
runner chore(test): preserve node test fixtures line endings (#30488) 2025-08-22 10:38:06 -04:00
.gitignore chore: create monthly summary of node test runs (#28778) 2025-04-08 12:12:27 +09:00
add_day_summary_to_month_summary.ts chore: post node test results to slack (#28795) 2025-04-08 23:14:38 +09:00
common.ts chore(test): add reason field to node compat test config (#30469) 2025-09-01 23:44:11 +02:00
config.toml fix(ext/node): fs.statfsSync and fs.statfs compatibility (#30662) 2025-09-18 16:03:30 +02:00
deno.json chore: update to std@2024.07.19 (#24715) 2024-07-25 15:30:28 +10:00
README.md chore(test): add reason field to node compat test config (#30469) 2025-09-01 23:44:11 +02:00
run_all_test_unmodified.ts chore(test): add reason field to node compat test config (#30469) 2025-09-01 23:44:11 +02:00
slack.ts ci: update Slack bot action (#29333) 2025-05-16 15:00:10 +02:00
test.ts chore(test): add reason field to node compat test config (#30469) 2025-09-01 23:44:11 +02:00
test_runner.rs chore(ext/node): re-enable node compat test (#29936) 2025-06-28 14:17:10 +02:00

Node compat test directory

This directory includes the tools for running Node.js test cases directly in Deno.

  • ./runner/suite/ - vendored Node.js test cases (git submodule at https://github.com/denoland/node_test)
  • ./config.toml - has the list of passing Node.js test cases
  • ./test.ts - The script entrypoint of node compat test.

If you run single node.js test case, use the command:

./tools/node_compat_tests.js --filter <name of test file>

Configuration file

The config.toml specifies which tests should pass in Deno and includes platform-specific and behavioral settings for each test.

Options

Each test entry can include the following optional configuration properties:

  • flaky (boolean): Marks a test as flaky. It will be run at most 3 times before being considered failed.

  • windows (boolean): Controls whether the test should run on Windows. Defaults to true.

  • darwin (boolean): Controls whether the test should run on macOS. Defaults to true.

  • linux (boolean): Controls whether the test should run on Linux. Defaults to true.

  • reason (string): Optional explanation for why a test is marked as skipped.

Examples

# Should pass on all platforms
"parallel/test-foo.js" = {}

# Test marked as flaky
"parallel/test-bar.js" = { flaky = true }

# Test skipped on all platforms with explanation
"parallel/test-baz.js" = { darwin = false, linux = false, windows = false, reason = "some reason" }

# Test skipped only on Windows
"parallel/test-qux.js" = { windows = false }

Add test case entry to CI check

If you fixed some Node.js compabitility and some test cases started passing, then add those cases to config.toml. The items listed in there are checked in CI check.

Daily test viewer

To see the latest test results of all test cases, visit this site https://node-test-viewer.deno.dev/results/latest