@@ -87,6 +87,7 @@ function loadContent(content) {
87
87
var Module = module . constructor ;
88
88
var m = new Module ( ) ;
89
89
m . _compile ( content , "tmp.js" ) ;
90
+ m . exports . ignore_order = content . indexOf ( "\n// ignore-order\n" ) !== - 1 ;
90
91
return m . exports ;
91
92
}
92
93
@@ -130,10 +131,10 @@ function lookForEntry(entry, data) {
130
131
}
131
132
}
132
133
if ( allGood === true ) {
133
- return true ;
134
+ return i ;
134
135
}
135
136
}
136
- return false ;
137
+ return null ;
137
138
}
138
139
139
140
function main ( argv ) {
@@ -177,6 +178,7 @@ function main(argv) {
177
178
'exports.QUERY = QUERY;exports.EXPECTED = EXPECTED;' ) ;
178
179
const expected = loadedFile . EXPECTED ;
179
180
const query = loadedFile . QUERY ;
181
+ const ignore_order = loadedFile . ignore_order ;
180
182
var results = loaded . execSearch ( loaded . getQuery ( query ) , index ) ;
181
183
process . stdout . write ( 'Checking "' + file + '" ... ' ) ;
182
184
var error_text = [ ] ;
@@ -189,13 +191,17 @@ function main(argv) {
189
191
break ;
190
192
}
191
193
var entry = expected [ key ] ;
192
- var found = false ;
194
+ var prev_pos = 0 ;
193
195
for ( var i = 0 ; i < entry . length ; ++ i ) {
194
- if ( lookForEntry ( entry [ i ] , results [ key ] ) === true ) {
195
- found = true ;
196
- } else {
196
+ var entry_pos = lookForEntry ( entry [ i ] , results [ key ] ) ;
197
+ if ( entry_pos === null ) {
197
198
error_text . push ( "==> Result not found in '" + key + "': '" +
198
199
JSON . stringify ( entry [ i ] ) + "'" ) ;
200
+ } else if ( entry_pos < prev_pos && ignore_order === false ) {
201
+ error_text . push ( "==> '" + JSON . stringify ( entry [ i ] ) + "' was supposed to be " +
202
+ " before '" + JSON . stringify ( results [ key ] [ entry_pos ] ) + "'" ) ;
203
+ } else {
204
+ prev_pos = entry_pos ;
199
205
}
200
206
}
201
207
}
0 commit comments