feat(providence-analytics): cli arguments extend-docs

chore: fix failing tests
This commit is contained in:
Thijs Louisse 2020-06-29 13:22:34 +02:00
parent 54d06b9faa
commit 729966504b
5 changed files with 76 additions and 12 deletions

View file

@ -33,6 +33,10 @@ function setQueryMethod(m) {
* @returns {string[]}
*/
function pathsArrayFromCs(t, cwd = process.cwd()) {
if (!t) {
return undefined;
}
return flatten(
t.split(',').map(t => {
if (t.startsWith('/')) {

View file

@ -18,7 +18,7 @@ const {
pathsArrayFromCollectionName,
pathsArrayFromCs,
} = require('./cli-helpers.js');
const { launchProvidenceWithExtendDocs } = require('./generate-extend-docs-data.js');
const extendDocsModule = require('./generate-extend-docs-data.js');
const { version } = require('../../package.json');
async function cli({ cwd, addProjectDependencyPaths } = {}) {
@ -111,12 +111,10 @@ async function cli({ cwd, addProjectDependencyPaths } = {}) {
providenceModule.providence(queryConfig, {
gatherFilesConfig: {
extensions: commander.extensions,
// ...(commander.filteredTarget ? { excludeFolders: commander.filteredTarget } : {}),
filter: commander.whitelist,
},
gatherFilesConfigReference: {
extensions: commander.extensions,
// ...(commander.filteredTarget ? { excludeFolders: commander.filteredTarget } : {}),
filter: commander.whitelistReference,
},
debugEnabled: commander.debug,
@ -275,7 +273,17 @@ async function cli({ cwd, addProjectDependencyPaths } = {}) {
process.exit(1);
}
const prefixCfg = { from: options.prefixFrom, to: options.prefixTo };
launchProvidenceWithExtendDocs(commander.referencePaths, prefixCfg, options.outputFolder);
extendDocsModule
.launchProvidenceWithExtendDocs({
referenceProjectPaths: commander.referencePaths,
prefixCfg,
outputFolder: options.outputFolder,
extensions: commander.referencePaths,
whitelist: commander.whitelist,
whitelistReference: commander.whitelistReference,
})
.then(() => resolveCli())
.catch(() => rejectCli());
});
commander

View file

@ -6,20 +6,31 @@ const { providence } = require('../program/providence.js');
const { QueryService } = require('../program/services/QueryService.js');
const { LogService } = require('../program/services/LogService.js');
async function launchProvidenceWithExtendDocs(referencePaths, prefixObj, outputFolder) {
async function launchProvidenceWithExtendDocs({
referenceProjectPaths,
prefixCfg,
outputFolder,
extensions,
whitelist,
whitelistReference,
}) {
const t0 = performance.now();
const results = await providence(
QueryService.getQueryConfigFromAnalyzer('match-paths', { prefix: prefixObj }),
QueryService.getQueryConfigFromAnalyzer('match-paths', { prefix: prefixCfg }),
{
gatherFilesConfig: {
extensions: ['.js', '.html'],
excludeFolders: ['coverage', 'test'],
extensions: extensions || ['.js'],
filter: whitelist || ['!coverage', '!test'],
},
gatherFilesConfigReference: {
extensions: extensions || ['.js'],
filter: whitelistReference || ['!coverage', '!test'],
},
queryMethod: 'ast',
report: false,
targetProjectPaths: [pathLib.resolve(process.cwd())],
referenceProjectPaths: referencePaths,
referenceProjectPaths,
},
);

View file

@ -165,7 +165,7 @@ class Analyzer {
`skipping ${LogService.pad(this.name, 16)} for ${
this.identifier
}: (${reason})\n${cfg.targetProjectPath.replace(
'/Users/hu84jr/git/providence/providence-input-data/search-targets/',
`${process.cwd()}/providence-input-data/search-targets/`,
'',
)}`,
);

View file

@ -15,9 +15,10 @@ const {
} = require('../../test-helpers/mock-log-service-helpers.js');
const { QueryService } = require('../../src/program/services/QueryService.js');
const { LogService } = require('../../src/program/services/LogService.js');
const providenceModule = require('../../src/program/providence.js');
const extendDocsModule = require('../../src/cli/generate-extend-docs-data.js');
const dummyAnalyzer = require('../../test-helpers/templates/analyzer-template.js');
const { cli } = require('../../src/cli/cli.js');
const { pathsArrayFromCs } = require('../../src/cli/cli-helpers.js');
@ -27,7 +28,6 @@ const rootDir = pathLib.resolve(__dirname, '../../');
describe('Providence CLI', () => {
before(() => {
LogService.debugEnabled = true;
suppressNonCriticalLogs();
mockWriteToJson(queryResults);
@ -142,6 +142,47 @@ describe('Providence CLI', () => {
describe('Query', () => {});
describe('Search', () => {});
describe('Manage', () => {});
describe('Extend docs', () => {
let extendDocsStub;
beforeEach(() => {
extendDocsStub = sinon.stub(extendDocsModule, 'launchProvidenceWithExtendDocs').returns(
new Promise(resolve => {
resolve();
}),
);
});
afterEach(() => {
extendDocsStub.restore();
});
it('allows configuration', async () => {
await runCli(
[
'extend-docs',
'-t /xyz',
'-r /xyz/x',
'--prefix-from pfrom --prefix-to pto',
'--output-folder /outp',
'--extensions bla',
'--whitelist wl --whitelist-reference wlr',
].join(' '),
rootDir,
);
expect(extendDocsStub.called).to.be.true;
expect(extendDocsStub.args[0][0]).to.eql({
referenceProjectPaths: ['/xyz/x'],
prefixCfg: {
from: 'pfrom',
to: 'pto',
},
outputFolder: '/outp',
extensions: ['/xyz/x'],
whitelist: [`${process.cwd()}/wl`],
whitelistReference: [`${process.cwd()}/wlr`],
});
});
});
});
});