Skip to content

Commit

Permalink
refactor(pip_requirements): extractAllPackageFiles (#10414)
Browse files Browse the repository at this point in the history
  • Loading branch information
rarkins committed Jun 14, 2021
1 parent 880b7fb commit 015391c
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 4 deletions.
Expand Up @@ -3,4 +3,4 @@
some-package==0.3.1
some-other-package==1.0.0
not_semver==1.9

unconstrained
31 changes: 31 additions & 0 deletions lib/manager/pip_requirements/__snapshots__/extract.spec.ts.snap
Expand Up @@ -63,6 +63,37 @@ Array [
]
`;

exports[`manager/pip_requirements/extract extractPackageFile() extracts using extractAllPackageFiles 1`] = `
Array [
Object {
"deps": Array [
Object {
"currentValue": "==0.3.1",
"currentVersion": "0.3.1",
"datasource": "pypi",
"depName": "some-package",
},
Object {
"currentValue": "==1.0.0",
"currentVersion": "1.0.0",
"datasource": "pypi",
"depName": "some-other-package",
},
Object {
"currentValue": "==1.9",
"currentVersion": "1.9",
"datasource": "pypi",
"depName": "not_semver",
},
],
"packageFile": "unused_file_name",
"registryUrls": Array [
"http://example.com/private-pypi/",
],
},
]
`;

exports[`manager/pip_requirements/extract extractPackageFile() handles comments and commands 1`] = `
Array [
Object {
Expand Down
16 changes: 14 additions & 2 deletions lib/manager/pip_requirements/extract.spec.ts
@@ -1,6 +1,8 @@
import { getName, loadFixture } from '../../../test/util';
import { fs, getName, loadFixture } from '../../../test/util';
import { setAdminConfig } from '../../config/admin';
import { extractPackageFile } from './extract';
import { extractAllPackageFiles, extractPackageFile } from './extract';

jest.mock('../../util/fs');

const requirements1 = loadFixture('requirements1.txt');
const requirements2 = loadFixture('requirements2.txt');
Expand Down Expand Up @@ -41,6 +43,16 @@ describe(getName(), () => {
expect(res.registryUrls).toEqual(['http://example.com/private-pypi/']);
expect(res.deps).toHaveLength(3);
});
it('extracts using extractAllPackageFiles', async () => {
fs.readLocalFile.mockResolvedValueOnce(requirements1);
const outerRes = await extractAllPackageFiles(config, [
'unused_file_name',
]);
expect(outerRes).toMatchSnapshot();
const [res] = outerRes;
expect(res.registryUrls).toEqual(['http://example.com/private-pypi/']);
expect(res.deps).toHaveLength(3);
});
it('extracts multiple dependencies', () => {
const res = extractPackageFile(
requirements2,
Expand Down
24 changes: 24 additions & 0 deletions lib/manager/pip_requirements/extract.ts
Expand Up @@ -4,6 +4,7 @@ import { getAdminConfig } from '../../config/admin';
import * as datasourcePypi from '../../datasource/pypi';
import { logger } from '../../logger';
import { SkipReason } from '../../types';
import { readLocalFile } from '../../util/fs';
import { isSkipComment } from '../../util/ignore';
import type { ExtractConfig, PackageDependency, PackageFile } from '../types';

Expand Down Expand Up @@ -101,3 +102,26 @@ export function extractPackageFile(
}
return res;
}

export async function extractAllPackageFiles(
config: ExtractConfig,
packageFiles: string[]
): Promise<PackageFile[]> {
const requirementsFiles: PackageFile[] = [];
for (const packageFile of packageFiles) {
const content = await readLocalFile(packageFile, 'utf8');
// istanbul ignore else
if (content) {
const deps = extractPackageFile(content, packageFile, config);
if (deps) {
requirementsFiles.push({
packageFile,
...deps,
});
}
} else {
logger.debug({ packageFile }, 'requirements file has no content');
}
}
return requirementsFiles;
}
2 changes: 1 addition & 1 deletion lib/manager/pip_requirements/index.ts
@@ -1,7 +1,7 @@
import { LANGUAGE_PYTHON } from '../../constants/languages';

export { updateArtifacts } from './artifacts';
export { extractPackageFile } from './extract';
export { extractAllPackageFiles } from './extract';
export { getRangeStrategy } from './range';

export const language = LANGUAGE_PYTHON;
Expand Down

0 comments on commit 015391c

Please sign in to comment.