diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-02-10 13:22:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-10 20:22:13 +0000 |
commit | f5e46c9bf2f50d66a953fa133161fc829cecff06 (patch) | |
tree | 8faf2f5831c1c7b11d842cd9908d141082c869a5 /tests/node_compat/test/parallel/test-util-inspect-proxy.js | |
parent | d2477f780630a812bfd65e3987b70c0d309385bb (diff) |
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests ->
tests, and updates of relative paths for files.
This is the first step towards aggregate all of the integration test
files under tests/, which will lead to a set of integration tests that
can run without the CLI binary being built.
While we could leave these tests under `cli`, it would require us to
keep a more complex directory structure for the various test runners. In
addition, we have a lot of complexity to ignore various test files in
the `cli` project itself (cargo publish exclusion rules, autotests =
false, etc).
And finally, the `tests/` folder will eventually house the `test_ffi`,
`test_napi` and other testing code, reducing the size of the root repo
directory.
For easier review, the extremely large and noisy "move" is in the first
commit (with no changes -- just a move), while the remainder of the
changes to actual files is in the second commit.
Diffstat (limited to 'tests/node_compat/test/parallel/test-util-inspect-proxy.js')
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inspect-proxy.js | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/tests/node_compat/test/parallel/test-util-inspect-proxy.js b/tests/node_compat/test/parallel/test-util-inspect-proxy.js new file mode 100644 index 000000000..ef78ab07a --- /dev/null +++ b/tests/node_compat/test/parallel/test-util-inspect-proxy.js @@ -0,0 +1,172 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 16.13.0 +// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually + +// Flags: --expose-internals +'use strict'; + +require('../common'); +const assert = require('assert'); +const util = require('util'); +// TODO(wafuwafu13): Implement 'internal/test/binding' +// const { internalBinding } = require('internal/test/binding'); +// const processUtil = internalBinding('util'); +const opts = { showProxy: true }; + +// let proxyObj; +// let called = false; +// const target = { +// [util.inspect.custom](depth, { showProxy }) { +// if (showProxy === false) { +// called = true; +// if (proxyObj !== this) { +// throw new Error('Failed'); +// } +// } +// return [1, 2, 3]; +// } +// }; + +// // TODO(wafuwafu13): Fix Uncaught Error +// const handler = { +// getPrototypeOf() { throw new Error('getPrototypeOf'); }, +// setPrototypeOf() { throw new Error('setPrototypeOf'); }, +// isExtensible() { throw new Error('isExtensible'); }, +// preventExtensions() { throw new Error('preventExtensions'); }, +// getOwnPropertyDescriptor() { throw new Error('getOwnPropertyDescriptor'); }, +// defineProperty() { throw new Error('defineProperty'); }, +// has() { throw new Error('has'); }, +// get() { throw new Error('get'); }, +// set() { throw new Error('set'); }, +// deleteProperty() { throw new Error('deleteProperty'); }, +// ownKeys() { throw new Error('ownKeys'); }, +// apply() { throw new Error('apply'); }, +// construct() { throw new Error('construct'); } +// }; +// proxyObj = new Proxy(target, handler); + +// // Inspecting the proxy should not actually walk it's properties +// util.inspect(proxyObj, opts); + +// // Make sure inspecting object does not trigger any proxy traps. +// util.format('%s', proxyObj); + +// TODO(wafuwafu13): Implement processUtil +// // getProxyDetails is an internal method, not intended for public use. +// // This is here to test that the internals are working correctly. +// let details = processUtil.getProxyDetails(proxyObj, true); +// assert.strictEqual(target, details[0]); +// assert.strictEqual(handler, details[1]); + +// details = processUtil.getProxyDetails(proxyObj); +// assert.strictEqual(target, details[0]); +// assert.strictEqual(handler, details[1]); + +// details = processUtil.getProxyDetails(proxyObj, false); +// assert.strictEqual(target, details); + +// assert.strictEqual( +// util.inspect(proxyObj, opts), +// 'Proxy [\n' + +// ' [ 1, 2, 3 ],\n' + +// ' {\n' + +// ' getPrototypeOf: [Function: getPrototypeOf],\n' + +// ' setPrototypeOf: [Function: setPrototypeOf],\n' + +// ' isExtensible: [Function: isExtensible],\n' + +// ' preventExtensions: [Function: preventExtensions],\n' + +// ' getOwnPropertyDescriptor: [Function: getOwnPropertyDescriptor],\n' + +// ' defineProperty: [Function: defineProperty],\n' + +// ' has: [Function: has],\n' + +// ' get: [Function: get],\n' + +// ' set: [Function: set],\n' + +// ' deleteProperty: [Function: deleteProperty],\n' + +// ' ownKeys: [Function: ownKeys],\n' + +// ' apply: [Function: apply],\n' + +// ' construct: [Function: construct]\n' + +// ' }\n' + +// ']' +// ); + +// TODO(wafuwafu13): Implement processUtil +// // Using getProxyDetails with non-proxy returns undefined +// assert.strictEqual(processUtil.getProxyDetails({}), undefined); + +// // Inspecting a proxy without the showProxy option set to true should not +// // trigger any proxy handlers. +// assert.strictEqual(util.inspect(proxyObj), '[ 1, 2, 3 ]'); +// assert(called); + +// Yo dawg, I heard you liked Proxy so I put a Proxy +// inside your Proxy that proxies your Proxy's Proxy. +const proxy1 = new Proxy({}, {}); +const proxy2 = new Proxy(proxy1, {}); +const proxy3 = new Proxy(proxy2, proxy1); +const proxy4 = new Proxy(proxy1, proxy2); +const proxy5 = new Proxy(proxy3, proxy4); +const proxy6 = new Proxy(proxy5, proxy5); +const expected0 = '{}'; +const expected1 = 'Proxy [ {}, {} ]'; +const expected2 = 'Proxy [ Proxy [ {}, {} ], {} ]'; +const expected3 = 'Proxy [ Proxy [ Proxy [ {}, {} ], {} ], Proxy [ {}, {} ] ]'; +const expected4 = 'Proxy [ Proxy [ {}, {} ], Proxy [ Proxy [ {}, {} ], {} ] ]'; +const expected5 = 'Proxy [\n ' + + 'Proxy [ Proxy [ Proxy [Array], {} ], Proxy [ {}, {} ] ],\n' + + ' Proxy [ Proxy [ {}, {} ], Proxy [ Proxy [Array], {} ] ]' + + '\n]'; +const expected6 = 'Proxy [\n' + + ' Proxy [\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ],\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ]\n' + + ' ],\n' + + ' Proxy [\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ],\n' + + ' Proxy [ Proxy [Array], Proxy [Array] ]\n' + + ' ]\n' + + ']'; +// assert.strictEqual( +// util.inspect(proxy1, { showProxy: 1, depth: null }), +// expected1); +// assert.strictEqual(util.inspect(proxy2, opts), expected2); +// assert.strictEqual(util.inspect(proxy3, opts), expected3); +// assert.strictEqual(util.inspect(proxy4, opts), expected4); +// assert.strictEqual(util.inspect(proxy5, opts), expected5); +// assert.strictEqual(util.inspect(proxy6, opts), expected6); +// assert.strictEqual(util.inspect(proxy1), expected0); +// assert.strictEqual(util.inspect(proxy2), expected0); +// assert.strictEqual(util.inspect(proxy3), expected0); +// assert.strictEqual(util.inspect(proxy4), expected0); +// assert.strictEqual(util.inspect(proxy5), expected0); +// assert.strictEqual(util.inspect(proxy6), expected0); + +// // Just for fun, let's create a Proxy using Arrays. +// const proxy7 = new Proxy([], []); +// const expected7 = 'Proxy [ [], [] ]'; +// assert.strictEqual(util.inspect(proxy7, opts), expected7); +// assert.strictEqual(util.inspect(proxy7), '[]'); + +// // Now we're just getting silly, right? +// const proxy8 = new Proxy(Date, []); +// const proxy9 = new Proxy(Date, String); +// const expected8 = 'Proxy [ [Function: Date], [] ]'; +// const expected9 = 'Proxy [ [Function: Date], [Function: String] ]'; +// assert.strictEqual(util.inspect(proxy8, opts), expected8); +// assert.strictEqual(util.inspect(proxy9, opts), expected9); +// assert.strictEqual(util.inspect(proxy8), '[Function: Date]'); +// assert.strictEqual(util.inspect(proxy9), '[Function: Date]'); + +// const proxy10 = new Proxy(() => {}, {}); +// const proxy11 = new Proxy(() => {}, { +// get() { +// return proxy11; +// }, +// apply() { +// return proxy11; +// } +// }); +// const expected10 = '[Function (anonymous)]'; +// const expected11 = '[Function (anonymous)]'; +// assert.strictEqual(util.inspect(proxy10), expected10); +// assert.strictEqual(util.inspect(proxy11), expected11); |