From 20fdee2da625aa3c12d1212ea0b370f299901e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Thu, 18 Aug 2022 18:06:21 -0500 Subject: [PATCH] Add `Transferable.of(String, int)` (#5741) The new method adds similar capability of `Transferable.of(byte[], int)` but for `String`. --- core/build.gradle | 6 ++++++ .../testcontainers/images/builder/Transferable.java | 4 ++++ .../containers/GenericContainerTest.java | 13 +++++++++++++ 3 files changed, 23 insertions(+) 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 (