diff --git a/core/build.gradle b/core/build.gradle index c210ed48510..aa4c6eabf22 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -113,3 +113,9 @@ tasks.generatePomFileForMavenJavaPublication.finalizedBy( ] } ) + +tasks.japicmp { + methodExcludes = [ + "org.testcontainers.images.builder.Transferable#of(java.lang.String,int)" + ] +} diff --git a/core/src/main/java/org/testcontainers/images/builder/Transferable.java b/core/src/main/java/org/testcontainers/images/builder/Transferable.java index e98dbc2ad11..292a70d6ac7 100644 --- a/core/src/main/java/org/testcontainers/images/builder/Transferable.java +++ b/core/src/main/java/org/testcontainers/images/builder/Transferable.java @@ -16,6 +16,10 @@ static Transferable of(String string) { return of(string.getBytes(StandardCharsets.UTF_8)); } + static Transferable of(String string, int fileMode) { + return of(string.getBytes(StandardCharsets.UTF_8), fileMode); + } + static Transferable of(byte[] bytes) { return of(bytes, DEFAULT_FILE_MODE); } diff --git a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java index 1967ad95135..12f5810bc27 100644 --- a/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java +++ b/core/src/test/java/org/testcontainers/containers/GenericContainerTest.java @@ -84,6 +84,19 @@ public void shouldCopyTransferableAsFile() { } } + @Test + public void shouldCopyTransferableAsFileWithFileMode() { + try ( + GenericContainer container = new GenericContainer<>(TestImages.TINY_IMAGE) + .withStartupCheckStrategy(new NoopStartupCheckStrategy()) + .withCopyToContainer(Transferable.of("test", 0777), "/tmp/test") + .waitingFor(new WaitForExitedState(state -> state.getExitCodeLong() > 0)) + .withCommand("sh", "-c", "ls -ll /tmp | grep '\\-rwxrwxrwx\\|test' && exit 100") + ) { + assertThatThrownBy(container::start).hasStackTraceContaining("Container exited with code 100"); + } + } + @Test public void shouldCopyTransferableAfterMountableFile() { try (