All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.logz.test.TestEnvironment Maven / Gradle / Ivy

The newest version!
package io.logz.test;

import com.google.common.base.Splitter;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;

import static java.nio.file.attribute.PosixFilePermission.GROUP_EXECUTE;
import static java.nio.file.attribute.PosixFilePermission.GROUP_READ;
import static java.nio.file.attribute.PosixFilePermission.GROUP_WRITE;
import static java.nio.file.attribute.PosixFilePermission.OTHERS_EXECUTE;
import static java.nio.file.attribute.PosixFilePermission.OTHERS_READ;
import static java.nio.file.attribute.PosixFilePermission.OTHERS_WRITE;
import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;

public class TestEnvironment {

    /**
     * Creates a temp directory in the Build temp directory (Gradle 'build')
     */
    public static File createTempDirectory() {
        final String mavenBuildDirectory = "target";
        final String buildDirSubString = File.separator + mavenBuildDirectory + File.separator;
        String classPath = System.getProperty("java.class.path");
        String separator = System.getProperty("path.separator");
        List paths = Splitter.on(separator).trimResults().splitToList(classPath);
        File buildDir = paths.stream().filter(path -> path.contains(buildDirSubString)).findFirst().map(path -> {
            String upToBuildDir = path.substring(0, path.indexOf(buildDirSubString) + buildDirSubString.length());
            return new File(upToBuildDir);
        }).orElseThrow(() -> new RuntimeException("Failed finding classpath entry containing the build directory ("
                +buildDirSubString+" in the following classpath: "+classPath));

        try {
            FileAttribute> fileAttributes = PosixFilePermissions.asFileAttribute(EnumSet
                    .of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE,
                            GROUP_READ, GROUP_EXECUTE, GROUP_WRITE,
                            OTHERS_EXECUTE, OTHERS_READ, OTHERS_WRITE));
            return Files.createTempDirectory(buildDir.toPath(), "", fileAttributes).toFile();
        } catch (IOException e) {
            throw new RuntimeException("Failed creating temp directory in "+buildDir.getAbsolutePath(), e);
        }
    }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy