@@ -21,6 +21,24 @@ import (
2121 "github.com/f1bonacc1/process-compose/src/types"
2222)
2323
24+ func waitForProcessState (t * testing.T , runner * ProjectRunner , name string , wantStatus string , timeout time.Duration ) {
25+ t .Helper ()
26+ deadline := time .Now ().Add (timeout )
27+ for time .Now ().Before (deadline ) {
28+ state , err := runner .GetProcessState (name )
29+ if err != nil {
30+ t .Error (err .Error ())
31+ return
32+ }
33+ if state .Status == wantStatus {
34+ return
35+ }
36+ time .Sleep (50 * time .Millisecond )
37+ }
38+ state , _ := runner .GetProcessState (name )
39+ t .Errorf ("process %s: want %s, got %s (after %v)" , name , wantStatus , state .Status , timeout )
40+ }
41+
2442func getFixtures () []string {
2543 matches , err := filepath .Glob ("../../fixtures/process-compose-*.yaml" )
2644 if err != nil {
@@ -611,14 +629,8 @@ func TestSystem_TestProcShutDownNoRestart(t *testing.T) {
611629 return
612630 }
613631
614- time .Sleep (100 * time .Millisecond )
615- state , err = runner .GetProcessState (restarting )
616- if err != nil {
617- t .Error (err .Error ())
618- return
619- }
620- if state .Status != types .ProcessStateCompleted {
621- t .Errorf ("process %s want %s got %s" , restarting , types .ProcessStateCompleted , state .Status )
632+ waitForProcessState (t , runner , restarting , types .ProcessStateCompleted , 5 * time .Second )
633+ if t .Failed () {
622634 return
623635 }
624636 state , err = runner .GetProcessState (notRestarting )
@@ -636,16 +648,7 @@ func TestSystem_TestProcShutDownNoRestart(t *testing.T) {
636648 return
637649 }
638650
639- time .Sleep (100 * time .Millisecond )
640- state , err = runner .GetProcessState (notRestarting )
641- if err != nil {
642- t .Error (err .Error ())
643- return
644- }
645- if state .Status != types .ProcessStateCompleted {
646- t .Errorf ("process %s is running" , notRestarting )
647- return
648- }
651+ waitForProcessState (t , runner , notRestarting , types .ProcessStateCompleted , 5 * time .Second )
649652}
650653func TestSystem_TestReadyLine (t * testing.T ) {
651654 proc1 := "proc1"
0 commit comments