mirror of
https://github.com/actions/setup-java.git
synced 2026-08-06 22:19:29 +08:00
7a9a8b1dcc
* chore(deps): bump brace-expansion from 5.0.8 to 5.0.9 Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.8 to 5.0.9. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.8...v5.0.9) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 5.0.9 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * chore: rebuild distribution Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: refresh dependency metadata Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bruno Borges <brborges@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
83 lines
2.8 KiB
TypeScript
83 lines
2.8 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import {
|
|
JAVA_PACKAGE_CAPABILITIES,
|
|
JavaDistribution
|
|
} from '../src/distributions/package-types.js';
|
|
|
|
const repositoryRoot = process.cwd();
|
|
const readRepositoryFile = (filePath: string) =>
|
|
fs.readFileSync(path.join(repositoryRoot, filePath), 'utf8');
|
|
const allPackageTypes = [
|
|
...new Set(Object.values(JAVA_PACKAGE_CAPABILITIES).flat())
|
|
];
|
|
|
|
describe('java-package published contract', () => {
|
|
it.each(['action.yml', 'README.md'])(
|
|
'documents every supported package type in %s',
|
|
filePath => {
|
|
const content = readRepositoryFile(filePath);
|
|
const contractLine =
|
|
filePath === 'action.yml'
|
|
? content.match(/ {2}java-package:\n(?: {4}.+\n)+/)?.[0]
|
|
: content
|
|
.split('\n')
|
|
.find(line => line.includes('| `java-package` |'));
|
|
|
|
expect(contractLine).toBeDefined();
|
|
for (const packageType of allPackageTypes) {
|
|
expect(contractLine).toContain(`\`${packageType}\``);
|
|
}
|
|
}
|
|
);
|
|
|
|
it.each(Object.entries(JAVA_PACKAGE_CAPABILITIES))(
|
|
'keeps the advanced compatibility table aligned for %s',
|
|
(distributionName, packageTypes) => {
|
|
const advancedUsage = readRepositoryFile('docs/advanced-usage.md');
|
|
const compatibilityTable = advancedUsage.slice(
|
|
advancedUsage.indexOf('### Package compatibility')
|
|
);
|
|
const compatibilityRow = compatibilityTable
|
|
.split('\n')
|
|
.find(
|
|
line =>
|
|
line.startsWith('|') && line.includes(`\`${distributionName}\``)
|
|
);
|
|
|
|
expect(compatibilityRow).toBeDefined();
|
|
for (const packageType of packageTypes) {
|
|
expect(compatibilityRow).toContain(`\`${packageType}\``);
|
|
}
|
|
}
|
|
);
|
|
|
|
it('only exercises supported distribution/package combinations in E2E', () => {
|
|
const workflow = readRepositoryFile('.github/workflows/e2e-versions.yml');
|
|
const defaultMatrix = workflow.match(
|
|
/distribution:\s*\n\s*\[([^\]]+)\]\s*\n\s*java-package:\s*\['([^']+)'\]/
|
|
);
|
|
expect(defaultMatrix).not.toBeNull();
|
|
|
|
const defaultDistributions = [
|
|
...defaultMatrix![1].matchAll(/'([^']+)'/g)
|
|
].map(match => match[1]);
|
|
const defaultPackage = defaultMatrix![2];
|
|
for (const distributionName of defaultDistributions) {
|
|
expect(supportedPackagesFor(distributionName)).toContain(defaultPackage);
|
|
}
|
|
|
|
const includedPackages = workflow.matchAll(
|
|
/- distribution: '([^']+)'\s*\n\s*java-package: ([^\s]+)/g
|
|
);
|
|
for (const match of includedPackages) {
|
|
const [, distributionName, packageType] = match;
|
|
expect(supportedPackagesFor(distributionName)).toContain(packageType);
|
|
}
|
|
});
|
|
});
|
|
|
|
function supportedPackagesFor(distributionName: string): readonly string[] {
|
|
return JAVA_PACKAGE_CAPABILITIES[distributionName as JavaDistribution] ?? [];
|
|
}
|