From e0b683abe8e812bf7455d35d5b5523f4b5667725 Mon Sep 17 00:00:00 2001 From: Anton Smirnov Date: Sat, 19 May 2018 01:23:43 +0500 Subject: [PATCH 1/2] Issue #700 - Not working in Bitbucket pipeline: "authorization denied by plugin pipelines: Command not supported." Detecting Bitbucket build and creating temporary files/dirs within BITBUCKET_CLONE_DIR. --- .../testcontainers/utility/MountableFile.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/src/main/java/org/testcontainers/utility/MountableFile.java b/core/src/main/java/org/testcontainers/utility/MountableFile.java index 795917fffc4..507e9f39288 100644 --- a/core/src/main/java/org/testcontainers/utility/MountableFile.java +++ b/core/src/main/java/org/testcontainers/utility/MountableFile.java @@ -38,6 +38,8 @@ @Slf4j public class MountableFile implements Transferable { + private static final String BITBUCKET_CLONE_DIR_ENV = "BITBUCKET_CLONE_DIR"; + private static final String BITBUCKET_TMP_SUBDIR = "tmp"; private static final String TESTCONTAINERS_TMP_DIR_PREFIX = ".testcontainers-tmp-"; private static final String OS_MAC_TMP_DIR = "/tmp"; private static final int BASE_FILE_MODE = 0100000; @@ -241,8 +243,23 @@ private String extractClassPathResourceToTempLocation(final String hostPath) { return tmpLocation.getAbsolutePath(); } + private boolean isOnBitbucket() { + final String bbCloneDir = System.getenv(BITBUCKET_CLONE_DIR_ENV); + return bbCloneDir != null && bbCloneDir.length() > 0; + } + + private String getBitbucketCloneDir() { + return System.getenv(BITBUCKET_CLONE_DIR_ENV); + } + private File createTempDirectory() { try { + if (isOnBitbucket()) { + return Files.createTempDirectory( + Paths.get(getBitbucketCloneDir(), BITBUCKET_TMP_SUBDIR), + TESTCONTAINERS_TMP_DIR_PREFIX).toFile(); + } + if (SystemUtils.IS_OS_MAC) { return Files.createTempDirectory(Paths.get(OS_MAC_TMP_DIR), TESTCONTAINERS_TMP_DIR_PREFIX).toFile(); } From 56eb1b88daea0a28ff4de61c2e6ab52907b20990 Mon Sep 17 00:00:00 2001 From: Anton Smirnov Date: Mon, 21 May 2018 11:51:39 +0500 Subject: [PATCH 2/2] test paths --- .../org/testcontainers/utility/MountableFile.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/testcontainers/utility/MountableFile.java b/core/src/main/java/org/testcontainers/utility/MountableFile.java index 507e9f39288..3ab57510c15 100644 --- a/core/src/main/java/org/testcontainers/utility/MountableFile.java +++ b/core/src/main/java/org/testcontainers/utility/MountableFile.java @@ -39,7 +39,7 @@ public class MountableFile implements Transferable { private static final String BITBUCKET_CLONE_DIR_ENV = "BITBUCKET_CLONE_DIR"; - private static final String BITBUCKET_TMP_SUBDIR = "tmp"; + // private static final String BITBUCKET_TMP_SUBDIR = "tmp"; private static final String TESTCONTAINERS_TMP_DIR_PREFIX = ".testcontainers-tmp-"; private static final String OS_MAC_TMP_DIR = "/tmp"; private static final int BASE_FILE_MODE = 0100000; @@ -255,9 +255,15 @@ private String getBitbucketCloneDir() { private File createTempDirectory() { try { if (isOnBitbucket()) { - return Files.createTempDirectory( - Paths.get(getBitbucketCloneDir(), BITBUCKET_TMP_SUBDIR), - TESTCONTAINERS_TMP_DIR_PREFIX).toFile(); + //Path tmpPath = Paths.get(getBitbucketCloneDir(), BITBUCKET_TMP_SUBDIR); + //if (!java.nio.file.Files.exists(tmpPath)) { + // Files.createDirectory(tmpPath); + //} + Path bbClonePath = Paths.get(getBitbucketCloneDir()); + if (!java.nio.file.Files.exists(bbClonePath)) { + Files.createDirectory(bbClonePath); + } + return Files.createTempDirectory(bbClonePath, TESTCONTAINERS_TMP_DIR_PREFIX).toFile(); } if (SystemUtils.IS_OS_MAC) {