(ctx context.Context)
| 612 | } |
| 613 | |
| 614 | func (d *dockerRunnable) prePullImage(ctx context.Context) (err error) { |
| 615 | if d.IsRunning() { |
| 616 | return errors.Newf("service %s is running; expected stopped", d.Name()) |
| 617 | } |
| 618 | |
| 619 | if _, err = d.env.execContext(ctx, "docker", "image", "inspect", d.opts.Image).CombinedOutput(); err == nil { |
| 620 | return nil |
| 621 | } |
| 622 | |
| 623 | // Assuming Error: No such image: <image>. |
| 624 | cmd := d.env.execContext(ctx, "docker", "pull", d.opts.Image) |
| 625 | l := &LinePrefixLogger{prefix: d.Name() + ": ", logger: d.logger} |
| 626 | cmd.Stdout = l |
| 627 | cmd.Stderr = l |
| 628 | if err = cmd.Run(); err != nil { |
| 629 | return errors.Wrapf(err, "docker image %s failed to download", d.opts.Image) |
| 630 | } |
| 631 | return nil |
| 632 | } |
| 633 | |
| 634 | func (d *dockerRunnable) WaitReady() (err error) { |
| 635 | if !d.IsRunning() { |
no test coverage detected