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

Relative file match (#24074)

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