/
bundle.js
89 lines (75 loc) · 2.51 KB
/
bundle.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
"use strict";
const path = require("path");
const fs = require("fs");
const fastGlob = require("fast-glob");
const { projectRoot } = require("../env.js");
const createSandBox = require("../../config/utils/create-sandbox.js");
const coreOptions = require("../../../src/main/core-options.js");
const codeSamples =
require("../../../website/playground/codeSamples.js").default;
const parserNames = coreOptions.options.parser.choices.map(
({ value }) => value
);
const distDirectory = path.join(projectRoot, "dist");
// Files including U+FFEE can't load in Chrome Extension
// `prettier-chrome-extension` https://github.com/prettier/prettier-chrome-extension
// details https://github.com/prettier/prettier/pull/8534
test("code", async () => {
const files = await fastGlob(["**/*"], {
cwd: distDirectory,
absolute: true,
});
for (const file of files) {
const text = await fs.promises.readFile(file, "utf8");
expect(text.includes("\ufffe")).toBe(false);
}
});
describe("standalone", () => {
const standalone = require(path.join(distDirectory, "standalone.js"));
const plugins = fastGlob
.sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
.map((file) => require(file));
const esmStandalone = require(path.join(
distDirectory,
"esm/standalone.mjs"
)).default;
const esmPlugins = fastGlob
.sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
.map((file) => require(file).default);
for (const parser of parserNames) {
test(parser, () => {
const input = codeSamples(parser);
const umdOutput = standalone.format(input, {
parser,
plugins,
});
expect(typeof input).toBe("string");
expect(typeof umdOutput).toBe("string");
expect(umdOutput).not.toBe(input);
const esmOutput = esmStandalone.format(input, {
parser,
plugins: esmPlugins,
});
expect(esmOutput).toBe(umdOutput);
});
}
});
test("global objects", async () => {
const files = await fastGlob(["standalone.js", "parser-*.js"], {
cwd: distDirectory,
absolute: true,
});
const allowedGlobalObjects = new Set(["prettier", "prettierPlugins"]);
const getGlobalObjects = (file) => {
const sandbox = createSandBox({ files: [file] });
return Object.fromEntries(
Object.entries(sandbox).filter(
([property]) => !allowedGlobalObjects.has(property)
)
);
};
for (const file of files) {
const globalObjects = getGlobalObjects(file);
expect(globalObjects).toStrictEqual({});
}
});