summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-03-25feat(lint): automatically opt-in packages to `jsr` lint tag (#23072)David Sherret
This automatically opts packages (deno.json's with a name, version, and exports field) into the "jsr" lint tag.
2024-03-25fix(ext/web): Fix structuredClone Web API type declaration (any -> generic) ↵Viktor Marinho
(#22968) Closes #22958 Used the same type as in: https://github.com/microsoft/TypeScript/blob/main/src/lib/dom.generated.d.ts#L26114 --------- Signed-off-by: Viktor Marinho <56888067+viktormarinho@users.noreply.github.com>
2024-03-25test: add test for DENO_FUTURE=1 runtime API (#23065)Bartek Iwańczuk
Add a test that asserts that certain symbols are no longer available if running with `DENO_FUTURE=1` env var. Currently only checks `window` global.
2024-03-26fix(cli): output more detailed information for steps when using JUnit ↵Yusuke Tanaka
reporter (#22797) This patch gets JUnit reporter to output more detailed information for test steps (subtests). ## Issue with previous implementation In the previous implementation, the test hierarchy was represented using several XML tags like the following: - `<testsuites>` corresponds to the entire test (one execution of `deno test` has exactly one `<testsuites>` tag) - `<testsuite>` corresponds to one file, such as `main_test.ts` - `<testcase>` corresponds to one `Deno.test(...)` - `<property>` corresponds to one `t.step(...)` This structure describes the test layers but one problem is that `<property>` tag is used for any use cases so some tools that can ingest a JUnit XML file might not be able to interpret `<property>` as subtests. ## How other tools address it Some of the testing frameworks in the ecosystem address this issue by fitting subtests into the `<testcase>` layer. For instance, take a look at the following Go test file: ```go package main_test import "testing" func TestMain(t *testing.T) { t.Run("child 1", func(t *testing.T) { // OK }) t.Run("child 2", func(t *testing.T) { // Error t.Fatal("error") }) } ``` Running [gotestsum], we can get the output like this: ```xml <?xml version="1.0" encoding="UTF-8"?> <testsuites tests="3" failures="2" errors="0" time="1.013694"> <testsuite tests="3" failures="2" time="0.510000" name="example/gosumtest" timestamp="2024-03-11T12:26:39+09:00"> <properties> <property name="go.version" value="go1.22.1 darwin/arm64"></property> </properties> <testcase classname="example/gosumtest" name="TestMain/child_2" time="0.000000"> <failure message="Failed" type="">=== RUN TestMain/child_2&#xA; main_test.go:12: error&#xA;--- FAIL: TestMain/child_2 (0.00s)&#xA;</failure> </testcase> <testcase classname="example/gosumtest" name="TestMain" time="0.000000"> <failure message="Failed" type="">=== RUN TestMain&#xA;--- FAIL: TestMain (0.00s)&#xA;</failure> </testcase> <testcase classname="example/gosumtest" name="TestMain/child_1" time="0.000000"></testcase> </testsuite> </testsuites> ``` This output shows that nested test cases are squashed into the `<testcase>` layer by treating them as the same layer as their parent, `TestMain`. We can still distinguish nested ones by their `name` attributes that look like `TestMain/<subtest_name>`. As described in #22795, [vitest] solves the issue in the same way as [gotestsum]. One downside of this would be that one test failure that happens in a nested test case will end up being counted multiple times, because not only the subtest but also its wrapping container(s) are considered to be failures. In fact, in the [gotestsum] output above, `TestMain/child_2` failed (which is totally expected) while its parent, `TestMain`, was also counted as failure. As https://github.com/denoland/deno/pull/20273#discussion_r1307558757 pointed out, there is a test runner that offers flexibility to prevent this, but I personally don't think the "duplicate failure count" issue is a big deal. ## How to fix the issue in this patch This patch fixes the issue with the same approach as [gotestsum] and [vitest]. More specifically, nested test cases are put into the `<testcase>` level and their names are now represented as squashed test names concatenated by `>` (e.g. `parent 2 > child 1 > grandchild 1`). This change also allows us to put a detailed error message as `<failure>` tag within the `<testcase>` tag, which should be handled nicely by third-party tools supporting JUnit XML. ## Extra fix Also, file paths embedded into XML outputs are changed from absolute path to relative path, which is helpful when running the test suites in several different environments like CI. Resolves #22795 [gotestsum]: https://github.com/gotestyourself/gotestsum [vitest]: https://vitest.dev/ --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2024-03-25fix(ext/fetch): do not truncate field value in `EventSource` (#22368)ud2
Depends on #22493. Closes #22367.
2024-03-25ci: allow "FUTURE" PR title (#23064)Bartek Iwańczuk
Allows to use `BREAKING` prefix in the PR title. This change will allow us to land PRs that change behavior with `DENO_FUTURE=1` env var, and prepare for Deno 2.0 release.
2024-03-24fix: don't panic in test and bench if ops not available (#23055)Bartek Iwańczuk
Fixes regression introduced in https://github.com/denoland/deno/pull/22112 that removed checks if `Deno.test` or `Deno.bench` are not used in respective subcommands. Closes https://github.com/denoland/deno/issues/23041
2024-03-24fix(ext/fetch): make `EventSource` more robust (#22493)ud2
This PR fixes all unhandled rejections and resource leaks found while adding a test for #22368.
2024-03-24docs(dts): Update edge case in `prompt()` docs (#22954)Sol Boucher
This has been incorrect since the function adopted its (more intuitive) current behavior in 9268df5f3. The same behavior change was backported to v1.39.3 in 87e954f54.
2024-03-24fix(ext/node): handle `null` in stdio array (#23048)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/23045
2024-03-24refactor(bench): align ops to testing ops (#23038)Bartek Iwańczuk
Internal refactor that changes how we use ops in `deno bench` subcommand. This brings it in line to what we do in `deno test` subcommand.
2024-03-22perf(cli): use args_os (#23039)Matt Mastracci
Extracted from #22718
2024-03-22perf: warm expensive init code at snapshot time (#22714)Matt Mastracci
Slightly different approach to similar changes in #22386 Note that this doesn't use a warmup script -- we are actually just doing more work at snapshot time.
2024-03-22refactor(ext/ffi): use v8::Value instead of serde_v8::Value (#23035)Bartek Iwańczuk
Follow up to https://github.com/denoland/deno/pull/23034 that removes another usage of `serde_v8::Value`.
2024-03-22feat(publish): check for uncommitted files in `deno publish --dry-run` (#22981)Asher Gomez
Closes #22936
2024-03-22refactor(ext/ffi): don't go through serde_v8::Value (#23034)Bartek Iwańczuk
Removes unnecessary indirection - after creating `serde_v8::Value` it was immediately unwrapped to `v8::Value` by the caller.
2024-03-22refactor(ext/web): use relative specifiers (#23024)Bartek Iwańczuk
2024-03-22fix(ext/node): handle KeyObject in `prepareAsymmetricKey` (#23026)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/20938
2024-03-22fix(ext/node): add crypto.subtle (#23027)Divy Srivastava
Alias for `crypto.webcrypto.subtle`. https://nodejs.org/api/crypto.html#cryptosubtle
2024-03-22fix(ext/node): add crypto.getRandomValues (#23028)Divy Srivastava
Alias for `crypto.webcrypto.getRandomValues`
2024-03-21feat(unstable/publish): error when a package's module is excluded from ↵David Sherret
publishing (#22948) Closes #22657
2024-03-21feat(lint): `deno lint --fix` and lsp quick fixes (#22615)David Sherret
Adds a `--fix` option to deno lint. This currently doesn't work for basically any rules, but we can add them over time to deno lint.
2024-03-21chore: upgrade deno_core to 0.272.0 (#23022)Bartek Iwańczuk
2024-03-21feat(node): load ES modules defined as CJS (#22945)David Sherret
Changes the behaviour in Deno to just always load ES modules in npm packages even if they're defined as CJS. Closes #22818
2024-03-21chore: ignore flaky brotli test (#23020)Divy Srivastava
Closes https://github.com/denoland/deno/issues/22898
2024-03-21feat: deno_task_shell 0.15 (#23019)David Sherret
* feat: implement exit status var (https://github.com/denoland/deno_task_shell/pull/110) * feat: support input redirects (https://github.com/denoland/deno_task_shell/pull/106) * feat: support output fd redirects for stdout and stderr (https://github.com/denoland/deno_task_shell/pull/111) * feat: support parsing fd redirects (https://github.com/denoland/deno_task_shell/pull/107) * fix: exit error code on arg parse failure (https://github.com/denoland/deno_task_shell/pull/112) Closes #22989
2024-03-21feat(ext/node): add riscv64 in process.arch (#23016)Eric Long
Rust triple for riscv64 is riscv64gc. Although there are no official builds for architectures other than x86_64 and aarch64, Arch Linux RISC-V has managed to package Deno on riscv64: https://github.com/felixonmars/archriscv-packages/blob/master/deno/riscv64.patch Ref: https://github.com/denoland/deno/issues/18702
2024-03-21chore: bump simd-json and value-trait (#23015)Eric Long
The newer version of both crates provides fallback, non-SIMD implementation of their functions. Reference: - https://github.com/simd-lite/value-trait/commit/136603dcc6c6313b437cc42410aa4c85c709ea58 - https://github.com/simd-lite/simd-json/commit/f46dc2ab7ca5eab0d531cb7ad7ae11bcac8c2d06 Fixes #23014.
2024-03-21fix(ext/node): ECDH.publicKey() point encoding (#23013)Divy Srivastava
2024-03-21fix(ext/node): panic in `op_node_ecdh_generate_keys` (#23011)Divy Srivastava
2024-03-21refactor(lsp): factor out workspace walk from resolver update (#22937)Nayeem Rahman
2024-03-21fix: do not memoize `Deno.ppid` (#23006)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/23004
2024-03-21chore: make DENO_FUTURE a singleton (#23009)Bartek Iwańczuk
Just making sure we read this env var once per process.
2024-03-20chore: update Google Cloud actions (#22839)Asher Gomez
These actions use Node 20 instead of 16 (which is deprecated).
2024-03-20chore(ext/io): remove use of deprecated `Deno.writeSync()` (#22872)Asher Gomez
2024-03-20chore(ext/buffer): remove use of deprecated `Deno.readAll()` (#22874)Asher Gomez
2024-03-20fix(ext/node): spread args in setImmediate (#22998)Satya Rohith
Closes https://github.com/denoland/deno/issues/22997 Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-03-20fix(ext/node): implement EventEmitterAsyncResource (#22994)Divy Srivastava
Fixes #22729
2024-03-20fix(ext/node): FsWatcher ref and unref (#22987)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/22973 --------- Co-authored-by: Satya Rohith <me@satyarohith.com>
2024-03-20fix(ext/node): add process.setSourceMapsEnabled noop (#22993)Satya Rohith
Closes https://github.com/denoland/deno/issues/22992
2024-03-20fix(ext/node): worker_threads ESM handling (#22841)mash-graz
Fixes #22840 Fixes #22964
2024-03-19chore: rename internal `Datagram` class to `DatagramConn` (#22474)Asher Gomez
As having mismatched public and private class names may be confusing, without good reason, to those unfamiliar with the codebase.
2024-03-19fix(ext/node): support Diffie-Hellman key type in ↵Asher Gomez
`crypto.createPrivateKey()` (#22984) Towards #22489 Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
2024-03-18chore(ext/buffer): cleanup use of deprecated `Deno.writeAllSync()` (#22875)Asher Gomez
2024-03-18fix(node): implement v8 serialize and deserialize (#22975)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/22971
2024-03-18fix(ext/node): support public key point encoding in ECDH.generateKeys() (#22976)Satya Rohith
Towards https://github.com/denoland/deno/issues/22921 Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2024-03-16fix(ext/node): pass normalized watchFile handler to StatWatcher (#22940)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/22939
2024-03-15fix(coverage): Error if no files are included in the report (#22952)Nathan Whitaker
Fixes #22941. In that case, the only file with coverage was the `test.ts` file. The coverage reporter filters out test files before compiling its report, so after filtering we were left with an empty set of files. Later on it's assumed that there is at least 1 file to be reported on, and we panic. Instead of panicking, just issue an error after filtering.
2024-03-16fix(ext/node): support MessagePort in `WorkerOptions.workerData` (#22950)Bartek Iwańczuk
This commit fixes passing `MessagePort` instances to `WorkerOptions.workerData`. Before they were not serialized and deserialized properly when spawning a worker thread. Closes https://github.com/denoland/deno/issues/22935
2024-03-15fix(ext/node): Reimplement StringDecoder to match node's behavior (#22933)Nathan Whitaker
Fixes #22158. Basically reimplements the whole `StringDecoder` with a much more direct translation (read like one-to-one) of node's current logic. The old implementation was closer to node's super old impl and it was too hard to keep the code structure while matching the behavior of their new logic. This adds support for UTF-16LE, ascii, and latin1. This also enables the node_compat test, which now passes without modification.