summaryrefslogtreecommitdiff
path: root/integration/commands_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'integration/commands_test.go')
-rw-r--r--integration/commands_test.go31
1 files changed, 30 insertions, 1 deletions
diff --git a/integration/commands_test.go b/integration/commands_test.go
index 9f7a41384c..f254973b43 100644
--- a/integration/commands_test.go
+++ b/integration/commands_test.go
@@ -930,7 +930,7 @@ run [ "$(ls -d /var/run/sshd)" = "/var/run/sshd" ]
// #2098 - Docker cidFiles only contain short version of the containerId
//sudo docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"
// TestRunCidFile tests that run --cidfile returns the longid
-func TestRunCidFile(t *testing.T) {
+func TestRunCidFileCheckIDLength(t *testing.T) {
stdout, stdoutPipe := io.Pipe()
tmpDir, err := ioutil.TempDir("", "TestRunCidFile")
@@ -979,6 +979,35 @@ func TestRunCidFile(t *testing.T) {
}
+// Ensure that CIDFile gets deleted if it's empty
+// Perform this test by making `docker run` fail
+func TestRunCidFileCleanupIfEmpty(t *testing.T) {
+ tmpDir, err := ioutil.TempDir("", "TestRunCidFile")
+ if err != nil {
+ t.Fatal(err)
+ }
+ tmpCidFile := path.Join(tmpDir, "cid")
+
+ cli := api.NewDockerCli(nil, ioutil.Discard, ioutil.Discard, testDaemonProto, testDaemonAddr)
+ defer cleanup(globalEngine, t)
+
+ c := make(chan struct{})
+ go func() {
+ defer close(c)
+ if err := cli.CmdRun("--cidfile", tmpCidFile, unitTestImageID); err == nil {
+ t.Fatal("running without a command should haveve failed")
+ }
+ if _, err := os.Stat(tmpCidFile); err == nil {
+ t.Fatalf("empty CIDFile '%s' should've been deleted", tmpCidFile)
+ }
+ }()
+ defer os.RemoveAll(tmpDir)
+
+ setTimeout(t, "CmdRun timed out", 5*time.Second, func() {
+ <-c
+ })
+}
+
func TestContainerOrphaning(t *testing.T) {
// setup a temporary directory