1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00
denoland-deno/tests/specs
Nathan Whitaker 218ee1b1ff
fix(add): Better error message when missing npm specifier (#24970)
Before:
<img width="278" alt="Screenshot 2024-08-09 at 3 15 01 PM"
src="https://github.com/user-attachments/assets/91b0ada6-93ee-4be6-a996-078aef98c2a9">

After:
<img width="888" alt="Screenshot 2024-08-09 at 3 52 15 PM"
src="https://github.com/user-attachments/assets/3c88a0e8-c761-4f70-88bf-109355ac12f0">
2024-08-09 14:29:11 +00:00
..
add fix(add): Better error message when missing npm specifier (#24970) 2024-08-09 14:29:11 +00:00
bench feat: npm workspace and better Deno workspace support (#24334) 2024-07-04 00:54:33 +00:00
bundle/lockfile feat(vendor): support modifying remote files in vendor folder without checksum errors (#23979) 2024-05-28 14:58:43 -04:00
cache chore: fix flaky net_listen_allow_localhost_4555 (#23726) 2024-05-07 17:21:56 +00:00
cert fix(ext/fetch): include URL and error details on fetch failures (#24910) 2024-08-07 23:18:33 -07:00
check feat: npm workspace and better Deno workspace support (#24334) 2024-07-04 00:54:33 +00:00
clean/general feat: deno clean (#24950) 2024-08-08 13:22:18 +00:00
cli/help_and_version_broken_pipe fix: panic when piping "deno help" or "deno --version" (#22917) 2024-07-09 22:57:00 +00:00
compile fix(compile): support workspace members importing other members (#24909) 2024-08-07 07:43:05 +00:00
coverage fix(coverage): Error if no files are included in the report (#22952) 2024-03-15 20:58:57 -07:00
eval/env_unparsable_file fix: --env flag confusing message on syntax error (#23915) 2024-05-27 15:06:18 +02:00
flags feat: add lowercase -v version flag (#23750) 2024-05-23 00:20:20 +00:00
fmt feat(unstable/fmt): move yaml formatting behind unstable flag (#24848) 2024-08-02 13:52:48 +00:00
future chore: update to std@2024.07.19 (#24715) 2024-07-25 15:30:28 +10:00
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 refactor: move redirect handling into deno_graph (#23444) 2024-04-19 01:43:28 +00:00
init/lib fix(init): use bare specifier for jsr:@std/assert (#24581) 2024-07-14 13:22:43 -04:00
install fix(install): Properly handle dist tags when setting up node_modules (#24968) 2024-08-09 13:35:54 +00:00
jsr fix: update dry run success message (#24885) 2024-08-06 08:14:06 +00: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(unstable): move sloppy-import warnings to lint rule (#24710) 2024-07-25 09:07:59 -04:00
lockfile fix(future): Emit deno install warning less often, suggest deno install in error message (#24706) 2024-07-24 23:37:13 +00:00
node fix(node): support wildcards in package.json imports (#24794) 2024-07-30 17:14:07 +00:00
npm fix(future): Emit deno install warning less often, suggest deno install in error message (#24706) 2024-07-24 23:37:13 +00:00
permission fix(runtime): Allow opening /dev/fd/XXX for unix (#23743) 2024-05-10 11:21:36 -06:00
publish fix: update dry run success message (#24885) 2024-08-06 08:14:06 +00:00
run fix(compile): support workspace members importing other members (#24909) 2024-08-07 07:43:05 +00:00
serve feat: Add Deno.ServeDefaultExport type (#24879) 2024-08-05 23:19:09 +02:00
task fix(unstable): move sloppy-import warnings to lint rule (#24710) 2024-07-25 09:07:59 -04:00
test feat(test): rename --allow-none to --permit-no-files (#24809) 2024-08-02 13:18:59 +00:00
workspaces refactor: move importMap with imports/scopes diagnostic to deno_config (#24553) 2024-07-12 12:48:53 -04:00
mod.rs chore: support -- --nocapture in the spec tests (#24113) 2024-06-06 08:37:13 -04:00
README.md chore: support -- --nocapture in the spec tests (#24113) 2024-06-06 08:37:13 -04:00
schema.json chore: support -- --nocapture in the spec tests (#24113) 2024-06-06 08:37:13 -04: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 ]