1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package builder
- import (
- "io/ioutil"
- "log"
- "os"
- "sort"
- "testing"
- )
- const shouldStayFilename = "should_stay"
- func extractFilenames(files []os.FileInfo) []string {
- filenames := make([]string, len(files), len(files))
- for i, file := range files {
- filenames[i] = file.Name()
- }
- return filenames
- }
- func checkDirectory(t *testing.T, dir string, expectedFiles []string) {
- files, err := ioutil.ReadDir(dir)
- if err != nil {
- t.Fatalf("Could not read directory: %s", err)
- }
- if len(files) != len(expectedFiles) {
- log.Fatalf("Directory should contain exactly %d file(s), got %d", len(expectedFiles), len(files))
- }
- filenames := extractFilenames(files)
- sort.Strings(filenames)
- sort.Strings(expectedFiles)
- for i, filename := range filenames {
- if filename != expectedFiles[i] {
- t.Fatalf("File %s should be in the directory, got: %s", expectedFiles[i], filename)
- }
- }
- }
- func executeProcess(t *testing.T, contextDir string) {
- modifiableCtx := &tarSumContext{root: contextDir}
- ctx := DockerIgnoreContext{ModifiableContext: modifiableCtx}
- err := ctx.Process([]string{DefaultDockerfileName})
- if err != nil {
- t.Fatalf("Error when executing Process: %s", err)
- }
- }
- func TestProcessShouldRemoveDockerfileDockerignore(t *testing.T) {
- contextDir, cleanup := createTestTempDir(t, "", "builder-dockerignore-process-test")
- defer cleanup()
- createTestTempFile(t, contextDir, shouldStayFilename, testfileContents, 0777)
- createTestTempFile(t, contextDir, dockerignoreFilename, "Dockerfile\n.dockerignore", 0777)
- createTestTempFile(t, contextDir, DefaultDockerfileName, dockerfileContents, 0777)
- executeProcess(t, contextDir)
- checkDirectory(t, contextDir, []string{shouldStayFilename})
- }
- func TestProcessNoDockerignore(t *testing.T) {
- contextDir, cleanup := createTestTempDir(t, "", "builder-dockerignore-process-test")
- defer cleanup()
- createTestTempFile(t, contextDir, shouldStayFilename, testfileContents, 0777)
- createTestTempFile(t, contextDir, DefaultDockerfileName, dockerfileContents, 0777)
- executeProcess(t, contextDir)
- checkDirectory(t, contextDir, []string{shouldStayFilename, DefaultDockerfileName})
- }
- func TestProcessShouldLeaveAllFiles(t *testing.T) {
- contextDir, cleanup := createTestTempDir(t, "", "builder-dockerignore-process-test")
- defer cleanup()
- createTestTempFile(t, contextDir, shouldStayFilename, testfileContents, 0777)
- createTestTempFile(t, contextDir, DefaultDockerfileName, dockerfileContents, 0777)
- createTestTempFile(t, contextDir, dockerignoreFilename, "input1\ninput2", 0777)
- executeProcess(t, contextDir)
- checkDirectory(t, contextDir, []string{shouldStayFilename, DefaultDockerfileName, dockerignoreFilename})
- }
|