Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)
Johan Euphrosine authored on 2014/07/22 04:10:47... | ... |
@@ -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 |
} |