1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00
denoland-deno/tests/specs
Hasan-Alrimawi e44c538f37
fix: --env flag confusing message on syntax error (#23915)
Enhanced warning message for --env flag with run and eval subcommands. 

The commit is specifically made to address issue #23674 by improving the
warning messages that appear when using the --env flag with run or eval
subcommands in the following scenarios:

1. Missing environment file.
2. Incorrect syntax in the environment file content.


**Changes made**

- Distinguishes between cases of missing environment file and wrong
syntax in the environment file content.
- Shows a concise warning message to convey the case/issue occurred.

**Code changes & enhancements**
- Implemented a match statement to handle different types of errors
received while getting and parsing the file content to display a concise
warning message, rather than simple error check and then displaying the
same warning message for whatever the type of error is.
- Updated the related existing tests to reflect the new warning
messages.
- Added two test cases to cover the wrong environment file content
syntax with both run and eval subcommands.

**Impact**
The use of --env flag with both run/eval would be more user-friendly as
it gives a precise description of what is not right when using
incorrectly.

If you could give it a look, @dsherret , I appreciate your feedback on
these changes.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-05-27 15:06:18 +02:00
..
bench chore: fix flaky net_listen_allow_localhost_4555 (#23726) 2024-05-07 17:21:56 +00:00
cache chore: fix flaky net_listen_allow_localhost_4555 (#23726) 2024-05-07 17:21:56 +00:00
cert chore: move cert itests to spec tests (#23607) 2024-05-03 00:43:12 +00:00
check chore: fix flaky net_listen_allow_localhost_4555 (#23726) 2024-05-07 17:21:56 +00:00
compile FUTURE: initial support for .npmrc file (#23560) 2024-05-23 23:26:23 +02: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/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 FUTURE: remove import assertions support for JavaScript (#23541) 2024-04-29 22:43:05 +02:00
import_map/import_map_config chore(tests/specs): ability to have sub tests in file (#23667) 2024-05-03 10:19:42 +05:30
info refactor: move redirect handling into deno_graph (#23444) 2024-04-19 01:43:28 +00:00
install fix(cli): Support deno.lock with only package.json present + fix DENO_FUTURE install interactions with lockfile (#23918) 2024-05-23 12:31:05 -07:00
jsr perf(jsr): download metadata files as soon as possible and in parallel (#23836) 2024-05-16 00:58:57 +02:00
jupyter/install_command refactor(jupyter): use runtimelib for Jupyter structures and directory paths (#23826) 2024-05-21 22:35:21 +02:00
lint chore: migrate bench, publish, and more itests to spec tests (#23584) 2024-04-29 10:08:27 -04:00
lockfile fix(cli): Support deno.lock with only package.json present + fix DENO_FUTURE install interactions with lockfile (#23918) 2024-05-23 12:31:05 -07:00
node perf: analyze cjs re-exports in parallel (#23894) 2024-05-21 10:35:51 -04:00
npm FUTURE: initial support for .npmrc file (#23560) 2024-05-23 23:26:23 +02:00
permission fix(runtime): Allow opening /dev/fd/XXX for unix (#23743) 2024-05-10 11:21:36 -06:00
publish fix(publish): always include config file when publishing (#23797) 2024-05-14 18:15:43 +00:00
run fix: --env flag confusing message on syntax error (#23915) 2024-05-27 15:06:18 +02:00
serve feat: Add deno serve subcommand (#23511) 2024-04-24 19:45:49 +00:00
task fix(npm): set up node_modules/.bin/ entries for package that provide bin entrypoints (#23496) 2024-05-23 23:43:38 +00:00
test feat(cli/test): deno test --clean (#23519) 2024-05-23 03:04:12 +00:00
mod.rs chore(task): various small refactorings (#23793) 2024-05-13 22:55:14 +00:00
README.md chore(tests/specs): ability to have sub tests in file (#23667) 2024-05-03 10:19:42 +05:30
schema.json chore(tests/specs): ability to have sub tests in file (#23667) 2024-05-03 10:19:42 +05:30

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(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

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