0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-04 09:57:11 -05:00
deno/tests/specs
Luca Casonato aa55efaa13
fix(otel): don't throw when calling setActiveSpan at root (#28323)
When calling `setActiveSpan` at the module root, or with `options.root =
true`, the function would internally throw.
2025-02-27 18:47:09 +01:00
..
add fix: do not error when subpath has an @ symbol (#27290) 2024-12-09 13:19:08 -08:00
bench feat(bench): add warmup and n for controlling number of iterations (#28123) 2025-02-18 12:44:43 -05:00
bundle/removed fix: add info suggestion for unsafely-ignore-certificate-errors and add --help=full (#28203) 2025-02-24 08:20:59 -08:00
cache fix(npm): ensure scoped package name is encoded in URLs (#26390) 2024-10-18 20:38:57 +02:00
cert refactor: extract out FileFetcher to deno_cache_dir (#27263) 2024-12-16 23:39:40 +00:00
check fix(check): regression - implicit jsxImportSource was not resolving (#28228) 2025-02-21 14:09:57 -05:00
clean/general feat(clean): add progress bar (#25026) 2024-08-14 13:04:07 +02:00
cli fix(otel): don't throw when calling setActiveSpan at root (#28323) 2025-02-27 18:47:09 +01:00
compile fix(compile): never include the specified output executable in itself (#27877) 2025-02-06 23:23:10 +00:00
coverage fix(coverage): exclude scripts with invalid URLs from raw coverage output (#28210) 2025-02-20 23:23:43 +01:00
doc fix(tools/doc): HTML resolve main entrypoint from config file (#27103) 2024-11-27 02:15:15 -08: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): support "--ext vto" and "--ext njk" (#28262) 2025-02-24 12:09:53 +00: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 chore: fix ci by removing remote server dependent test (#27674) 2025-01-15 04:06:57 +00:00
init feat(init): add --npm flag to initialize npm projects (#26896) 2024-11-21 00:03:11 +00:00
install fix(install): don't error on unknown media types in install (#28234) 2025-02-21 12:20:55 -08:00
jsr fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
jupyter/install_command refactor(jupyter): use runtimelib for Jupyter structures and directory paths (#23826) 2024-05-21 22:35:21 +02:00
lint fix(lint): plugins ignored when no rust rule active (#28269) 2025-02-24 23:35:49 +01:00
lockfile fix: cache bust http cache on lockfile integrity mismatch (#28087) 2025-02-13 13:23:24 +01:00
node fix(check): npm resolution errors to tsc diagnostics (#28174) 2025-02-18 21:44:49 +00:00
npm refactor: put lsp tracing behind flag (#28118) 2025-02-14 17:17:52 +00:00
outdated fix(outdated): hint to use --latest if new versions are available in outdated --update (#28190) 2025-02-20 23:24:07 +01:00
permission fix(permissions): implicit --allow-import when using --cached-only (#27530) 2025-01-02 16:55:03 -05:00
publish fix(publish): support jsx/tsx (#28188) 2025-02-20 22:39:51 +00:00
remove fix(install): better json editing (#26450) 2024-10-21 14:17:08 -04:00
repl/console_log chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
run fix: don't panic when running with // as a filepath (#28189) 2025-02-19 19:29:11 -08:00
serve fix: add hint to run with --no-check when type checking fails (#28091) 2025-02-13 10:54:52 +00:00
task fix(task): support --frozen flag (#28094) 2025-02-13 13:22:15 +01:00
test chore: update to rust 1.85 (#28236) 2025-02-25 08:50:01 -08:00
upgrade chore: fix two locally failing on windows tests (#27845) 2025-01-28 10:46:43 -05:00
vendor/removed fix: add info suggestion for unsafely-ignore-certificate-errors and add --help=full (#28203) 2025-02-24 08:20:59 -08:00
worker feat: add --allow-import flag (#25469) 2024-09-26 01:50:54 +00:00
workspaces fix(check): compiler options from workspace members (#27785) 2025-01-28 10:49:58 -05:00
mod.rs refactor: move denort to separate crate (#27688) 2025-01-17 20:39:29 +00:00
README.md chore: support -- --nocapture in the spec tests (#24113) 2024-06-06 08:37:13 -04:00
schema.json fix(compile): analyze modules in directory specified in --include (#27296) 2024-12-12 18:07:35 +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 ]