mirror of
https://github.com/containers/podman
synced 2024-10-19 08:44:11 +00:00
Get proper exit code when running or starting a container.
When we finish running a container, we need to call wait in order to get the exit code from the container. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
parent
a852afab2f
commit
f20694cc96
|
@ -360,10 +360,19 @@ func (ic *ContainerEngine) ContainerStart(ctx context.Context, namesOrIds []stri
|
|||
report := entities.ContainerStartReport{Id: name}
|
||||
if options.Attach {
|
||||
report.Err = startAndAttach(ic, name, &options.DetachKeys, options.Stdin, options.Stdout, options.Stderr)
|
||||
if report.Err == nil {
|
||||
exitCode, err := containers.Wait(ic.ClientCxt, name, nil)
|
||||
if err == nil {
|
||||
report.ExitCode = int(exitCode)
|
||||
}
|
||||
} else {
|
||||
report.ExitCode = define.ExitCode(report.Err)
|
||||
}
|
||||
reports = append(reports, &report)
|
||||
return reports, nil
|
||||
}
|
||||
report.Err = containers.Start(ic.ClientCxt, name, &options.DetachKeys)
|
||||
report.ExitCode = define.ExitCode(report.Err)
|
||||
reports = append(reports, &report)
|
||||
}
|
||||
return reports, nil
|
||||
|
@ -385,11 +394,18 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
|
|||
// Attach
|
||||
if !opts.Detach {
|
||||
err = startAndAttach(ic, con.ID, &opts.DetachKeys, opts.InputStream, opts.OutputStream, opts.ErrorStream)
|
||||
|
||||
if err == nil {
|
||||
exitCode, err := containers.Wait(ic.ClientCxt, con.ID, nil)
|
||||
if err == nil {
|
||||
report.ExitCode = int(exitCode)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = containers.Start(ic.ClientCxt, con.ID, nil)
|
||||
}
|
||||
report.ExitCode = define.ExitCode(err)
|
||||
if err != nil {
|
||||
report.ExitCode = define.ExitCode(err)
|
||||
}
|
||||
return &report, err
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,6 @@ var _ = Describe("Podman run exit", func() {
|
|||
})
|
||||
|
||||
It("podman run exit 50", func() {
|
||||
Skip(v2remotefail)
|
||||
result := podmanTest.Podman([]string{"run", ALPINE, "sh", "-c", "exit 50"})
|
||||
result.WaitWithDefaultTimeout()
|
||||
Expect(result.ExitCode()).To(Equal(50))
|
||||
|
|
Loading…
Reference in a new issue