docker_cli_import_test.go 3.5 KB

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