@@ -117,7 +117,11 @@ func runIt(recipe internal.Recipe) error {
117
117
return fmt .Errorf ("failed to create docker runner: %w" , err )
118
118
}
119
119
120
+ sig := make (chan os.Signal , 1 )
121
+ signal .Notify (sig , os .Interrupt )
122
+
120
123
if err := dockerRunner .Run (); err != nil {
124
+ dockerRunner .Stop ()
121
125
return fmt .Errorf ("failed to run docker: %w" , err )
122
126
}
123
127
@@ -138,23 +142,20 @@ func runIt(recipe internal.Recipe) error {
138
142
}
139
143
}
140
144
141
- // wait for service readiness
142
- if err := internal .WaitForReady (svcManager ); err != nil {
143
- dockerRunner .Stop ()
144
- return fmt .Errorf ("failed to wait for service readiness: %w" , err )
145
- }
146
-
147
145
watchdogErr := make (chan error , 1 )
148
- if watchdog {
149
- go func () {
146
+ readyErr := make (chan error , 1 )
147
+
148
+ go func () {
149
+ if err := internal .WaitForReady (svcManager ); err != nil {
150
+ readyErr <- fmt .Errorf ("failed to wait for service readiness: %w" , err )
151
+ }
152
+
153
+ if watchdog {
150
154
if err := internal .RunWatchdog (svcManager ); err != nil {
151
155
watchdogErr <- fmt .Errorf ("watchdog failed: %w" , err )
152
156
}
153
- }()
154
- }
155
-
156
- sig := make (chan os.Signal , 1 )
157
- signal .Notify (sig , os .Interrupt )
157
+ }
158
+ }()
158
159
159
160
var timerCh <- chan time.Time
160
161
if timeout > 0 {
@@ -166,6 +167,8 @@ func runIt(recipe internal.Recipe) error {
166
167
fmt .Println ("Stopping..." )
167
168
case err := <- dockerRunner .ExitErr ():
168
169
fmt .Println ("Service failed:" , err )
170
+ case err := <- readyErr :
171
+ fmt .Println ("Service failed to start:" , err )
169
172
case err := <- watchdogErr :
170
173
fmt .Println ("Watchdog failed:" , err )
171
174
case <- timerCh :
0 commit comments