package org.arquillian.cube.docker.drone.util; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.arquillian.cube.docker.drone.CubeDroneConfiguration; import org.jboss.arquillian.test.spi.event.suite.After; public class VideoFileDestination { private static final File DEFAULT_LOCATION_OUTPUT_MAVEN = new File("target"); private static final File DEFAULT_LOCATION_OUTPUT_GRADLE = new File("build"); private VideoFileDestination() { super(); } public static Path getFinalLocation(After afterTestMethod, CubeDroneConfiguration cubeDroneConfiguration) { return resolveTargetDirectory(cubeDroneConfiguration).resolve(getFinalVideoName(afterTestMethod)); } public static Path resolveTargetDirectory(CubeDroneConfiguration cubeDroneConfiguration) { Path output; if (cubeDroneConfiguration.isVideoOutputDirectorySet()) { output = Paths.get(cubeDroneConfiguration.getFinalDirectory()); } else { if (DEFAULT_LOCATION_OUTPUT_GRADLE.exists()) { output = DEFAULT_LOCATION_OUTPUT_GRADLE.toPath().resolve("reports").resolve("videos"); } else { if (DEFAULT_LOCATION_OUTPUT_MAVEN.exists()) { output = DEFAULT_LOCATION_OUTPUT_MAVEN.toPath().resolve("reports").resolve("videos"); } else { if (!DEFAULT_LOCATION_OUTPUT_MAVEN.mkdirs()) { throw new IllegalArgumentException("Couldn't create directory for storing videos"); } output = DEFAULT_LOCATION_OUTPUT_MAVEN.toPath().resolve("reports").resolve("videos"); } } } try { Files.createDirectories(output); } catch (IOException e) { throw new IllegalArgumentException("Couldn't create directory for storing videos"); } return output; } private static String getFinalVideoName(After afterTestMethod) { final String className = afterTestMethod.getTestClass().getName().replace('.', '_'); final String methodName = afterTestMethod.getTestMethod().getName(); return className + "_" + methodName + ".flv"; } }