mirror of
https://github.com/containers/podman.git
synced 2025-06-05 22:31:06 +08:00
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:
@ -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
|
||||
|
39
test/e2e/run_restart_test.go
Normal file
39
test/e2e/run_restart_test.go
Normal 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))
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user