Add test. Move attach code in start back

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>

Closes: #482
Approved by: baude
This commit is contained in:
Matthew Heon
2018-03-13 15:12:52 -04:00
committed by Atomic Bot
parent 02a26c2934
commit 4739fc2d98
2 changed files with 49 additions and 10 deletions

View File

@ -104,18 +104,8 @@ func startCmd(c *cli.Context) error {
if err != nil {
return errors.Wrapf(err, "unable to parse annotations in %s", ctr.ID())
}
err = ctr.Start()
if err != nil {
if lastError != nil {
fmt.Fprintln(os.Stderr, lastError)
}
lastError = errors.Wrapf(err, "unable to start %s", container)
continue
}
// We only get a terminal session if both a tty was specified in the spec and
// -a on the command-line was given.
// Must be done after Start() because we might be restarting
// If so, the attach socket might be removed & recreated
if attach && tty {
// We increment the wg counter because we need to do the attach
wg.Add(1)
@ -131,6 +121,14 @@ func startCmd(c *cli.Context) error {
return errors.Errorf("unable to attach to container %s", ctr.ID())
}
}
err = ctr.Start()
if err != nil {
if lastError != nil {
fmt.Fprintln(os.Stderr, lastError)
}
lastError = errors.Wrapf(err, "unable to start %s", container)
continue
}
if !attach {
fmt.Println(ctr.ID())
}
@ -147,6 +145,8 @@ func startCmd(c *cli.Context) error {
// Otherwise the container is probably still running
if attach && tty {
lastError = ctr.Cleanup()
// No need for LastError as we can only have one ctr
// with attach
}
}
return lastError

View File

@ -0,0 +1,39 @@
package integration
import (
"os"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Podman run restart containers", func() {
var (
tempdir string
err error
podmanTest PodmanTest
)
BeforeEach(func() {
tempdir, err = CreateTempDirInTempDir()
if err != nil {
os.Exit(1)
}
podmanTest = PodmanCreate(tempdir)
podmanTest.RestoreAllArtifacts()
})
AfterEach(func() {
podmanTest.Cleanup()
})
It("Podman start after successful run", func() {
session := podmanTest.Podman([]string{"run", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session2 := podmanTest.Podman([]string{"start", "--attach", "--latest"})
session2.WaitWithDefaultTimeout()
Expect(session2.ExitCode()).To(Equal(0))
})
})