github.com/endocode/docker@v1.4.2-0.20160113120958-46eb4700391e/integration-cli/docker_cli_import_test.go (about)

     1  package main
     2  
     3  import (
     4  	"bufio"
     5  	"io/ioutil"
     6  	"os"
     7  	"os/exec"
     8  	"regexp"
     9  	"strings"
    10  
    11  	"github.com/docker/docker/pkg/integration/checker"
    12  	"github.com/go-check/check"
    13  )
    14  
    15  func (s *DockerSuite) TestImportDisplay(c *check.C) {
    16  	testRequires(c, DaemonIsLinux)
    17  	out, _ := dockerCmd(c, "run", "-d", "busybox", "true")
    18  	cleanedContainerID := strings.TrimSpace(out)
    19  
    20  	out, _, err := runCommandPipelineWithOutput(
    21  		exec.Command(dockerBinary, "export", cleanedContainerID),
    22  		exec.Command(dockerBinary, "import", "-"),
    23  	)
    24  	c.Assert(err, checker.IsNil)
    25  
    26  	c.Assert(out, checker.Count, "\n", 1, check.Commentf("display is expected 1 '\\n' but didn't"))
    27  
    28  	image := strings.TrimSpace(out)
    29  	out, _ = dockerCmd(c, "run", "--rm", image, "true")
    30  	c.Assert(out, checker.Equals, "", check.Commentf("command output should've been nothing."))
    31  }
    32  
    33  func (s *DockerSuite) TestImportBadURL(c *check.C) {
    34  	testRequires(c, DaemonIsLinux)
    35  	out, _, err := dockerCmdWithError("import", "http://nourl/bad")
    36  	c.Assert(err, checker.NotNil, check.Commentf("import was supposed to fail but didn't"))
    37  	c.Assert(out, checker.Contains, "dial tcp", check.Commentf("expected an error msg but didn't get one"))
    38  }
    39  
    40  func (s *DockerSuite) TestImportFile(c *check.C) {
    41  	testRequires(c, DaemonIsLinux)
    42  	dockerCmd(c, "run", "--name", "test-import", "busybox", "true")
    43  
    44  	temporaryFile, err := ioutil.TempFile("", "exportImportTest")
    45  	c.Assert(err, checker.IsNil, check.Commentf("failed to create temporary file"))
    46  	defer os.Remove(temporaryFile.Name())
    47  
    48  	runCmd := exec.Command(dockerBinary, "export", "test-import")
    49  	runCmd.Stdout = bufio.NewWriter(temporaryFile)
    50  
    51  	_, err = runCommand(runCmd)
    52  	c.Assert(err, checker.IsNil, check.Commentf("failed to export a container"))
    53  
    54  	out, _ := dockerCmd(c, "import", temporaryFile.Name())
    55  	c.Assert(out, checker.Count, "\n", 1, check.Commentf("display is expected 1 '\\n' but didn't"))
    56  	image := strings.TrimSpace(out)
    57  
    58  	out, _ = dockerCmd(c, "run", "--rm", image, "true")
    59  	c.Assert(out, checker.Equals, "", check.Commentf("command output should've been nothing."))
    60  }
    61  
    62  func (s *DockerSuite) TestImportFileWithMessage(c *check.C) {
    63  	testRequires(c, DaemonIsLinux)
    64  	dockerCmd(c, "run", "--name", "test-import", "busybox", "true")
    65  
    66  	temporaryFile, err := ioutil.TempFile("", "exportImportTest")
    67  	c.Assert(err, checker.IsNil, check.Commentf("failed to create temporary file"))
    68  	defer os.Remove(temporaryFile.Name())
    69  
    70  	runCmd := exec.Command(dockerBinary, "export", "test-import")
    71  	runCmd.Stdout = bufio.NewWriter(temporaryFile)
    72  
    73  	_, err = runCommand(runCmd)
    74  	c.Assert(err, checker.IsNil, check.Commentf("failed to export a container"))
    75  
    76  	message := "Testing commit message"
    77  	out, _ := dockerCmd(c, "import", "-m", message, temporaryFile.Name())
    78  	c.Assert(out, checker.Count, "\n", 1, check.Commentf("display is expected 1 '\\n' but didn't"))
    79  	image := strings.TrimSpace(out)
    80  
    81  	out, _ = dockerCmd(c, "history", image)
    82  	split := strings.Split(out, "\n")
    83  
    84  	c.Assert(split, checker.HasLen, 3, check.Commentf("expected 3 lines from image history"))
    85  	r := regexp.MustCompile("[\\s]{2,}")
    86  	split = r.Split(split[1], -1)
    87  
    88  	c.Assert(message, checker.Equals, split[3], check.Commentf("didn't get expected value in commit message"))
    89  
    90  	out, _ = dockerCmd(c, "run", "--rm", image, "true")
    91  	c.Assert(out, checker.Equals, "", check.Commentf("command output should've been nothing"))
    92  }
    93  
    94  func (s *DockerSuite) TestImportFileNonExistentFile(c *check.C) {
    95  	_, _, err := dockerCmdWithError("import", "example.com/myImage.tar")
    96  	c.Assert(err, checker.NotNil, check.Commentf("import non-existing file must failed"))
    97  }