Relative file match (#24074)

This commit is contained in:
Christof Marti
2017-09-12 21:51:34 -07:00
parent 783df422b9
commit 3307e76f76
3 changed files with 40 additions and 21 deletions

View File

@@ -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" \

View File

@@ -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,11 +263,28 @@ 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) {
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;
}

View File

@@ -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 }
// });
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();
// });
// });
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({