Skip to content
Snippets Groups Projects
Commit 652b910d authored by Rhys Arkins's avatar Rhys Arkins Committed by singapore
Browse files

fix: only detect meteor package.js files containing Npm.depends (#953)

Closes #952
parent 7c410c12
No related branches found
No related tags found
No related merge requests found
......@@ -286,7 +286,14 @@ async function detectPackageFiles(input, detectAllLanguages = false) {
}
if (detectAllLanguages || config.meteor.enabled) {
logger.debug('Detecting meteor package.js files');
const meteorPackageFiles = await config.api.findFilePaths('package.js');
const allPackageJs = await config.api.findFilePaths('package.js');
const meteorPackageFiles = [];
for (const mFile of allPackageJs) {
const packageJsContent = await config.api.getFileContent(mFile);
if (packageJsContent && packageJsContent.indexOf('Npm.depends') !== -1) {
meteorPackageFiles.push(mFile);
}
}
if (meteorPackageFiles.length) {
logger.info(
{ count: meteorPackageFiles.length },
......
......@@ -39,14 +39,12 @@ Array [
exports[`workers/repository/apis detectPackageFiles(config) finds Dockerfiles 1`] = `
Array [
"package.json",
"Dockerfile",
]
`;
exports[`workers/repository/apis detectPackageFiles(config) finds meteor package files 1`] = `
Array [
"package.json",
"modules/something/package.js",
]
`;
......@@ -54,10 +52,6 @@ Array [
exports[`workers/repository/apis detectPackageFiles(config) ignores node modules 1`] = `
Array [
"package.json",
"package.json",
"node_modules/backend/package.json",
"package.json",
"node_modules/backend/package.json",
]
`;
......
......@@ -250,73 +250,59 @@ describe('workers/repository/apis', () => {
});
});
describe('detectPackageFiles(config)', () => {
it('adds package files to object', async () => {
const config = {
let config;
beforeEach(() => {
config = {
...defaultConfig,
api: {
findFilePaths: jest.fn(() => [
'package.json',
'backend/package.json',
]),
},
meteor: {
enabled: false,
findFilePaths: jest.fn(),
getFileContent: jest.fn(),
},
logger,
warnings: [],
};
config.api.findFilePaths.mockReturnValue([]);
});
it('adds package files to object', async () => {
config.api.findFilePaths.mockReturnValueOnce([
'package.json',
'backend/package.json',
]);
const res = await apis.detectPackageFiles(config);
expect(res.packageFiles).toMatchSnapshot();
expect(res.packageFiles).toHaveLength(2);
});
it('finds meteor package files', async () => {
const config = {
...defaultConfig,
api: {
findFilePaths: jest.fn(),
},
logger,
warnings: [],
};
config.api.findFilePaths.mockReturnValueOnce(['package.json']);
config.meteor.enabled = true;
config.api.findFilePaths.mockReturnValueOnce([]); // package.json
config.api.findFilePaths.mockReturnValueOnce([
'modules/something/package.js',
]);
config.api.findFilePaths.mockReturnValueOnce([]);
config.meteor.enabled = true;
]); // meteor
config.api.findFilePaths.mockReturnValueOnce([]); // Dockerfile
config.api.getFileContent.mockReturnValueOnce('Npm.depends()');
const res = await apis.detectPackageFiles(config);
expect(res.packageFiles).toMatchSnapshot();
expect(res.packageFiles).toHaveLength(1);
});
it('finds Dockerfiles', async () => {
const config = {
...defaultConfig,
api: {
findFilePaths: jest.fn(),
},
logger,
warnings: [],
};
config.api.findFilePaths.mockReturnValueOnce(['package.json']);
config.api.findFilePaths.mockReturnValueOnce([]);
config.api.findFilePaths.mockReturnValueOnce([]);
config.api.findFilePaths.mockReturnValueOnce(['Dockerfile']);
config.docker.enabled = true;
const res = await apis.detectPackageFiles(config);
expect(res.packageFiles).toMatchSnapshot();
expect(res.packageFiles).toHaveLength(1);
});
it('ignores node modules', async () => {
const config = {
...defaultConfig,
ignorePaths: ['node_modules/'],
api: {
findFilePaths: jest.fn(() => [
config.api.findFilePaths.mockReturnValueOnce([
'package.json',
'node_modules/backend/package.json',
]),
},
logger,
warnings: [],
};
]);
config.api.findFilePaths.mockReturnValueOnce([]);
config.api.findFilePaths.mockReturnValueOnce([]);
const res = await apis.detectPackageFiles(config);
expect(res.packageFiles).toMatchSnapshot();
expect(res.packageFiles).toHaveLength(1);
expect(res.foundIgnoredPaths).toMatchSnapshot();
expect(res.warnings).toMatchSnapshot();
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment