提交 3307e76f 编写于 作者: C Christof Marti

Relative file match (#24074)

上级 783df422
......@@ -28,6 +28,7 @@ test -d node_modules || ./scripts/npm.sh install
(test -f "$CODE" && [ $INTENDED_VERSION == $INSTALLED_VERSION ]) || ./node_modules/.bin/gulp electron
# Unit Tests
export ELECTRON_ENABLE_LOGGING=1
if [[ "$OSTYPE" == "darwin"* ]]; then
cd $ROOT ; ulimit -n 4096 ; \
"$CODE" \
......
......@@ -221,6 +221,7 @@ export class FileWalker {
const useRipgrep = this.useRipgrep;
let cmd: childProcess.ChildProcess;
let noSiblingsClauses: boolean;
let filePatternSeen = false;
if (useRipgrep) {
const ripgrep = spawnRipgrepCmd(folderQuery, this.config.includePattern, this.folderExcludePatterns.get(folderQuery.folder).expression);
cmd = ripgrep.cmd;
......@@ -262,12 +263,29 @@ export class FileWalker {
if (useRipgrep && noSiblingsClauses) {
for (const relativePath of relativeFiles) {
if (relativePath === this.filePattern) {
filePatternSeen = true;
}
const basename = path.basename(relativePath);
this.matchFile(onResult, { base: rootFolder, relativePath, basename });
}
if (last) {
if (!filePatternSeen) {
this.checkFilePatternRelativeMatch(folderQuery.folder, (match, size) => {
if (match) {
this.resultCount++;
onResult({
base: folderQuery.folder,
relativePath: this.filePattern,
basename: path.basename(this.filePattern),
});
}
done();
});
} else {
done();
}
}
return;
}
......
......@@ -368,27 +368,27 @@ suite('FileSearchEngine', () => {
});
});
// test('Files: relative path to file ignores excludes', function (done: () => void) {
// let engine = new FileSearchEngine({
// folderQueries: ROOT_FOLDER_QUERY,
// filePattern: path.normalize(path.join('examples', 'company.js')),
// excludePattern: { '**/*.js': true }
// });
// let count = 0;
// let res: IRawFileMatch;
// engine.search((result) => {
// if (result) {
// count++;
// }
// res = result;
// }, () => { }, (error) => {
// assert.ok(!error);
// assert.equal(count, 1);
// assert.equal(path.basename(res.relativePath), 'company.js');
// done();
// });
// });
test('Files: relative path to file ignores excludes', function (done: () => void) {
let engine = new FileSearchEngine({
folderQueries: ROOT_FOLDER_QUERY,
filePattern: path.normalize(path.join('examples', 'company.js')),
excludePattern: { '**/*.js': true }
});
let count = 0;
let res: IRawFileMatch;
engine.search((result) => {
if (result) {
count++;
}
res = result;
}, () => { }, (error) => {
assert.ok(!error);
assert.equal(count, 1);
assert.equal(path.basename(res.relativePath), 'company.js');
done();
});
});
test('Files: Include pattern, single files', function (done: () => void) {
let engine = new FileSearchEngine({
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册