1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 15:24:46 -05:00
denoland-deno/tests/specs
David Sherret dd4570ed85
perf(compile): code cache (#26528)
Adds a lazily created code cache to `deno compile` by default.

The code cache is created on first run to a single file in the temp
directory and is only written once. After it's been written, the code
cache becomes read only on subsequent runs. Only the modules loaded
during startup are cached (dynamic imports are not code cached).

The code cache can be disabled by compiling with `--no-code-cache`.
2024-11-18 20:09:28 +00:00
..
add fix(add): better error message when adding package that only has pre-release versions (#26724) 2024-11-05 02:45:00 +00:00
bench fix(npm): ensure scoped package name is encoded in URLs (#26390) 2024-10-18 20:38:57 +02:00
bundle/removed BREAKING: remove deno bundle (#25339) 2024-09-02 17:27:37 +02:00
cache fix(npm): ensure scoped package name is encoded in URLs (#26390) 2024-10-18 20:38:57 +02:00
cert feat: add --allow-import flag (#25469) 2024-09-26 01:50:54 +00:00
check fix: improved support for cjs and cts modules (#26558) 2024-11-01 12:27:00 -04:00
clean/general feat(clean): add progress bar (#25026) 2024-08-14 13:04:07 +02:00
cli fix: otel resiliency (#26857) 2024-11-14 12:16:28 +00:00
compile perf(compile): code cache (#26528) 2024-11-18 20:09:28 +00:00
coverage fix(coverage): ignore urls from doc testing (#25736) 2024-09-20 15:04:22 +09:00
doc chore: remove unnecessary envs in spec tests (#25982) 2024-10-02 10:14:38 +01:00
eval feat(node): stabilize detecting if CJS via "type": "commonjs" in a package.json (#26439) 2024-11-13 15:10:09 +00:00
flags feat: add lowercase -v version flag (#23750) 2024-05-23 00:20:20 +00:00
fmt fix(fmt): don't use self-closing tags in HTML (#26754) 2024-11-06 13:56:03 +01:00
future chore: upgrade to rust 1.82 and LLVM 19 (#26615) 2024-11-01 16:13:02 +05:30
import_map/import_map_config refactor: move importMap with imports/scopes diagnostic to deno_config (#24553) 2024-07-12 12:48:53 -04:00
info fix(info): resolve workspace member mappings (#26350) 2024-10-18 21:45:05 +02:00
init/lib fix(init): use bare specifier for jsr:@std/assert (#24581) 2024-07-14 13:22:43 -04:00
install feat(node): stabilize detecting if CJS via "type": "commonjs" in a package.json (#26439) 2024-11-13 15:10:09 +00:00
jsr feat(lsp): quick fix for @deno-types="npm:@types/*" (#25954) 2024-10-01 22:55:02 +01:00
jupyter/install_command refactor(jupyter): use runtimelib for Jupyter structures and directory paths (#23826) 2024-05-21 22:35:21 +02:00
lint feat(cli): add --unstable-node-globals flag (#26617) 2024-11-14 13:11:29 +00:00
lockfile fix(check): support --frozen on deno check (#26479) 2024-10-22 21:15:00 +00:00
node fix(ext/node): resolve exports even if parent module filename isn't present (#26553) 2024-10-31 10:02:31 -07:00
npm chore: reenable some tests disabled during Deno 1->2 migration (#26898) 2024-11-16 18:15:42 +00:00
permission fix(unstable/worker): ensure import permissions are passed (#26101) 2024-10-10 14:01:42 +01:00
publish chore: reenable some tests disabled during Deno 1->2 migration (#26898) 2024-11-16 18:15:42 +00:00
remove fix(install): better json editing (#26450) 2024-10-21 14:17:08 -04:00
repl/console_log fix(console/ext/repl): support using parseFloat() (#25900) 2024-10-14 15:04:18 -07:00
run feat(cli): support multiple env file argument (#26527) 2024-11-17 22:49:35 +00:00
serve feat(serve): Support second parameter in deno serve (#25606) 2024-09-12 23:32:28 +00:00
task feat(task): support object notation, remove support for JSDocs (#26886) 2024-11-16 12:18:17 +01:00
test fix(cli): preserve comments in doc tests (#26828) 2024-11-13 21:04:32 -08:00
upgrade Revert "perf(upgrade): cache downloaded binaries in DENO_DIR" (#26799) 2024-11-10 09:00:44 +05:30
vendor/removed BREAKING: remove deno vendor (#25343) 2024-09-03 17:00:57 +10:00
worker feat: add --allow-import flag (#25469) 2024-09-26 01:50:54 +00:00
workspaces fix: remove recently added deno.json node_modules aliasing (#25542) 2024-09-09 20:19:29 +00:00
mod.rs feat(node): stabilize detecting if CJS via "type": "commonjs" in a package.json (#26439) 2024-11-13 15:10:09 +00:00
README.md chore: support -- --nocapture in the spec tests (#24113) 2024-06-06 08:37:13 -04:00
schema.json feat(node): stabilize detecting if CJS via "type": "commonjs" in a package.json (#26439) 2024-11-13 15:10:09 +00:00

specs

These are integration tests that execute the deno binary. They supersede the itest macro found in the tests/integration folder and are the preferred way of writing tests that use the deno binary.

Structure

Tests must have the following directory structure:

tests/specs/<category_name>/<test_name>/__test__.json

Test filtering

To run a specific test, run:

cargo test specs::category_name::test_name

Or just the following, though it might run other tests:

cargo test test_name

To run showing the output of every test use -- --nocapture (note: this will cause tests to run sequentially instead of in parallel):

cargo test test_name -- --nocapture

__test__.json file

This file describes the test(s) to execute and the steps to execute. A basic example looks like:

{
  "args": "run main.js",
  "output": "main.out"
}

This will run deno run main.js then assert that the output matches the text in main.out.

Or another example that runs multiple steps:

{
  "tempDir": true,
  "steps": [{
    "args": "cache main.ts",
    "output": "cache.out"
  }, {
    "args": "run main.ts",
    "output": "error.out",
    "exitCode": 1
  }]
}

Or if you want to run several tests at the same time:

{
  "tests": {
    "ignore_dir": {
      "args": "run script.ts",
      "output": "script.out"
    },
    "some_other_test": {
      "args": "run other.ts",
      "output": "other.out"
    }
  }
}

Top level properties

  • repeat (number) - Number of times to repeat a test.
  • tempDir (boolean) - Copy all the non-test files to a temporary directory and execute the command in that temporary directory.
    • By default, tests are executed with a current working directory of the test, but this may not be desirable for tests such as ones that create a node_modules directory.

Step properties

When writing a single step, these may be at the top level rather than nested in a "steps" array or "tests" object.

  • args - A string (that will be spilt on whitespace into an args array) or an array of arguments.
  • output - Path to use to assert the output or text (must end with an .out extension) or text to pattern match against the output.
  • flaky - Step should be repeated until success a maximum of 3 times.
  • if ("windows", "linux", "mac", "unix") - Whether to run this step.
  • exitCode (number) - Expected exit code.

Auto-complete

To get auto-complete for these files, add the following to a local .vscode/settings.json file:

{
  "json.schemas": [{
    "fileMatch": [
      "__test__.jsonc"
    ],
    "url": "./tests/specs/schema.json"
  }]
}

.out files

.out files are used to assert the output when running a test or test step.

Within the file, you can use the following for matching:

  • [WILDCARD] - match any text at the wildcard
  • [WILDLINE] - match any text on the current line
  • [WILDCHAR] - match the next character
  • [WILDCHARS(5)] - match any of the next 5 characters
  • [UNORDERED_START] followed by many lines then [UNORDERED_END] will match the lines in any order (useful for non-deterministic output)
  • [# example] - line comments start with [# and end with ]