github.com/golazy/golazy@v0.0.7-0.20221012133820-968fe65a0b65/lazydev/runner/runner_test.go (about)

     1  package runner
     2  
     3  import (
     4  	"os/exec"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  func TestReadEvent(t *testing.T) {
    10  
    11  	r := New(exec.Command("echo", "Listening 127.0.0.1:80"), nil)
    12  	defer r.Close()
    13  
    14  	r.Start()
    15  
    16  	if _, ok := (<-r.Events).(EventStart); !ok {
    17  		t.Fatal("Expected a EventSTart")
    18  	}
    19  	eventReady, ok := (<-r.Events).(EventReady)
    20  	if !ok {
    21  		t.Fatal("Expected a EventSTart")
    22  	}
    23  
    24  	if string(eventReady.Data) != "Listening 127.0.0.1:80\n" {
    25  		t.Fatalf("%q", string(eventReady.Data))
    26  	}
    27  
    28  	if _, ok := (<-r.Events).(EventStopped); !ok {
    29  		t.Fatal("Expected a EventSTart")
    30  	}
    31  
    32  }
    33  
    34  func TestLifecycle(t *testing.T) {
    35  
    36  	r := New(exec.Command("echo", "hello"), nil)
    37  	defer r.Close()
    38  
    39  	// Check defaults
    40  	err := r.Stop()
    41  	if err != ErrNotRunning {
    42  		t.Fatal("expected some error")
    43  	}
    44  
    45  	// Start the programm
    46  	go func() {
    47  		err := r.Start()
    48  		if err != nil {
    49  			panic(err)
    50  		}
    51  	}()
    52  
    53  	// Did we receive start?
    54  	if event, ok := (<-r.Events).(EventStart); !ok {
    55  		t.Fatal("Expected EventStart. Got:", event)
    56  	}
    57  
    58  	// Did we receive stop?
    59  	event, ok := (<-r.Events).(EventStopped)
    60  	if !ok {
    61  		t.Fatal("expected EventStopped, got:", event)
    62  	}
    63  	if event.ExitCode != 0 {
    64  		t.Error(event.ExitCode)
    65  	}
    66  	if string(strings.Join(event.Output, "\n")) != "hello" {
    67  		t.Error(event.Output)
    68  	}
    69  
    70  	// Now lets tests restart
    71  	r.cmd = exec.Command("sleep", "10")
    72  
    73  	// As it is stopped, it behaves like start
    74  	err = r.Restart()
    75  	if err != nil {
    76  		t.Fatal(err)
    77  	}
    78  	ev := <-r.Events
    79  	if _, ok := (ev).(EventRestart); !ok {
    80  		t.Fatalf("expected EventRestart, got: %T", ev)
    81  	}
    82  
    83  	err = r.Restart()
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	}
    87  
    88  	ev = <-r.Events
    89  	if _, ok := (ev).(EventRestart); !ok {
    90  		t.Fatalf("expected EventRestart, got: %T", ev)
    91  	}
    92  
    93  	ev = <-r.Events
    94  	evStopped, ok := (ev).(EventStopped)
    95  
    96  	if !ok {
    97  		t.Fatalf("expected EventStop, got: %T", ev)
    98  	}
    99  
   100  	if evStopped.ExitCode != -1 {
   101  		t.Fatal(ev)
   102  	}
   103  
   104  	err = r.Stop()
   105  	if err != nil {
   106  		t.Fatal(err)
   107  	}
   108  
   109  	ev = <-r.Events
   110  	_, ok = (ev).(EventStop)
   111  
   112  	if !ok {
   113  		t.Fatalf("expected EventStop, got: %T", ev)
   114  	}
   115  
   116  	ev = <-r.Events
   117  	evStopped, ok = (ev).(EventStopped)
   118  
   119  	if !ok {
   120  		t.Fatalf("expected EventStop, got: %T", ev)
   121  	}
   122  
   123  	if evStopped.ExitCode != -1 {
   124  		t.Fatal(ev)
   125  	}
   126  
   127  }