mirror of
https://github.com/less/less.js.git
synced 2026-01-22 21:58:14 -05:00
Fix #861 and introduce tests for errors
This commit is contained in:
@@ -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();
|
||||
},
|
||||
|
||||
//
|
||||
|
||||
@@ -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) {
|
||||
|
||||
1
test/less/errors/comment-in-selector.less
Normal file
1
test/less/errors/comment-in-selector.less
Normal file
@@ -0,0 +1 @@
|
||||
#gaga /* Comment */ span { color: red }
|
||||
1
test/less/errors/comment-in-selector.txt
Normal file
1
test/less/errors/comment-in-selector.txt
Normal file
@@ -0,0 +1 @@
|
||||
Syntax Error on line 1
|
||||
Reference in New Issue
Block a user