Skip to content

Commit a29620d

Browse files
committed
Add '--add-syntax' flag to specify additional grammars for tests
1 parent eb11e4c commit a29620d

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

bin/syntaxdev.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,23 @@ testCli.addArgument([ '--tests' ], {
2828
required: true
2929
});
3030

31-
3231
testCli.addArgument([ '--no-color' ], {
3332
help: "Don't use colored output",
3433
action: 'storeTrue',
3534
default: false
3635
});
3736

38-
3937
testCli.addArgument([ '--syntax' ], {
4038
help: 'Syntax file in YAML format, ex: "--syntax FooLang.YAML-tmLanguage"',
4139
required: true
4240
});
4341

42+
testCli.addArgument([ '--add-syntax' ], {
43+
help: 'Additional syntax files in YAML format',
44+
nargs: '*',
45+
action: 'append'
46+
});
47+
4448

4549
var buildCsonCli = sub.addParser('build-cson');
4650

@@ -76,7 +80,9 @@ function main() {
7680
_.chain(options.tests).flatten().uniq().sort().value(),
7781
options.syntax,
7882
{
79-
no_color: options.no_color
83+
no_color: options.no_color,
84+
add_syntaxes: _.chain(options.add_syntax).flatten().
85+
uniq().sort().value()
8086
}
8187
);
8288
} else if (options.command == 'build-cson') {

index.js

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,31 @@ var chalk = require("chalk"),
1212
plist = require("plist");
1313

1414

15-
function compileGrammar(grammarFile) {
16-
var tmp = temp.openSync();
15+
function compileGrammar(grammarFile, additionalGrammars) {
16+
function _compile(filename, registry) {
17+
var tmp = temp.openSync();
1718

18-
try {
19-
var yamlSource = fs.readFileSync(grammarFile, 'utf8'),
20-
yamlSchema = yaml.safeLoad(yamlSource);
19+
try {
20+
var yamlSource = fs.readFileSync(filename, 'utf8'),
21+
yamlSchema = yaml.safeLoad(yamlSource);
2122

22-
fs.writeSync(tmp.fd, JSON.stringify(yamlSchema));
23-
fs.closeSync(tmp.fd);
23+
fs.writeSync(tmp.fd, JSON.stringify(yamlSchema));
24+
fs.closeSync(tmp.fd);
2425

25-
var registry = new mate.GrammarRegistry,
26-
grammar = registry.loadGrammarSync(tmp.path);
26+
return registry.loadGrammarSync(tmp.path);
27+
}
28+
finally {
29+
temp.cleanupSync();
30+
}
2731
}
28-
finally {
29-
temp.cleanupSync();
32+
33+
var registry = new mate.GrammarRegistry,
34+
grammar = _compile(grammarFile, registry);
35+
36+
if (additionalGrammars) {
37+
for (var i = 0; i < additionalGrammars.length; i++) {
38+
_compile(additionalGrammars[i], registry);
39+
}
3040
}
3141

3242
return grammar;
@@ -171,7 +181,7 @@ function testFile(file, grammar, options) {
171181
function test(testFiles, grammarFile, options) {
172182
options = options || {};
173183

174-
var grammar = compileGrammar(grammarFile),
184+
var grammar = compileGrammar(grammarFile, options.add_syntaxes),
175185
sep = '--------',
176186
passed = 0,
177187
failed = 0,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "syntaxdev",
3-
"version": "0.0.5",
3+
"version": "0.0.6",
44
"description": "Unit testing framework for TextMate/Sublime/Atom syntaxes.",
55
"main": "index.js",
66
"author": "Yury Selivanov <yury@magic.io>",

0 commit comments

Comments
 (0)