deno/tests/specs
David Sherret 049e703331
FUTURE: override byonm with nodeModulesDir setting (#23222)
Makes the `"nodeModulesDir"` setting take precedence over byonm when
using `DENO_FUTURE`.
2024-04-05 10:34:51 -04:00
..
bench chore(specs): add jsr and npm env vars to tests by default (#23171) 2024-04-01 21:58:05 -04:00
check chore(specs): add jsr and npm env vars to tests by default (#23171) 2024-04-01 21:58:05 -04:00
coverage fix(coverage): Error if no files are included in the report (#22952) 2024-03-15 20:58:57 -07:00
flags chore: move more tests away from itest (#22909) 2024-03-15 15:46:51 -04:00
fmt/no_error_deno_dir_not_exists fix: prevent cache db errors when deno_dir not exists (#23168) 2024-04-01 18:58:52 -04:00
future/runtime_api FUTURE: remove deprecated APIs within workers (#23220) 2024-04-05 03:27:18 +11:00
import_map/import_map_config chore(specs): use jsonc for metadata file (#22946) 2024-03-15 17:27:52 +00:00
info/ts_error chore(specs): use jsonc for metadata file (#22946) 2024-03-15 17:27:52 +00:00
jsr chore(specs): add jsr and npm env vars to tests by default (#23171) 2024-04-01 21:58:05 -04:00
jupyter/install_command_not_exists chore: move more tests away from itest (#22909) 2024-03-15 15:46:51 -04:00
lint feat(lint): automatically opt-in packages to jsr lint tag (#23072) 2024-03-25 18:20:15 -04:00
node/detect_es_module_defined_as_cjs feat(node): load ES modules defined as CJS (#22945) 2024-03-21 11:35:51 -07:00
npm FUTURE: override byonm with nodeModulesDir setting (#23222) 2024-04-05 10:34:51 -04:00
run/redirect_javascript chore(specs): use jsonc for metadata file (#22946) 2024-03-15 17:27:52 +00:00
task feat(task): Task description in the form of comments (#23101) 2024-03-27 14:14:27 -07:00
test fix: don't panic in test and bench if ops not available (#23055) 2024-03-24 16:16:45 -07:00
mod.rs chore(specs): add jsr and npm env vars to tests by default (#23171) 2024-04-01 21:58:05 -04:00
README.md chore(lsp): add tests for compiler options being resolved relative the config file (#22924) 2024-03-15 14:27:43 +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

__test__.json file

This file describes the test 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
  }]
}

Top level properties

  • base - The base config to use for the test. Options:
    • jsr - Uses env vars for jsr.
    • npm - Uses env vars for npm.
  • 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.

  • 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.
  • clean (boolean) - Whether to empty the deno_dir before running the step.
  • exitCode (number) - Expected exit code.

.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
  • [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 ]