1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00
denoland-deno/tools/node_compat
Matt Mastracci f5e46c9bf2
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests ->
tests, and updates of relative paths for files.

This is the first step towards aggregate all of the integration test
files under tests/, which will lead to a set of integration tests that
can run without the CLI binary being built.

While we could leave these tests under `cli`, it would require us to
keep a more complex directory structure for the various test runners. In
addition, we have a lot of complexity to ignore various test files in
the `cli` project itself (cargo publish exclusion rules, autotests =
false, etc).

And finally, the `tests/` folder will eventually house the `test_ffi`,
`test_napi` and other testing code, reducing the size of the root repo
directory.

For easier review, the extremely large and noisy "move" is in the first
commit (with no changes -- just a move), while the remainder of the
changes to actual files is in the second commit.
2024-02-10 20:22:13 +00:00
..
node@b114fad0ec chore: update node_compat test suites to v18.18.2 (#21328) 2023-11-25 11:35:36 +09:00
.gitignore chore(tools): restore node compat test setup script (#18290) 2023-03-21 22:38:07 +09:00
deno.json chore: use @test_util for node_compat tests (#22331) 2024-02-07 23:21:32 +00:00
README.md chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
setup.ts chore: move cli/tests/ -> tests/ (#22369) 2024-02-10 20:22:13 +00:00
TODO.md chore: move cli/tests/ -> tests/ (#22369) 2024-02-10 20:22:13 +00:00

Tools for Node.js compatibility work

We run native Node.js test cases against our Node.js compatibility feature.

This directory includes the tools for downloading, setting up, and updating the Node.js compat testing in Deno repository.

  • //tools/node_compat/setup.ts
    • This script sets up the Node.js compat tests.
  • //tools/node_compat/versions/
    • Node.js source tarballs and extracted test cases are stored here.
  • //cli/tests/node_compat/config.jsonc
    • This json file stores the settings about which Node.js compat test to run with Deno.
  • //cli/tests/node_compat/test
    • The actual test cases are stored here.

Steps to add new test cases from Node.js test cases

  1. Update tests property of //cli/tests/node_compat/config.jsonc. For example, if you want to add test/parallel/test-foo.js from Node.js test cases, then add test-foo.js entry in tests.parallel array property in config.jsonc
  2. Run deno task setup in tools/node_compat dir.

The above command copies the updated items from Node.js tarball to the Deno source tree.

Ideally Deno should pass the Node.js compat tests without modification, but if you need to modify it, then add that item in ignore property of config.jsonc. Then setup.ts doesn't overwrite the modified Node.js test cases anymore.

If the test needs to be ignored in particular platform, then add them in ${platform}Ignore property of config.jsonc

Run Node.js test cases

Node.js compat tests are run as part of cargo test command. If you want to run only the Node.js compat test cases you can use the command cargo test node_compat. If you want to run specific tests you can use the command deno task test (in tools/node_compat dir). For example, if you want to run all test files which contains buffer in filename you can use the command:

/path/to/deno/tools/node_compat
$ deno task test buffer