Skip to content

Commit 579cf4b

Browse files
committed
Add ArtifactBuilder tests
1 parent d426f01 commit 579cf4b

3 files changed

Lines changed: 101 additions & 3 deletions

File tree

src/main/java/fr/ariouz/gkit/build/artifact/ArtifactBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public File build(BuildConfig config, boolean dryRun) {
2323
? List.of("cmd.exe", "/c", buildArtifact.getCommand())
2424
: List.of("sh", "-c", buildArtifact.getCommand());
2525

26-
new ProcessRunner().run(
26+
getProcessRunner().run(
2727
"Build artifact",
2828
command,
2929
new File(config.getProjectDir()),
@@ -42,5 +42,7 @@ public File build(BuildConfig config, boolean dryRun) {
4242
return artifact;
4343
}
4444

45-
45+
protected ProcessRunner getProcessRunner() {
46+
return new ProcessRunner();
47+
}
4648
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package fr.ariouz.gkit.test.build.artifact;
2+
3+
import fr.ariouz.gkit.build.BuildException;
4+
import fr.ariouz.gkit.build.ProcessRunner;
5+
import fr.ariouz.gkit.build.artifact.ArtifactBuilder;
6+
import fr.ariouz.gkit.config.models.BuildArtifact;
7+
import fr.ariouz.gkit.config.models.BuildConfig;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.api.io.TempDir;
10+
11+
import java.io.File;
12+
import java.nio.file.Files;
13+
import java.nio.file.Path;
14+
import java.util.List;
15+
16+
import static org.assertj.core.api.Assertions.assertThat;
17+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
18+
19+
public class ArtifactBuilderTest {
20+
21+
static class TestArtifactBuilder extends ArtifactBuilder {
22+
@Override
23+
protected ProcessRunner getProcessRunner() {
24+
return new ProcessRunner() {
25+
@Override
26+
public void run(String name, List<String> command, File workdir, boolean dryRun) {
27+
// no-op
28+
}
29+
};
30+
}
31+
}
32+
33+
private BuildConfig baseConfig(Path projectDir, String artifactPath) {
34+
BuildConfig config = new BuildConfig();
35+
config.setProjectDir(projectDir.toString());
36+
37+
BuildArtifact artifact = new BuildArtifact();
38+
artifact.setCommand("echo build");
39+
artifact.setPath(artifactPath);
40+
41+
config.setArtifact(artifact);
42+
return config;
43+
}
44+
45+
@Test
46+
void build_dryRun_doesNotCheckArtifactExists(@TempDir Path tempDir) {
47+
ArtifactBuilder builder = new TestArtifactBuilder();
48+
BuildConfig config = baseConfig(tempDir, "missing.jar");
49+
50+
File result = builder.build(config, true);
51+
52+
assertThat(result.getPath()).endsWith("missing.jar");
53+
}
54+
55+
@Test
56+
void build_artifactExists_isValid(@TempDir Path tempDir) throws Exception {
57+
Path artifact = tempDir.resolve("app.jar");
58+
Files.createFile(artifact);
59+
60+
ArtifactBuilder builder = new TestArtifactBuilder();
61+
BuildConfig config = baseConfig(tempDir, "app.jar");
62+
63+
File result = builder.build(config, false);
64+
65+
assertThat(result).exists();
66+
}
67+
68+
@Test
69+
void build_artifactMissing_throwsException(@TempDir Path tempDir) {
70+
ArtifactBuilder builder = new TestArtifactBuilder();
71+
BuildConfig config = baseConfig(tempDir, "missing.jar");
72+
73+
assertThatThrownBy(() -> builder.build(config, false))
74+
.isInstanceOf(BuildException.class)
75+
.hasMessageContaining("artifact not found");
76+
}
77+
}

src/test/java/fr/ariouz/gkit/test/build/image/NativeImageBuilderTest.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ protected File getNativeImage() {
7070
}
7171

7272
@Test
73-
void jarExistsAndDryRunIsEnabled() throws Exception {
73+
void dryRunIsEnabled() throws Exception {
7474
File jar = tempDir.resolve("app.jar").toFile();
7575
assertThat(jar.createNewFile()).isTrue();
7676

@@ -88,6 +88,25 @@ protected File getNativeImage() {
8888
).doesNotThrowAnyException();
8989
}
9090

91+
@Test
92+
void dryRunIsDisabled() throws Exception {
93+
File jar = tempDir.resolve("app.jar").toFile();
94+
assertThat(jar.createNewFile()).isTrue();
95+
96+
NativeImageBuilder builder = new NativeImageBuilder() {
97+
@Override
98+
protected File getNativeImage() {
99+
return tempDir.resolve("native-image").toFile();
100+
}
101+
};
102+
103+
GKitConfig config = baseConfig("app.jar");
104+
105+
assertThatCode(() ->
106+
builder.buildNativeImage(config, false)
107+
).doesNotThrowAnyException();
108+
}
109+
91110

92111
private GKitConfig baseConfig(String jarPath) {
93112
GKitConfig config = new GKitConfig();

0 commit comments

Comments
 (0)