From 09204107d85351dae07a45f6a9684b5b6e573652 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Mon, 30 Oct 2023 08:53:08 -0700 Subject: fix: implement node:tty (#20892) Fixes #21012 Closes https://github.com/denoland/deno/issues/20855 Fixes https://github.com/denoland/deno/issues/20890 Fixes https://github.com/denoland/deno/issues/20611 Fixes https://github.com/denoland/deno/issues/20336 Fixes `create-svelte` from https://github.com/denoland/deno/issues/17248 Fixes more reports here: - https://github.com/denoland/deno/issues/6529#issuecomment-1432690559 - https://github.com/denoland/deno/issues/6529#issuecomment-1522059006 - https://github.com/denoland/deno/issues/6529#issuecomment-1695803570 --- .../test/parallel/test-tty-stdin-end.js | 14 ++++ .../test/parallel/test-ttywrap-invalid-fd.js | 74 ++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 cli/tests/node_compat/test/parallel/test-tty-stdin-end.js create mode 100644 cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js (limited to 'cli/tests/node_compat/test/parallel') diff --git a/cli/tests/node_compat/test/parallel/test-tty-stdin-end.js b/cli/tests/node_compat/test/parallel/test-tty-stdin-end.js new file mode 100644 index 000000000..ee38cbd2c --- /dev/null +++ b/cli/tests/node_compat/test/parallel/test-tty-stdin-end.js @@ -0,0 +1,14 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 18.12.1 +// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually. + +'use strict'; +require('../common'); + +// This test ensures that Node.js doesn't crash on `process.stdin.emit("end")`. +// https://github.com/nodejs/node/issues/1068 + +process.stdin.emit('end'); diff --git a/cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js b/cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js new file mode 100644 index 000000000..95b9bffe6 --- /dev/null +++ b/cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js @@ -0,0 +1,74 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 18.12.1 +// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually. + +// Flags: --expose-internals +'use strict'; + +// const common = require('../common'); +const tty = require('tty'); +// const { internalBinding } = require('internal/test/binding'); +// const { +// UV_EBADF, +// UV_EINVAL +// } = internalBinding('uv'); +const assert = require('assert'); + +assert.throws( + () => new tty.WriteStream(-1), + { + code: 'ERR_INVALID_FD', + name: 'RangeError', + message: '"fd" must be a positive integer: -1' + } +); + +// { +// const info = { +// code: common.isWindows ? 'EBADF' : 'EINVAL', +// message: common.isWindows ? 'bad file descriptor' : 'invalid argument', +// errno: common.isWindows ? UV_EBADF : UV_EINVAL, +// syscall: 'uv_tty_init' +// }; + +// const suffix = common.isWindows ? +// 'EBADF (bad file descriptor)' : 'EINVAL (invalid argument)'; +// const message = `TTY initialization failed: uv_tty_init returned ${suffix}`; + +// assert.throws( +// () => { +// common.runWithInvalidFD((fd) => { +// new tty.WriteStream(fd); +// }); +// }, { +// code: 'ERR_TTY_INIT_FAILED', +// name: 'SystemError', +// message, +// info +// } +// ); + +// assert.throws( +// () => { +// common.runWithInvalidFD((fd) => { +// new tty.ReadStream(fd); +// }); +// }, { +// code: 'ERR_TTY_INIT_FAILED', +// name: 'SystemError', +// message, +// info +// }); +// } + +assert.throws( + () => new tty.ReadStream(-1), + { + code: 'ERR_INVALID_FD', + name: 'RangeError', + message: '"fd" must be a positive integer: -1' + } +); -- cgit v1.2.3