Skip to content

Commit 3bf5728

Browse files
committed
Unify baseline generation and verification
1 parent 342f0bb commit 3bf5728

File tree

3 files changed

+40
-49
lines changed

3 files changed

+40
-49
lines changed

tests/build.ts

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as vt from 'vscode-textmate/release/main';
2-
import fs = require('fs');
32
import path = require('path');
43

54
const tsGrammarFileName = "TypeScript.tmLanguage"
@@ -87,7 +86,8 @@ function getBaseline(grammar: Grammar, outputLines: string[]) {
8786
return grammarInfo + outputLines.join('\n');
8887
}
8988

90-
function getScopesAtMarkers(text: string, grammar: vt.IGrammar): { markerScopes: string, wholeBaseline: string } {
89+
export function generateScopes(text: string, parsedFileName: path.ParsedPath): { markerScopes: string, wholeBaseline: string } {
90+
const grammar = parsedFileName.ext === '.tsx' ? tsReactGrammar : tsGrammar;
9191
const oriLines = text.split('\n');
9292

9393
let mainGrammar = initGrammar(grammar);
@@ -155,35 +155,4 @@ function writeTokenLine(token: vt.IToken, preTextForToken: string, postTextForTo
155155
}
156156
outputLines.push(startingSpaces + locatingString);
157157
outputLines.push(startingSpaces + preTextForToken + token.scopes.join(' ') + postTextForToken);
158-
}
159-
160-
const generatedFolder = "generated";
161-
162-
function ensureCleanGeneratedFolder() {
163-
if (fs.existsSync(generatedFolder)) {
164-
for (const fileName of fs.readdirSync(generatedFolder)) {
165-
fs.unlinkSync(path.join(generatedFolder, fileName));
166-
}
167-
fs.rmdirSync(generatedFolder);
168-
}
169-
fs.mkdirSync(generatedFolder);
170-
}
171-
172-
// Ensure generated folder
173-
ensureCleanGeneratedFolder();
174-
175-
// Generate the new baselines
176-
for (var fileName of fs.readdirSync('cases')) {
177-
const text = fs.readFileSync(path.join('./cases', fileName), 'utf8');
178-
const parsedFileName = path.parse(fileName);
179-
const grammar = parsedFileName.ext === '.tsx' ? tsReactGrammar : tsGrammar;
180-
181-
const outputFileName = path.join(generatedFolder, parsedFileName.name + '.txt');
182-
const { markerScopes, wholeBaseline } = getScopesAtMarkers(text, grammar);
183-
if (markerScopes) {
184-
fs.writeFileSync(outputFileName, markerScopes, "utf8");
185-
}
186-
187-
const outputBaselineName = path.join(generatedFolder, parsedFileName.name + '.baseline.txt');
188-
fs.writeFileSync(outputBaselineName, wholeBaseline, "utf8");
189-
}
158+
}

tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "",
66
"main": "test.ts",
77
"scripts": {
8-
"pretest": "node ../build/build.js && tsc && node ./build.js",
8+
"pretest": "node ../build/build.js && tsc",
99
"test": "mocha test.js"
1010
},
1111
"dependencies": {

tests/test.ts

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,48 @@
11
import fs = require('fs');
2+
import path = require('path');
23
import chai = require('chai');
4+
import build = require('./build');
35

4-
function getFileText(file: string) {
5-
return fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : undefined;
6+
const generatedFolder = "generated";
7+
const baselineFolder = "baselines";
8+
9+
function ensureCleanGeneratedFolder() {
10+
if (fs.existsSync(generatedFolder)) {
11+
for (const fileName of fs.readdirSync(generatedFolder)) {
12+
fs.unlinkSync(path.join(generatedFolder, fileName));
13+
}
14+
fs.rmdirSync(generatedFolder);
15+
}
16+
fs.mkdirSync(generatedFolder);
617
}
718

8-
describe("Compare generated with baselines", () => {
9-
for (var file of fs.readdirSync('generated')) {
10-
var generatedText = getFileText('generated/' + file);
11-
var baselinesText = getFileText('baselines/' + file);
19+
// Ensure generated folder
20+
ensureCleanGeneratedFolder();
1221

13-
addTestCase(file, generatedText, baselinesText);
14-
}
15-
})
22+
// Generate the new baselines
23+
for (const fileName of fs.readdirSync('cases')) {
24+
describe("Generating baseline for " + fileName, () => {
25+
const text = fs.readFileSync(path.join('./cases', fileName), 'utf8');
26+
const parsedFileName = path.parse(fileName);
27+
const { markerScopes, wholeBaseline } = build.generateScopes(text, parsedFileName);
28+
if (markerScopes) {
29+
addTestCase(parsedFileName.name + '.txt', markerScopes);
30+
}
31+
addTestCase(parsedFileName.name + '.baseline.txt', wholeBaseline);
32+
});
33+
}
34+
35+
function addTestCase(file: string, generatedText: string) {
36+
const generatedFileName = path.join(generatedFolder, file);
37+
fs.writeFileSync(generatedFileName, generatedText, "utf8");
1638

17-
function addTestCase(file: string, generatedText: string, baselinesText: string) {
18-
it('Comparing ' + file, () => {
19-
if (baselinesText === undefined) {
20-
chai.assert(false, "Extra generated baseline");
39+
it('Comparing generated' + file, () => {
40+
const baselineFile = path.join(baselineFolder, file);
41+
if (fs.existsSync(baselineFile)) {
42+
chai.assert.equal(generatedText, fs.readFileSync(baselineFile, 'utf8'), "Expected baselines to match");
2143
}
2244
else {
23-
chai.assert.equal(generatedText, baselinesText, "Expected baselines to match");
45+
chai.assert(false, "New generated baseline");
2446
}
2547
});
2648
}

0 commit comments

Comments
 (0)