package com.github.dockerjava.core.dockerfile;
import static com.google.common.collect.Collections2.transform;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
import com.google.common.base.Function;
public class DockerfileAddMultipleFilesTest {
private static final Logger log = LoggerFactory.getLogger(DockerfileAddMultipleFilesTest.class);
private static final Function<File, String> TO_FILE_NAMES = new Function<File, String>() {
@Override
public String apply(File file) {
return file.getName();
}
};
@Test
public void nestedDirsPatterns() throws Exception {
File baseDir = fileFromBuildTestResource("dockerignore/NestedDirsDockerignore");
Dockerfile dockerfile = new Dockerfile(new File(baseDir, "Dockerfile"), baseDir);
Dockerfile.ScannedResult result = dockerfile.parse();
Collection<String> filesToAdd = transform(result.filesToAdd, TO_FILE_NAMES);
assertThat(filesToAdd,
containsInAnyOrder("Dockerfile", ".dockerignore", "README.md", "README-grand.md", "b.txt"));
}
@Test
public void effectiveIgnorePatterns() throws Exception {
File baseDir = fileFromBuildTestResource("dockerignore/EffectiveDockerignorePatterns");
Dockerfile dockerfile = new Dockerfile(new File(baseDir, "Dockerfile"), baseDir);
Dockerfile.ScannedResult result = dockerfile.parse();
Collection<String> filesToAdd = transform(result.filesToAdd, TO_FILE_NAMES);
assertThat(filesToAdd, containsInAnyOrder("Dockerfile", ".dockerignore", "README.md"));
}
@Test
public void ineffectiveIgnorePattern() throws Exception {
File baseDir = fileFromBuildTestResource("dockerignore/IneffectiveDockerignorePattern");
Dockerfile dockerfile = new Dockerfile(new File(baseDir, "Dockerfile"), baseDir);
Dockerfile.ScannedResult result = dockerfile.parse();
Collection<String> filesToAdd = transform(result.filesToAdd, TO_FILE_NAMES);
assertThat(filesToAdd, containsInAnyOrder("Dockerfile", ".dockerignore", "README.md", "README-secret.md"));
}
@Test
public void addFiles() throws IOException {
File baseDir = fileFromBuildTestResource("ADD/files");
Dockerfile dockerfile = new Dockerfile(new File(baseDir, "Dockerfile"), baseDir);
Dockerfile.ScannedResult result = dockerfile.parse();
Collection<String> filesToAdd = transform(result.filesToAdd, TO_FILE_NAMES);
assertThat(filesToAdd, containsInAnyOrder("Dockerfile", "src1", "src2"));
}
private File fileFromBuildTestResource(String resource) {
return new File(Thread.currentThread().getContextClassLoader()
.getResource("buildTests/" + resource).getFile());
}
}