Files
renovate/lib/modules/manager/pep723/utils.spec.ts
Mathieu Kniewallner ec71601638 refactor(manager/pep723): move parsing to utils (#41673)
* refactor(pep723): move parsing to `utils`

* test(manager/pep723): add missing test
2026-03-27 10:13:00 +00:00

114 lines
2.6 KiB
TypeScript

import { codeBlock } from 'common-tags';
import { extractPep723 } from './utils.ts';
describe('modules/manager/pep723/utils', () => {
describe('parsePep723()', () => {
it('should extract dependencies', () => {
const res = extractPep723(
codeBlock`
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "requests==2.32.3",
# "rich>=13.8.0",
# ]
# ///
`,
'foo.py',
);
expect(res).toEqual({
deps: [
{
currentValue: '==2.32.3',
currentVersion: '2.32.3',
datasource: 'pypi',
depName: 'requests',
depType: 'project.dependencies',
packageName: 'requests',
},
{
currentValue: '>=13.8.0',
datasource: 'pypi',
depName: 'rich',
depType: 'project.dependencies',
packageName: 'rich',
},
],
extractedConstraints: { python: '>=3.11' },
});
});
it('should skip invalid dependencies', () => {
const res = extractPep723(
codeBlock`
# /// script
# requires-python = "==3.11"
# dependencies = [
# "requests==2.32.3",
# "==1.2.3",
# ]
# ///
`,
'foo.py',
);
expect(res).toEqual({
deps: [
{
currentValue: '==2.32.3',
currentVersion: '2.32.3',
datasource: 'pypi',
depName: 'requests',
depType: 'project.dependencies',
packageName: 'requests',
},
],
extractedConstraints: { python: '==3.11' },
});
});
it('should return null on missing dependencies', () => {
const res = extractPep723(
codeBlock`
# /// script
# requires-python = ">=3.11"
# ///
`,
'foo.py',
);
expect(res).toBeNull();
});
it('should return null on invalid TOML', () => {
const res = extractPep723(
codeBlock`
# /// script
# requires-python
# dependencies = [
# "requests==2.32.3",
# "rich>=13.8.0",
# ]
# ///
`,
'foo.py',
);
expect(res).toBeNull();
});
it('should return null if there is no PEP 723 metadata', () => {
const res = extractPep723(
codeBlock`
if True:
print("requires-python>=3.11")
`,
'foo.py',
);
expect(res).toBeNull();
});
});
});