import {describe, expect, it, jest} from '@jest/globals';
const mockXmlBuilderFactory = jest.fn();
const mockParse = jest.fn(() => ({
toolchains: {
toolchain: [
{
type: 'foo',
provides: {id: 'custom'},
configuration: {fooHome: '/opt/foo'}
}
]
}
}));
jest.unstable_mockModule('fast-xml-parser', () => {
mockXmlBuilderFactory();
return {
XMLParser: jest.fn().mockImplementation(() => ({
parse: mockParse
}))
};
});
const toolchains = await import('../src/toolchains.js');
describe('Maven XML loading', () => {
it('does not load fast-xml-parser for new toolchains.xml generation', async () => {
const xml = await toolchains.generateToolchainDefinition(
'',
'21',
'temurin',
'temurin_21',
'/opt/java/21'
);
expect(xml).toContain('temurin_21');
expect(mockXmlBuilderFactory).not.toHaveBeenCalled();
expect(mockParse).not.toHaveBeenCalled();
});
it('loads fast-xml-parser for existing toolchains.xml merge generation', async () => {
await expect(
toolchains.generateToolchainDefinition(
'foo',
'21',
'temurin',
'temurin_21',
'/opt/java/21'
)
).resolves.toContain('temurin_21');
expect(mockXmlBuilderFactory).toHaveBeenCalledTimes(1);
expect(mockParse).toHaveBeenCalledTimes(1);
});
});