1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-28 10:09:20 -05:00
denoland-deno/std/node
Bartek Iwańczuk 6e2df8c64f
feat: Deno.test() sanitizes ops and resources (#4399)
This PR brings assertOps and assertResources sanitizers to Deno.test() API.

assertOps checks that test doesn't leak async ops, ie. there are no unresolved
promises originating from Deno APIs. Enabled by default, can be disabled using 
Deno.TestDefinition.disableOpSanitizer.

assertResources checks that test doesn't leak resources, ie. all resources used
in test are closed. For example; if a file is opened during a test case it must be
explicitly closed before test case finishes. It's most useful for asynchronous
generators. Enabled by default, can be disabled using 
Deno.TestDefinition.disableResourceSanitizer.

We've used those sanitizers in internal runtime tests and it proved very useful in
surfacing incorrect tests which resulted in interference between the tests.

All tests have been sanitized.

Closes #4208
2020-03-18 19:25:55 -04:00
..
_fs feat: Deno.test() sanitizes ops and resources (#4399) 2020-03-18 19:25:55 -04:00
tests std/node: add some Node.js polyfill to require() (#3382) 2019-11-19 16:44:59 -05:00
_utils.ts feat: std/node (#3319) 2019-11-12 15:51:14 -05:00
events.ts Enable TS strict mode by default (#3899) 2020-02-19 15:36:18 -05:00
events_test.ts Enable TS strict mode by default (#3899) 2020-02-19 15:36:18 -05:00
fs.ts refactor: move existing fs implementation to internal _fs directory (#4381) 2020-03-15 11:48:46 -04:00
global.ts Enable TS strict mode by default (#3899) 2020-02-19 15:36:18 -05:00
module.ts Add node querystring polyfill (#4370) 2020-03-14 16:43:49 -04:00
module_test.ts test: Fix broken test and remove redundant test file (#4390) 2020-03-16 12:40:36 +01:00
os.ts feat(std/node): add os.tmpdir() implementation (#4213) 2020-03-01 19:05:04 -05:00
os_test.ts feat(std/node): add os.tmpdir() implementation (#4213) 2020-03-01 19:05:04 -05:00
path.ts std/node: add some Node.js polyfill to require() (#3382) 2019-11-19 16:44:59 -05:00
process.ts feat: std/node/process (#3368) 2019-11-18 18:30:24 -05:00
process_test.ts rename Deno.Err -> Deno.errors (#4093) 2020-02-24 15:48:35 -05:00
querystring.ts Node polyfill for fs.chown and fs.close (#4377) 2020-03-14 23:01:34 -04:00
querystring_test.ts Add node querystring polyfill (#4370) 2020-03-14 16:43:49 -04:00
README.md Add node querystring polyfill (#4370) 2020-03-14 16:43:49 -04:00
timers.ts feat(std/node): Added node timers builtin (#3634) 2020-01-15 14:13:12 -05:00
util.ts feat: Event emitter node polyfill (#3944) 2020-02-10 18:19:48 -05:00
util_test.ts refactor: rewrite tests in std/ to use Deno.test (#3930) 2020-02-11 17:24:27 +01:00

Deno Node compatibility

This module is meant to have a compatibility layer for the NodeJS standard library.

Warning: Any function of this module should not be referred anywhere in the deno standard library as it's a compatiblity module.

Supported Builtins

  • assert
  • buffer
  • child_process
  • cluster
  • console
  • crypto
  • dgram
  • dns
  • events
  • fs partly
  • http
  • http2
  • https
  • module
  • net
  • os partly
  • path
  • perf_hooks
  • process partly
  • querystring
  • readline
  • repl
  • stream
  • string_decoder
  • sys
  • timers
  • tls
  • tty
  • url
  • util partly
  • v8 can't implement
  • vm
  • worker_threads
  • zlib
  • node globals partly

Deprecated

These builtins are deprecated in NodeJS v13 and will probably not be polyfilled:

  • constants
  • domain
  • freelist
  • punycode

Experimental

These builtins are experimental in NodeJS v13 and will not be polyfilled until they are stable:

  • async_hooks
  • inspector
  • policies
  • report
  • trace_events
  • wasi

CommonJS Module Loading

createRequire(...) is provided to create a require function for loading CJS modules.

import { createRequire } from "https://deno.land/std/node/module.ts";

const require_ = createRequire(import.meta.url);
// Loads native module polyfill.
const path = require_("path");
// Loads extensionless module.
const cjsModule = require_("./my_mod");
// Visits node_modules.
const leftPad = require_("left-pad");