Skip to content

Commit 21ecad5

Browse files
committed
assert when selectors are missing
closes reworkcss#50
1 parent c5d5790 commit 21ecad5

File tree

5 files changed

+19
-16
lines changed

5 files changed

+19
-16
lines changed

History.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- `filename` is now the optional filename
77
* changed default `options.position` value to `true`
88
* remove comments from properties and values
9+
* asserts when selectors are missing
910

1011
1.7.0 / 2013-12-21
1112
==================

index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ module.exports = function(css, options){
109109
var rules = [];
110110
whitespace();
111111
comments(rules);
112-
while (css.charAt(0) != '}' && (node = atrule() || rule())) {
112+
while (css.length && css.charAt(0) != '}' && (node = atrule() || rule())) {
113113
rules.push(node);
114114
comments(rules);
115115
}
@@ -483,7 +483,7 @@ module.exports = function(css, options){
483483
var pos = position();
484484
var sel = selector();
485485

486-
if (!sel) return;
486+
if (!sel) return error('selector missing');
487487
comments();
488488

489489
return pos({

test/cases/invalid.css

-3
This file was deleted.

test/cases/invalid.json

-6
This file was deleted.

test/css-parse.js

+16-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
* Module dependencies.
44
*/
55

6-
var parse = require('..')
7-
, fs = require('fs')
8-
, path = require('path')
9-
, read = fs.readFileSync
10-
, readdir = fs.readdirSync;
6+
var parse = require('..');
7+
var fs = require('fs');
8+
var path = require('path');
9+
var read = fs.readFileSync;
10+
var readdir = fs.readdirSync;
11+
var assert = require('assert');
1112

1213
describe('parse(str)', function(){
1314
readdir('test/cases').forEach(function(file){
@@ -34,4 +35,14 @@ describe('parse(str)', function(){
3435
position.filename.should.equal('booty.css');
3536
position.source.should.equal(css);
3637
});
38+
39+
it('should throw when a selector is missing', function(){
40+
assert.throws(function(){
41+
parse('{size: large}');
42+
});
43+
44+
assert.throws(function(){
45+
parse('b { color: red; }\n{ color: green; }\na {color: blue; }');
46+
});
47+
})
3748
})

0 commit comments

Comments
 (0)