mirror of
https://github.com/denoland/deno.git
synced 2024-11-29 16:30:56 -05:00
f5e46c9bf2
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.
111 lines
3 KiB
JavaScript
111 lines
3 KiB
JavaScript
// 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
|
|
|
|
'use strict';
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const { URL, URLSearchParams } = require('url');
|
|
|
|
[
|
|
{ name: 'toString' },
|
|
{ name: 'toJSON' },
|
|
// Deno's URL doesn't support nodejs custom inspect
|
|
// { name: Symbol.for('nodejs.util.inspect.custom') },
|
|
].forEach(({ name }) => {
|
|
testMethod(URL.prototype, name);
|
|
});
|
|
|
|
[
|
|
{ name: 'href' },
|
|
{ name: 'protocol' },
|
|
{ name: 'username' },
|
|
{ name: 'password' },
|
|
{ name: 'host' },
|
|
{ name: 'hostname' },
|
|
{ name: 'port' },
|
|
{ name: 'pathname' },
|
|
{ name: 'search' },
|
|
{ name: 'hash' },
|
|
{ name: 'origin', readonly: true },
|
|
{ name: 'searchParams', readonly: true },
|
|
].forEach(({ name, readonly = false }) => {
|
|
testAccessor(URL.prototype, name, readonly);
|
|
});
|
|
|
|
[
|
|
{ name: 'append' },
|
|
{ name: 'delete' },
|
|
{ name: 'get' },
|
|
{ name: 'getAll' },
|
|
{ name: 'has' },
|
|
{ name: 'set' },
|
|
{ name: 'sort' },
|
|
{ name: 'entries' },
|
|
{ name: 'forEach' },
|
|
{ name: 'keys' },
|
|
{ name: 'values' },
|
|
{ name: 'toString' },
|
|
{ name: Symbol.iterator, methodName: 'entries' },
|
|
// Deno's URL doesn't support nodejs custom inspect
|
|
// { name: Symbol.for('nodejs.util.inspect.custom') },
|
|
].forEach(({ name, methodName }) => {
|
|
testMethod(URLSearchParams.prototype, name, methodName);
|
|
});
|
|
|
|
function stringifyName(name) {
|
|
if (typeof name === 'symbol') {
|
|
const { description } = name;
|
|
if (description === undefined) {
|
|
return '';
|
|
}
|
|
return `[${description}]`;
|
|
}
|
|
|
|
return name;
|
|
}
|
|
|
|
function testMethod(target, name, methodName = stringifyName(name)) {
|
|
const desc = Object.getOwnPropertyDescriptor(target, name);
|
|
assert.notStrictEqual(desc, undefined);
|
|
assert.strictEqual(desc.enumerable, typeof name === 'string');
|
|
|
|
const { value } = desc;
|
|
assert.strictEqual(typeof value, 'function');
|
|
assert.strictEqual(value.name, methodName);
|
|
/* This can't pass with Deno's URL/URLSearchParams
|
|
assert.strictEqual(
|
|
Object.prototype.hasOwnProperty.call(value, 'prototype'),
|
|
false,
|
|
);
|
|
*/
|
|
}
|
|
|
|
function testAccessor(target, name, readonly = false) {
|
|
const desc = Object.getOwnPropertyDescriptor(target, name);
|
|
assert.notStrictEqual(desc, undefined);
|
|
assert.strictEqual(desc.enumerable, typeof name === 'string');
|
|
|
|
const methodName = stringifyName(name);
|
|
const { get, set } = desc;
|
|
assert.strictEqual(typeof get, 'function');
|
|
assert.strictEqual(get.name, `get ${methodName}`);
|
|
assert.strictEqual(
|
|
Object.prototype.hasOwnProperty.call(get, 'prototype'),
|
|
false,
|
|
);
|
|
|
|
if (readonly) {
|
|
assert.strictEqual(set, undefined);
|
|
} else {
|
|
assert.strictEqual(typeof set, 'function');
|
|
assert.strictEqual(set.name, `set ${methodName}`);
|
|
assert.strictEqual(
|
|
Object.prototype.hasOwnProperty.call(set, 'prototype'),
|
|
false,
|
|
);
|
|
}
|
|
}
|