deno.land / std@0.166.0 / node / _tools / test / parallel / test-whatwg-url-custom-parsing.js

test-whatwg-url-custom-parsing.js
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// deno-fmt-ignore-file// deno-lint-ignore-file
// Copyright Joyent and Node contributors. All rights reserved. MIT license.// Taken from Node 18.12.0// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
'use strict';
// Tests below are not from WPT.
const common = require('../common');if (!common.hasIntl) { // A handful of the tests fail when ICU is not included. common.skip('missing Intl');}
const assert = require('assert');const fixtures = require('../common/fixtures');
const tests = require( fixtures.path('wpt', 'url', 'resources', 'urltestdata.json'));
const originalFailures = tests.filter((test) => test.failure);
const typeFailures = [ { input: '' }, { input: 'test' }, { input: undefined }, { input: 0 }, { input: true }, { input: false }, { input: null }, { input: new Date() }, { input: new RegExp() }, { input: 'test', base: null }, { input: 'http://nodejs.org', base: null }, { input: () => {} },];
// See https://github.com/w3c/web-platform-tests/pull/10955// > If `failure` is true, parsing `about:blank` against `base`// > must give failure. This tests that the logic for converting// > base URLs into strings properly fails the whole parsing// > algorithm if the base URL cannot be parsed.const aboutBlankFailures = originalFailures .map((test) => ({ input: 'about:blank', base: test.input, failure: true }));
const failureTests = originalFailures .concat(typeFailures) .concat(aboutBlankFailures);
const expectedError = { code: 'ERR_INVALID_URL', name: 'TypeError' };
for (const test of failureTests) { assert.throws( () => new URL(test.input, test.base), (error) => { assert.throws(() => { throw error; }, expectedError); assert.strictEqual(`${error}`, 'TypeError [ERR_INVALID_URL]: Invalid URL'); assert.strictEqual(error.message, 'Invalid URL'); return true; });}
const additional_tests = require(fixtures.path('url-tests-additional.js'));
for (const test of additional_tests) { const url = new URL(test.url); if (test.href) assert.strictEqual(url.href, test.href); if (test.origin) assert.strictEqual(url.origin, test.origin); if (test.protocol) assert.strictEqual(url.protocol, test.protocol); if (test.username) assert.strictEqual(url.username, test.username); if (test.password) assert.strictEqual(url.password, test.password); if (test.hostname) assert.strictEqual(url.hostname, test.hostname); if (test.host) assert.strictEqual(url.host, test.host); if (test.port !== undefined) assert.strictEqual(url.port, test.port); if (test.pathname) assert.strictEqual(url.pathname, test.pathname); if (test.search) assert.strictEqual(url.search, test.search); if (test.hash) assert.strictEqual(url.hash, test.hash);}
std

Version Info

Tagged at
a year ago