@@ -173,5 +173,55 @@ describe('gulp-csslint', function() {
173173 stream . write ( file ) ;
174174 stream . end ( ) ;
175175 } ) ;
176+
177+ it ( 'should report added rule linting' , function ( done ) {
178+ var a = 0 ;
179+
180+ var file = getFile ( 'fixtures/addRule.css' ) ;
181+ cssLintPlugin . addRule ( {
182+ id : 'oocss' ,
183+ name : 'OOCSS' ,
184+ desc : 'Class names must follow pattern' ,
185+ browsers : 'All' ,
186+
187+ //initialization
188+ init : function ( parser , reporter ) {
189+ 'use strict' ;
190+ var rule = this ;
191+ parser . addListener ( 'startrule' , function ( event ) {
192+ var line = event . line ,
193+ col = event . col ;
194+
195+ for ( var i = 0 , len = event . selectors . length ; i < len ; i ++ ) {
196+ var selectors = event . selectors [ i ] . text . split ( / (? = \. ) / ) ;
197+ for ( var s = 0 , l = selectors . length ; s < l ; s ++ ) {
198+ var selector = selectors [ s ] . trim ( ) ;
199+ if ( selector . charAt ( 0 ) !== '.' ) {
200+ return ;
201+ }
202+ if ( ! selector . match ( / ^ \. ( _ ) ? ( o | c | u | i s | h a s | j s | q a ) - [ a - z 0 - 9 ] + $ / ) ) {
203+ reporter . warn ( 'Bad naming: ' + selector , line , col , rule ) ;
204+ }
205+ }
206+ }
207+ } ) ;
208+ }
209+ } ) ;
210+
211+ var stream = cssLintPlugin ( ) ;
212+ stream . on ( 'data' , function ( newFile ) {
213+ ++ a ;
214+ should . exist ( newFile . csslint . success ) ;
215+ newFile . csslint . success . should . equal ( false ) ;
216+ should . exist ( newFile . csslint . results ) ;
217+ } ) ;
218+ stream . once ( 'end' , function ( ) {
219+ a . should . equal ( 1 ) ;
220+ done ( ) ;
221+ } ) ;
222+
223+ stream . write ( file ) ;
224+ stream . end ( ) ;
225+ } ) ;
176226 } ) ;
177227} ) ;
0 commit comments