0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-22 13:13:32 -05:00
denoland-deno/tests/unit
Bartek Iwańczuk f08ca6414b
feat(lint): add JavaScript plugin support (#27203)
This commit adds an unstable lint plugin API.

Plugins are specified in the `deno.json` file under
`lint.plugins` option like so:

```
{
  "lint": {
    "plugins": [
      "./plugins/my-plugin.ts",
      "jsr:@deno/lint-plugin1",
      "npm:@deno/lint-plugin2"
    ]
  }
}
```

The API is considered unstable and might be subject
to changes in the future.

Plugin API was modelled after ESLint API for the 
most part, but there are no guarantees for compatibility.
The AST format exposed to plugins is closely modelled
after the AST that `typescript-eslint` uses.

Lint plugins use the visitor pattern and can add
diagnostics like so:

```
export default {
  name: "lint-plugin",
  rules: {
    "plugin-rule": {
      create(context) {
        return {
          Identifier(node) {
            if (node.name === "a") {
              context.report({
                node,
                message: "should be b",
                fix(fixer) {
                  return fixer.replaceText(node, "_b");
                },
              });
            }
          },
        };
      },
    },
  },
} satisfies Deno.lint.Plugin;
```

Besides reporting errors (diagnostics) plugins can provide
automatic fixes that use text replacement to apply changes.

---------

Co-authored-by: Marvin Hagemeister <marvin@deno.com>
Co-authored-by: David Sherret <dsherret@gmail.com>
2025-02-05 16:59:24 +01:00
..
__snapshots__ feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
abort_controller_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
blob_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
body_test.ts feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
broadcast_channel_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
build_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
cache_api_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
chmod_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
chown_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
command_test.ts fix(process/windows): correct command resolution when PATH env var not uppercase (#27846) 2025-01-28 10:46:01 -05:00
console_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
copy_file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
cron_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
custom_event_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
dir_test.ts feat: Deno.cwd() no longer requires --allow-read permission (#27192) 2025-01-27 15:13:59 +01:00
dom_exception_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
error_stack_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
error_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
esnext_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
event_source_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
event_target_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
event_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
fetch_test.ts feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
ffi_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
filereader_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
files_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
fs_events_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
get_random_values_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
globals_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
headers_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
http_test.ts chore: update std in test util (#27892) 2025-01-31 08:52:32 -05:00
image_bitmap_test.ts feat(ext/canvas): enhance createImageBitmap specification compliance (#25517) 2025-02-05 04:10:11 -08:00
image_data_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
internals_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
intl_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
jupyter_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
kv_queue_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
kv_queue_test_no_db_close.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
kv_queue_undelivered_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
kv_test.ts fix(kv): improve backoff error message and inline documentation (#27537) 2025-01-04 00:04:14 +01:00
link_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
lint_plugin_test.ts feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
lint_selectors_test.ts fix(lint): fix single char selectors being ignored (#27576) 2025-01-08 00:21:50 +01:00
make_temp_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
message_channel_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
mkdir_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
navigator_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
net_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
network_interfaces_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
ops_test.ts feat(lint): add JavaScript plugin support (#27203) 2025-02-05 16:59:24 +01:00
os_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
path_from_url_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
performance_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
permissions_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
process_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
progressevent_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
promise_hooks_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
quic_test.ts refactor(quic): introduce endpoint, 0rtt, cleanup (#27444) 2025-01-06 15:24:59 +01:00
read_dir_test.ts fix(types): Deno.readDirSync's type returns an IteratorObject (#27805) 2025-01-24 11:25:55 -05:00
read_file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
read_link_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
read_text_file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
README.md test: remove usage of --unstable flag (#25549) 2024-09-10 11:28:59 +00:00
real_path_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
ref_unref_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
remove_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
rename_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
request_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
response_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
serve_test.ts chore: update std in test util (#27892) 2025-01-31 08:52:32 -05:00
signal_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
stat_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
stdio_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
streams_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
structured_clone_test.ts feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
symbol_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
symlink_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
test_util.ts chore: update std in test util (#27892) 2025-01-31 08:52:32 -05:00
testing_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
text_encoding_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
timers_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
tls_sni_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
tls_test.ts chore: update std in test util (#27892) 2025-01-31 08:52:32 -05:00
truncate_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
tty_color_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
tty_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
umask_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
url_search_params_test.ts feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
url_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
urlpattern_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
utime_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
version_test.ts feat: TypeScript 5.7 (#27857) 2025-01-31 16:07:42 -05:00
wasm_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
webcrypto_test.ts fix(ext/crypto): fix jwk key_ops validation (#27827) 2025-01-28 18:13:17 +05:30
webgpu_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
websocket_test.ts fix(ext/websocket): Fix close code without reason (#27578) 2025-01-08 20:07:47 +05:30
websocketstream_test.ts.disabled chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
webstorage_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
worker_permissions_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
worker_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
write_file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
write_text_file_test.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00

Deno runtime tests

Files in this directory are unit tests for Deno runtime.

Testing Deno runtime code requires checking API under different runtime permissions. To accomplish this all tests exercised are created using Deno.test() function.

import {} from "./test_util.ts";

Deno.test(function simpleTestFn(): void {
  // test code here
});

Deno.test(
  {
    ignore: Deno.build.os === "windows",
    permissions: { read: true, write: true },
  },
  function complexTestFn(): void {
    // test code here
  },
);

Running tests

There are two ways to run unit_test_runner.ts:

# Run all tests.
cargo run --bin deno -- test --allow-all --location=http://js-unit-tests/foo/bar cli/tests/unit/

# Run a specific test module
cargo run --bin deno -- test --allow-all --location=http://js-unit-tests/foo/bar cli/tests/unit/files_test.ts

Http server

target/debug/test_server is required to run when one's running unit tests. During CI it's spawned automatically, but if you want to run tests manually make sure that server is spawned otherwise there'll be cascade of test failures.