Fix #861 and introduce tests for errors

This commit is contained in:
Luke Page
2012-08-11 12:00:15 +01:00
parent be8a23923b
commit b809e8eeb2
4 changed files with 33 additions and 0 deletions

View File

@@ -780,6 +780,8 @@ less.Parser = function Parser(env) {
var elements = [], e, c, args = [], arg, index = i, s = input.charAt(i), name, value, important = false;
if (s !== '.' && s !== '#') { return }
save(); // stop us absorbing part of an invalid selector
while (e = $(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)) {
elements.push(new(tree.Element)(c, e, i));
@@ -818,6 +820,8 @@ less.Parser = function Parser(env) {
if (elements.length > 0 && ($(';') || peek('}'))) {
return new(tree.mixin.Call)(elements, args, index, env.filename, important);
}
restore();
},
//

View File

@@ -44,6 +44,33 @@ fs.readdirSync('test/less').forEach(function (file) {
});
});
fs.readdirSync('test/less/errors').forEach(function (file) {
if (! /\.less/.test(file)) { return }
toCSS('test/less/errors/' + file, function (err, less) {
var name = path.basename(file, '.less');
fs.readFile(path.join('test/less/errors', name) + '.txt', 'utf-8', function (e, expectedErr) {
sys.print("- error/" + name + ": ")
if (err.message === expectedErr) { sys.print(stylize('OK', 'green')) }
else if (!err) {
sys.print(stylize("No Error", 'red'));
} else {
sys.print(stylize("FAIL", 'yellow') + '\n');
require('diff').diffLines(expectedErr, err.message).forEach(function(item) {
if(item.added || item.removed) {
sys.print(stylize(item.value, item.added ? 'green' : 'red'));
} else {
sys.print(item.value);
}
})
}
sys.puts("");
});
});
});
function toCSS(path, callback) {
var tree, css;
fs.readFile(path, 'utf-8', function (e, str) {

View File

@@ -0,0 +1 @@
#gaga /* Comment */ span { color: red }

View File

@@ -0,0 +1 @@
Syntax Error on line 1