@@ -103,12 +103,12 @@ export class TestBrokerViewModel extends observable.Observable {
103
103
method : 'GET' ,
104
104
timeout : 3000 ,
105
105
} ) . then ( ( ) => {
106
- console . log ( 'NSUTR: found karma at ' + ip ) ;
107
- if ( ! foundKarma ) {
108
- foundKarma = true ;
109
- resolve ( ip ) ;
110
- }
111
- } , ( ) => undefined )
106
+ console . log ( 'NSUTR: found karma at ' + ip ) ;
107
+ if ( ! foundKarma ) {
108
+ foundKarma = true ;
109
+ resolve ( ip ) ;
110
+ }
111
+ } , ( ) => undefined )
112
112
} ) ;
113
113
Promise . all ( resolvers )
114
114
. then ( ( ) => {
@@ -231,7 +231,7 @@ export class TestBrokerViewModel extends observable.Observable {
231
231
return Promise . all ( scriptUrls . map ( ( url ) : Promise < IScriptInfo > => {
232
232
var appPrefix = `/base/${ config . options . appDirectoryRelativePath } /` ;
233
233
if ( url . startsWith ( appPrefix ) ) {
234
- var paramsStart = url . indexOf ( '?' ) ;
234
+ var paramsStart = url . lastIndexOf ( '?' ) ;
235
235
var relativePath = url . substring ( appPrefix . length , paramsStart ) ;
236
236
return Promise . resolve ( {
237
237
url : url ,
@@ -260,12 +260,21 @@ export class TestBrokerViewModel extends observable.Observable {
260
260
console . log ( 'NSUTR: require script ' + script . url + ' from ' + script . localPath ) ;
261
261
require ( script . localPath ) ;
262
262
} else {
263
- console . log ( 'NSUTR: eval script ' + script . url ) ;
264
- this . loadShim ( script . url ) ;
265
- //call eval indirectly to execute the scripts in the global scope
266
- var geval = eval ;
267
- geval ( script . contents ) ;
268
- this . completeLoading ( script . url ) ;
263
+ const queryStringStart = script . url . lastIndexOf ( '?' ) ;
264
+ const pathWithoutQueryString = script . url . substring ( 0 , queryStringStart ) ;
265
+ const extensionRegex = / \. ( [ ^ . \/ ] + ) $ / ;
266
+ const fileExtension = extensionRegex . exec ( pathWithoutQueryString ) [ 1 ] ;
267
+
268
+ if ( ! fileExtension || fileExtension . toLowerCase ( ) === "js" ) {
269
+ console . log ( 'NSUTR: eval script ' + script . url ) ;
270
+ this . loadShim ( script . url ) ;
271
+ // call eval indirectly to execute the scripts in the global scope
272
+ var geval = eval ;
273
+ geval ( script . contents ) ;
274
+ this . completeLoading ( script . url ) ;
275
+ } else {
276
+ console . log ( 'NSUTR: ignoring evaluation of script ' + script . url )
277
+ }
269
278
}
270
279
} catch ( err ) {
271
280
this . error ( err . toString ( ) , script . localPath || script . url , err . lineNumber || 0 ) ;
0 commit comments