@@ -216,9 +216,9 @@ public void TestFiltersWithIncludeExcludeComplexPatterns1()
216
216
217
217
var expectedRegexMessages = new [ ]
218
218
{
219
- "Filtering in files matching '^c/.*/i\\ .[^/]*.*'. Original glob filter: 'include:c/**/i.*'" ,
220
- "Filtering in files matching '^c/d/.*/[^/]*\\ .cs.*'. Original glob filter: 'include:c/d/**/*.cs'" ,
221
- "Filtering out files matching '^.*/z/i\\ .cs.*'. Original glob filter: 'exclude:**/z/i.cs'"
219
+ "Filtering in files matching '^c/( .*/|) i\\ .[^/]*.*'. Original glob filter: 'include:c/**/i.*'" ,
220
+ "Filtering in files matching '^c/d/( .*/|) [^/]*\\ .cs.*'. Original glob filter: 'include:c/d/**/*.cs'" ,
221
+ "Filtering out files matching '^( .*/|) z/i\\ .cs.*'. Original glob filter: 'exclude:**/z/i.cs'"
222
222
} ;
223
223
Assert . Equivalent ( expectedRegexMessages , logger . Messages , strict : false ) ;
224
224
}
@@ -244,10 +244,41 @@ public void TestFiltersWithIncludeExcludeComplexPatterns2()
244
244
245
245
var expectedRegexMessages = new [ ]
246
246
{
247
- "Filtering in files matching '^.*/i\\ .[^/]*.*'. Original glob filter: 'include:**/i.*'" ,
248
- "Filtering out files matching '^.*/z/i\\ .cs.*'. Original glob filter: 'exclude:**/z/i.cs'"
247
+ "Filtering in files matching '^( .*/|) i\\ .[^/]*.*'. Original glob filter: 'include:**/i.*'" ,
248
+ "Filtering out files matching '^( .*/|) z/i\\ .cs.*'. Original glob filter: 'exclude:**/z/i.cs'"
249
249
} ;
250
250
Assert . Equivalent ( expectedRegexMessages , logger . Messages , strict : false ) ;
251
251
}
252
+
253
+ [ Fact ]
254
+ public void TestFiltersWithIncludeExcludeComplexPatternsRelativeRoot ( )
255
+ {
256
+ ( var testSubject , var logger , var files ) = TestSetup ( ) ;
257
+
258
+ // 'c' is the start of the relative path so we want to ensure the `**/` glob can match start
259
+ Environment . SetEnvironmentVariable ( "LGTM_INDEX_FILTERS" , """
260
+ include:**/c/**/i.*
261
+ exclude:**/c/**/z/i.cs
262
+ exclude:**/**/c/**/z/i.cs
263
+ """ ) ;
264
+
265
+ var filtered = testSubject . Filter ( files ) ;
266
+
267
+ var expected = GetExpected (
268
+ [
269
+ "/a/b/c/x/y/i.cs" ,
270
+ ] ) ;
271
+
272
+ AssertFileInfoEquivalence ( expected , filtered ) ;
273
+ var expectedRegexMessages = new [ ]
274
+ {
275
+ "Filtering in files matching '^(.*/|)c/(.*/|)i\\ .[^/]*.*'. Original glob filter: 'include:**/c/**/i.*'" ,
276
+ "Filtering out files matching '^(.*/|)c/(.*/|)z/i\\ .cs.*'. Original glob filter: 'exclude:**/c/**/z/i.cs'" ,
277
+ "Filtering out files matching '^(.*/|)(.*/|)c/(.*/|)z/i\\ .cs.*'. Original glob filter: 'exclude:**/**/c/**/z/i.cs'"
278
+ } ;
279
+
280
+
281
+ Assert . Equivalent ( expectedRegexMessages , logger . Messages , strict : false ) ;
282
+ }
252
283
}
253
284
}
0 commit comments