Update workflow generation to allow Java version customization

See gh-218
This commit is contained in:
Andy Wilkinson
2024-05-16 12:11:33 +01:00
parent 9c284a0666
commit 06490585c7
8 changed files with 65 additions and 16 deletions

View File

@@ -18,6 +18,10 @@ on:
required: false
type: boolean
default: false
java_version:
required: false
type: string
default: '17'
jobs:
jvm_smoke_test:
name: ${{ inputs.task }}
@@ -30,3 +34,4 @@ jobs:
checkout_repository: ${{ inputs.checkout_repository }}
checkout_ref: ${{ inputs.checkout_ref }}
expected_to_fail: ${{ inputs.expected_to_fail }}
java_version: ${{ inputs.java_version }}

View File

@@ -18,6 +18,10 @@ on:
required: false
type: boolean
default: false
java_version:
required: false
type: string
default: '17'
jobs:
native_smoke_test:
name: ${{ inputs.task }}
@@ -30,3 +34,4 @@ jobs:
checkout_repository: ${{ inputs.checkout_repository }}
checkout_ref: ${{ inputs.checkout_ref }}
expected_to_fail: ${{ inputs.expected_to_fail }}
graal_version: ${{ inputs.java_version }}

View File

@@ -21,6 +21,14 @@ on:
required: false
type: boolean
default: false
graal_version:
required: false
type: string
default: '17'
java_version:
required: false
type: string
default: '17'
jobs:
smoke_test:
name: ${{ inputs.task }}
@@ -31,15 +39,14 @@ jobs:
with:
repository: ${{ inputs.checkout_repository }}
ref: ${{ inputs.checkout_ref }}
- name: Set up Java
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
if: ${{ inputs.type == 'jvm' }}
with:
java-version: '17'
distribution: 'liberica'
- name: Set up GraalVM
uses: graalvm/setup-graalvm@2f25c0caae5b220866f732832d5e3e29ff493338 # v1.2.1
if: ${{ inputs.type == 'native' }}
with:
java-version: ${{ inputs.graal-java-version }}
distribution: 'liberica'
- name: Set up Java
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
java-version: '17'
distribution: 'liberica'

View File

@@ -95,6 +95,9 @@ public abstract class GenerateGitHubActionsWorkflows extends DefaultTask {
if (test.expectedToFail()) {
writer.println(" expected_to_fail: true");
}
if (test.javaVersion() != null) {
writer.println(" java_version: " + test.javaVersion());
}
});
}
catch (IOException ex) {

View File

@@ -48,19 +48,31 @@ public record SmokeTest(String name, String group, String path, List<SmokeTest.T
}
private static void testFrom(Properties properties, String name, Consumer<SmokeTest.Test> consumer) {
if (properties.containsKey("tests.%s.expectedToFail".formatted(name))) {
consumer.accept(new SmokeTest.Test(name,
Boolean.valueOf(properties.getProperty("tests.%s.expectedToFail".formatted(name)))));
if (configuresTest(properties, name)) {
boolean expectedToFail = Boolean.valueOf(properties.getProperty("tests.%s.expectedToFail".formatted(name)));
String javaVersion = properties.getProperty("tests.%s.javaVersion".formatted(name));
consumer.accept(new SmokeTest.Test(name, expectedToFail, javaVersion));
}
}
private static boolean configuresTest(Properties properties, String name) {
for (Object key : properties.keySet()) {
if (key instanceof String string && string.startsWith("tests." + name + ".")) {
return true;
}
}
return false;
}
/**
* An individual test within a smoke test.
*
* @param taskName the name of the task that runs the test
* @param expectedToFail whether to task is expected to fail
* @param javaVersion the required Java version for the test. May be {@code null} to
* use the default version
*/
public record Test(String taskName, boolean expectedToFail) implements Serializable {
public record Test(String taskName, boolean expectedToFail, String javaVersion) implements Serializable {
}

View File

@@ -18,6 +18,10 @@ on:
required: false
type: boolean
default: false
java_version:
required: false
type: string
default: '17'
jobs:
jvm_smoke_test:
name: ${{ inputs.task }}
@@ -30,3 +34,4 @@ jobs:
checkout_repository: ${{ inputs.checkout_repository }}
checkout_ref: ${{ inputs.checkout_ref }}
expected_to_fail: ${{ inputs.expected_to_fail }}
java_version: ${{ inputs.java_version }}

View File

@@ -18,6 +18,10 @@ on:
required: false
type: boolean
default: false
java_version:
required: false
type: string
default: '17'
jobs:
native_smoke_test:
name: ${{ inputs.task }}
@@ -30,3 +34,4 @@ jobs:
checkout_repository: ${{ inputs.checkout_repository }}
checkout_ref: ${{ inputs.checkout_ref }}
expected_to_fail: ${{ inputs.expected_to_fail }}
graal_version: ${{ inputs.java_version }}

View File

@@ -21,6 +21,14 @@ on:
required: false
type: boolean
default: false
graal_version:
required: false
type: string
default: '17'
java_version:
required: false
type: string
default: '17'
jobs:
smoke_test:
name: ${{ inputs.task }}
@@ -31,15 +39,14 @@ jobs:
with:
repository: ${{ inputs.checkout_repository }}
ref: ${{ inputs.checkout_ref }}
- name: Set up Java
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
if: ${{ inputs.type == 'jvm' }}
with:
java-version: '17'
distribution: 'liberica'
- name: Set up GraalVM
uses: graalvm/setup-graalvm@2f25c0caae5b220866f732832d5e3e29ff493338 # v1.2.1
if: ${{ inputs.type == 'native' }}
with:
java-version: ${{ inputs.graal-java-version }}
distribution: 'liberica'
- name: Set up Java
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
java-version: '17'
distribution: 'liberica'