This commit is contained in:
parent
ab1b5e2e0a
commit
4c2c8bde98
5
files/config/Jenkinsfile
vendored
5
files/config/Jenkinsfile
vendored
@ -1,7 +1,8 @@
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
environment {
|
||||
tools {
|
||||
gradle 'gradle-9.3.1'
|
||||
}
|
||||
|
||||
stages {
|
||||
@ -10,7 +11,7 @@ pipeline {
|
||||
withChecks(name: 'Test', includeStage: true) {
|
||||
withGradle {
|
||||
sh """
|
||||
./gradlew clean test jacocoTestReport --no-daemon
|
||||
gradle clean test jacocoTestReport --no-daemon
|
||||
"""
|
||||
}
|
||||
recordCoverage(tools: [[parser: 'JACOCO', pattern: "build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"]],
|
||||
|
||||
@ -1,99 +0,0 @@
|
||||
package p.studio.shipper;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
import p.packer.Packer;
|
||||
import p.studio.projects.ProjectCatalogService;
|
||||
import p.studio.projects.ProjectReference;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
final class StudioShipperServiceTest {
|
||||
@TempDir
|
||||
Path tempDir;
|
||||
|
||||
@Test
|
||||
void prepareBuildsPackAndManifestForMainFixture() throws Exception {
|
||||
final Path projectRoot = copyFixture(fixturePath("test-projects/main"), tempDir.resolve("main-project"));
|
||||
final ProjectReference projectReference = new ProjectCatalogService(tempDir).openProject(projectRoot);
|
||||
final ArrayList<StudioShipperLogEntry> streamedLogs = new ArrayList<>();
|
||||
|
||||
final StudioShipperPrepareResult result;
|
||||
try (final Packer packer = Packer.bootstrap(new ObjectMapper(), ignored -> { })) {
|
||||
final StudioShipperService service = new StudioShipperService(packer.workspaceService());
|
||||
result = service.prepare(projectReference, streamedLogs::add);
|
||||
}
|
||||
|
||||
assertTrue(result.success());
|
||||
assertEquals(StudioShipperPreparationStatus.SUCCESS, result.status());
|
||||
assertNotNull(result.buildResult());
|
||||
assertNotNull(result.validationResult());
|
||||
assertNotNull(result.packResult());
|
||||
assertNotNull(result.manifestPath());
|
||||
assertEquals(result.logs(), streamedLogs);
|
||||
assertTrue(Files.isRegularFile(projectRoot.resolve("build").resolve("program.pbx")));
|
||||
assertTrue(Files.isRegularFile(projectRoot.resolve("build").resolve("assets.pa")));
|
||||
assertTrue(Files.isRegularFile(projectRoot.resolve("build").resolve("manifest.json")));
|
||||
assertTrue(result.logs().stream().anyMatch(entry -> entry.source() == StudioShipperLogSource.BUILD));
|
||||
assertTrue(result.logs().stream().anyMatch(entry -> entry.source() == StudioShipperLogSource.PACK_VALIDATION));
|
||||
assertTrue(result.logs().stream().anyMatch(entry -> entry.source() == StudioShipperLogSource.PACK));
|
||||
assertTrue(result.logs().stream().anyMatch(entry -> entry.source() == StudioShipperLogSource.MANIFEST));
|
||||
final String manifestJson = Files.readString(result.manifestPath());
|
||||
assertTrue(manifestJson.contains("\"magic\""));
|
||||
assertTrue(manifestJson.contains("\"capabilities\""));
|
||||
assertTrue(manifestJson.contains("\"asset_table\""));
|
||||
assertTrue(manifestJson.contains("\"preload\""));
|
||||
}
|
||||
|
||||
@Test
|
||||
void prepareManifestPreservesCompilerCapabilities() throws Exception {
|
||||
final Path projectRoot = copyFixture(fixturePath("test-projects/main"), tempDir.resolve("main-capabilities"));
|
||||
final ProjectReference projectReference = new ProjectCatalogService(tempDir).openProject(projectRoot);
|
||||
final StudioShipperPrepareResult result;
|
||||
try (final Packer packer = Packer.bootstrap(new ObjectMapper(), ignored -> { })) {
|
||||
final StudioShipperService service = new StudioShipperService(packer.workspaceService());
|
||||
result = service.prepare(projectReference);
|
||||
}
|
||||
|
||||
assertTrue(result.success());
|
||||
final String manifestJson = Files.readString(result.manifestPath());
|
||||
assertTrue(manifestJson.contains("\"log\""));
|
||||
assertTrue(manifestJson.contains("\"gfx\""));
|
||||
assertTrue(manifestJson.contains("\"asset\""));
|
||||
}
|
||||
|
||||
private Path copyFixture(final Path sourceRoot, final Path targetRoot) throws IOException {
|
||||
Files.walk(sourceRoot).forEach(source -> {
|
||||
try {
|
||||
final Path target = targetRoot.resolve(sourceRoot.relativize(source).toString());
|
||||
if (Files.isDirectory(source)) {
|
||||
Files.createDirectories(target);
|
||||
} else {
|
||||
Files.createDirectories(target.getParent());
|
||||
Files.copy(source, target);
|
||||
}
|
||||
} catch (IOException ioException) {
|
||||
throw new RuntimeException(ioException);
|
||||
}
|
||||
});
|
||||
return targetRoot;
|
||||
}
|
||||
|
||||
private Path fixturePath(final String relativePath) {
|
||||
final Path direct = Path.of(relativePath).toAbsolutePath().normalize();
|
||||
if (Files.exists(direct)) {
|
||||
return direct;
|
||||
}
|
||||
final Path parent = Path.of("..").resolve(relativePath).toAbsolutePath().normalize();
|
||||
if (Files.exists(parent)) {
|
||||
return parent;
|
||||
}
|
||||
throw new IllegalArgumentException("fixture not found: " + relativePath);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user