Browse code

integration-cli/TestBuildAddTar: generate context from test

Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)

Johan Euphrosine authored on 2014/07/22 04:10:47
Showing 2 changed files
1 1
deleted file mode 100644
2 2
Binary files a/integration-cli/build_tests/TestBuildAddTar/test.tar and /dev/null differ
... ...
@@ -1,7 +1,10 @@
1 1
 package main
2 2
 
3 3
 import (
4
+	"archive/tar"
4 5
 	"fmt"
6
+	"io"
7
+	"io/ioutil"
5 8
 	"os"
6 9
 	"os/exec"
7 10
 	"path/filepath"
... ...
@@ -1748,11 +1751,48 @@ func TestBuildAddTar(t *testing.T) {
1748 1748
 	name := "testbuildaddtar"
1749 1749
 	defer deleteImages(name)
1750 1750
 
1751
-        buildDirectory := filepath.Join(workingDirectory, "build_tests", "TestBuildAddTar")
1752
-        buildCmd := exec.Command(dockerBinary, "build", "-t", name, ".")
1753
-        buildCmd.Dir = buildDirectory
1754
-        out, _, err := runCommandWithOutput(buildCmd)
1755
-        errorOut(err, t, fmt.Sprintf("build failed to complete for TestBuildAddTar/%s: %v", n, err))
1751
+	ctx := func() *FakeContext {
1752
+		tmpDir, err := ioutil.TempDir("", "fake-context")
1753
+		testTar, err := os.Create(filepath.Join(tmpDir, "test.tar"))
1754
+		if err != nil {
1755
+			t.Fatalf("failed to create test.tar archive: %v", err)
1756
+		}
1757
+		defer testTar.Close()
1758
+
1759
+		tw := tar.NewWriter(testTar)
1760
+
1761
+		if err := tw.WriteHeader(&tar.Header{
1762
+			Name: "test/foo",
1763
+			Size: 2,
1764
+		}); err != nil {
1765
+			t.Fatalf("failed to write tar file header: %v", err)
1766
+		}
1767
+		if _, err := tw.Write([]byte("Hi")); err != nil {
1768
+			t.Fatalf("failed to write tar file content: %v", err)
1769
+		}
1770
+		if err := tw.Close(); err != nil {
1771
+			t.Fatalf("failed to close tar archive: %v", err)
1772
+		}
1773
+
1774
+		dockerfile, err := os.Open(filepath.Join(workingDirectory, "build_tests", "TestBuildAddTar", "Dockerfile"))
1775
+		if err != nil {
1776
+			t.Fatalf("failed to open source dockerfile: %v", err)
1777
+		}
1778
+		defer dockerfile.Close()
1779
+		dest, err := os.Create(filepath.Join(tmpDir, "Dockerfile"))
1780
+		if err != nil {
1781
+			t.Fatalf("failed to open destination dockerfile: %v", err)
1782
+		}
1783
+		if _, err := io.Copy(dest, dockerfile); err != nil {
1784
+			t.Fatalf("failed top copy dockerfile: %v", err)
1785
+		}
1786
+		defer dest.Close()
1787
+		return &FakeContext{Dir: tmpDir}
1788
+	}()
1789
+
1790
+	if _, err := buildImageFromContext(name, ctx, true); err != nil {
1791
+		t.Fatalf("build failed to complete for TestBuildAddTar: %v", err)
1792
+	}
1756 1793
 
1757 1794
 	logDone("build - ADD tar")
1758 1795
 }