import { updateDependency } from './update.ts';
describe('modules/manager/ant/update', () => {
it('updates inline XML version attribute', () => {
const fileContent =
'';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('4.13.1'),
},
});
expect(result).toBe(
'',
);
});
it('updates single-quoted XML version attribute', () => {
const fileContent =
"";
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('4.13.1'),
},
});
expect(result).toBe(
"",
);
});
it('updates .properties file value', () => {
const fileContent = 'junit.version=4.13.1\nother.key=value\n';
const result = updateDependency({
fileContent,
packageFile: 'versions.properties',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('4.13.1'),
},
});
expect(result).toBe('junit.version=4.13.2\nother.key=value\n');
});
it('updates .properties value at end of file without trailing newline', () => {
const fileContent = 'junit.version=4.13.1';
const result = updateDependency({
fileContent,
packageFile: 'versions.properties',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('4.13.1'),
},
});
expect(result).toBe('junit.version=4.13.2');
});
it('returns fileContent unchanged when already updated', () => {
const fileContent =
'';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('4.13.2'),
},
});
expect(result).toBe(fileContent);
});
it('updates when sharedVariableName is set even if currentValue differs', () => {
const fileContent = '';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.0',
newValue: '4.13.2',
sharedVariableName: 'junit.version',
fileReplacePosition: fileContent.indexOf('4.13.1'),
},
});
expect(result).toBe('');
});
it('returns null when fileReplacePosition is undefined', () => {
const result = updateDependency({
fileContent: '',
packageFile: 'build.xml',
upgrade: {
depName: 'org.example:lib',
currentValue: '1.0',
newValue: '2.0',
},
});
expect(result).toBeNull();
});
it('updates version within coords attribute', () => {
const fileContent =
'';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.2',
newValue: '4.13.3',
fileReplacePosition: fileContent.indexOf('4.13.2'),
},
});
expect(result).toContain('coords="junit:junit:4.13.3"');
});
it('updates version within 4-part coords attribute', () => {
const fileContent =
'';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.2',
newValue: '4.13.3',
fileReplacePosition: fileContent.indexOf('4.13.2'),
},
});
expect(result).toContain('coords="junit:junit:4.13.3:test"');
});
it('returns null when value at position does not match', () => {
const fileContent =
'';
const result = updateDependency({
fileContent,
packageFile: 'build.xml',
upgrade: {
depName: 'junit:junit',
currentValue: '4.13.1',
newValue: '4.13.2',
fileReplacePosition: fileContent.indexOf('9.9.9'),
},
});
expect(result).toBeNull();
});
});