-
Notifications
You must be signed in to change notification settings - Fork 11
/
run_test262.js
152 lines (145 loc) · 14.5 KB
/
run_test262.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
"use strict";
// copy/pasted, and adjusted, from: https://github.com/acornjs/acorn-class-fields/blob/master/run_test262.js
const path = require("path");
const run = require("test262-parser-runner");
const acorn = require("acorn");
const Parser = acorn.Parser.extend(require(".").importAttributes);
const unsupportedFeatures = [];
const implementedFeatures = ["import-attributes", "json-modules"];
const whitelist = [
// 10 invalid programs did not produce a parsing error (without a corresponding entry in the whitelist file):
"language/import/import-attributes/json-invalid.js (default)",
"language/import/import-attributes/json-invalid.js (strict mode)",
"language/import/import-attributes/json-named-bindings.js (default)",
"language/import/import-attributes/json-named-bindings.js (strict mode)",
"language/module-code/import-attributes/early-dup-attribute-key-export.js (default)",
"language/module-code/import-attributes/early-dup-attribute-key-export.js (strict mode)",
"language/module-code/import-attributes/early-dup-attribute-key-import-nobinding.js (default)",
"language/module-code/import-attributes/early-dup-attribute-key-import-nobinding.js (strict mode)",
"language/module-code/import-attributes/early-dup-attribute-key-import-withbinding.js (default)",
"language/module-code/import-attributes/early-dup-attribute-key-import-withbinding.js (strict mode)",
// 113 valid programs produced a parsing error (without a corresponding entry in the whitelist file):
"language/import/import-assertions/json-extensibility-array.js (default)",
"language/import/import-assertions/json-extensibility-array.js (strict mode)",
"language/import/import-assertions/json-extensibility-object.js (default)",
"language/import/import-assertions/json-extensibility-object.js (strict mode)",
"language/import/import-assertions/json-idempotency.js (default)",
"language/import/import-assertions/json-idempotency.js (strict mode)",
"language/import/import-assertions/json-value-array.js (default)",
"language/import/import-assertions/json-value-array.js (strict mode)",
"language/import/import-assertions/json-value-boolean.js (default)",
"language/import/import-assertions/json-value-boolean.js (strict mode)",
"language/import/import-assertions/json-value-null.js (default)",
"language/import/import-assertions/json-value-null.js (strict mode)",
"language/import/import-assertions/json-value-number.js (default)",
"language/import/import-assertions/json-value-number.js (strict mode)",
"language/import/import-assertions/json-value-object.js (default)",
"language/import/import-assertions/json-value-object.js (strict mode)",
"language/import/import-assertions/json-value-string.js (default)",
"language/import/import-assertions/json-value-string.js (strict mode)",
"language/import/import-assertions/json-via-namespace.js (default)",
"language/import/import-assertions/json-via-namespace.js (strict mode)",
"language/module-code/import-attributes/allow-nlt-before-with.js (default)",
"language/module-code/import-attributes/import-attribute-newlines.js (default)",
"language/module-code/import-attributes/import-attribute-newlines.js (strict mode)",
"language/expressions/dynamic-import/import-attributes/2nd-param-trailing-comma-fulfill.js (default)",
"language/expressions/dynamic-import/import-attributes/2nd-param-trailing-comma-fulfill.js (strict mode)",
"language/expressions/dynamic-import/import-attributes/2nd-param-trailing-comma-reject.js (default)",
"language/expressions/dynamic-import/import-attributes/2nd-param-trailing-comma-reject.js (strict mode)",
"language/expressions/dynamic-import/import-attributes/trailing-comma-fulfill.js (default)",
"language/expressions/dynamic-import/import-attributes/trailing-comma-fulfill.js (strict mode)",
"language/expressions/dynamic-import/import-attributes/trailing-comma-reject.js (default)",
"language/expressions/dynamic-import/import-attributes/trailing-comma-reject.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-arrow-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-await-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-block-labeled-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-do-while-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-braceless-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-else-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-else-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-function-return-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-braceless-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-if-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-if-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-while-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-while-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-while-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-while-import-attributes-trailing-comma-second.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/nested-with-expression-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-expression-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/nested-with-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-import-attributes-trailing-comma-first.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-import-attributes-trailing-comma-first.js (strict mode)",
"language/expressions/dynamic-import/syntax/valid/top-level-import-attributes-trailing-comma-second.js (default)",
"language/expressions/dynamic-import/syntax/valid/top-level-import-attributes-trailing-comma-second.js (strict mode)",
];
run(
(content, options) =>
Parser.parse(content, { sourceType: options.sourceType, ecmaVersion: 13 }),
{
testsDirectory: path.dirname(require.resolve("test262/package.json")),
skip: (test) =>
!test.attrs.features ||
!implementedFeatures.some((f) => test.attrs.features.includes(f)) ||
unsupportedFeatures.some((f) => test.attrs.features.includes(f)),
whitelist,
}
);