@@ -2,6 +2,8 @@ var fs = require('fs');
2
2
var safe = require ( 'safe-regex' ) ;
3
3
var assert = require ( 'assert' ) ;
4
4
var requirejs = require ( 'requirejs' ) ;
5
+ var parseJS = require ( '@babel/parser' ) . parse ;
6
+ var traverse = require ( '@babel/traverse' ) . default ;
5
7
var UAParser = require ( './../src/ua-parser' ) ;
6
8
var browsers = require ( './browser-test.json' ) ;
7
9
var cpus = require ( './cpu-test.json' ) ;
@@ -137,12 +139,19 @@ describe('Testing regexes', function () {
137
139
138
140
var regexes ;
139
141
140
- // todo: use AST-based instead of grep
141
- before ( 'Read main js file' , function ( done ) {
142
- fs . readFile ( 'src/ua-parser.js' , 'utf8' , function ( err , data ) {
143
- regexes = data . match ( / ( \/ .+ \/ [ i g ] + ) (? = [ , \s \n ] ) / g) ;
144
- done ( ) ;
142
+ before ( 'Read main js file' , function ( ) {
143
+ var code = fs . readFileSync ( 'src/ua-parser.js' , 'utf8' ) . toString ( ) ;
144
+ var ast = parseJS ( code , { sourceType : "script" } ) ;
145
+ regexes = [ ] ;
146
+ traverse ( ast , {
147
+ RegExpLiteral : ( path ) => {
148
+ regexes . push ( path . node . pattern ) ;
149
+ }
145
150
} ) ;
151
+
152
+ if ( regexes . length === 0 ) {
153
+ throw new Error ( "Regexes cannot be empty!" ) ;
154
+ }
146
155
} ) ;
147
156
148
157
describe ( 'Begin testing' , function ( ) {
@@ -156,4 +165,4 @@ describe('Testing regexes', function () {
156
165
} ) ;
157
166
} ) ;
158
167
} ) ;
159
- } )
168
+ } ) ;
0 commit comments