dadc606419
Part of #18218 - Adds `fs.lutimes` and `fs.lutimesSync` to our node polyfills. To do this I added methods to the `FileSystem` trait + ops to expose the functionality to JS. - Exports `fs._toUnixTimestamp`. Node exposes an internal util `toUnixTimestamp` from the fs module to be used by unit tests (so we need it for the unit test to pass unmodified). It's weird because it's only supposed to be used internally but it's still publicly accessible - Matches up error handling and timestamp handling for fs.futimes and fs.utimes with node - Enables the node_compat utimes test - this exercises futimes, lutimes, and utimes. |
||
---|---|---|
.. | ||
suite@d12a68fc49 | ||
.gitignore | ||
deno.json | ||
README.md | ||
setup.ts | ||
TODO.md |
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.
//tests/node_compat/runner/setup.ts
- This script sets up the Node.js compat tests.
//tests/node_compat/runner/versions/
- Node.js source tarballs and extracted test cases are stored here.
//tests/node_compat/config.jsonc
- This json file stores the settings about which Node.js compat test to run with Deno.
//tests/node_compat/test
- The actual test cases are stored here.
Steps to add new test cases from Node.js test cases
- Update
tests
property of//tests/node_compat/config.jsonc
. For example, if you want to addtest/parallel/test-foo.js
from Node.js test cases, then addtest-foo.js
entry intests.parallel
array property inconfig.jsonc
- Run
deno task setup
intests/node_compat/runner
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 tests/node_compat/runner
dir). For example, if
you want to run all test files which contains buffer
in filename you can use
the command:
/path/to/deno/tests/node_compat/runner
$ deno task test buffer