-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
50 lines (40 loc) · 1.14 KB
/
index.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
const fs = require("fs");
const peggy = require("peggy");
const fileIndex = JSON.parse(
fs.readFileSync("./examples/index.json", { encoding: "utf-8" })
);
const parser = peggy.generate(
fs.readFileSync("bicep.pegjs", { encoding: "utf-8" })
);
const results = [];
let failures = 0;
fileIndex.forEach((mainFile) => {
const dirPath = mainFile.filePath.substring(
0,
mainFile.filePath.lastIndexOf("/") + 1
);
fs.readdirSync(`./examples/${dirPath}`).forEach((fileName) => {
if (fileName.endsWith(".bicep")) {
const testContent = fs.readFileSync(`./examples/${dirPath}${fileName}`, {
encoding: "utf-8",
});
let passed = true;
try {
parser.parse(testContent);
} catch (e) {
passed = false;
failures++;
}
results.push({ file: `./examples/${dirPath}${fileName}`, passed });
// if (!passed)
console.log(
`| [${dirPath}${fileName}](./examples/${dirPath}${fileName}) | ${
passed ? "🟢 pass" : "🔴 fail"
} |`
);
}
});
});
console.log(
`${results.length - failures}/${results.length} files successfully parsed`
);