github.com/kamilsk/grafaman@v1.0.0-beta3.0.20201207211242-3e0d02dd84ce/main_test.go (about)

     1  package main
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"go.octolab.org/safe"
    10  )
    11  
    12  func TestExecution(t *testing.T) {
    13  	t.Run("success", func(t *testing.T) {
    14  		exit = func(code int) { assert.Equal(t, 0, code) }
    15  		stderr, stdout = ioutil.Discard, ioutil.Discard
    16  		os.Args = []string{"root", "version"}
    17  		main()
    18  	})
    19  	t.Run("failure", func(t *testing.T) {
    20  		exit = func(code int) { assert.Equal(t, 1, code) }
    21  		stderr, stdout = ioutil.Discard, ioutil.Discard
    22  		os.Args = []string{"root", "unknown"}
    23  		main()
    24  	})
    25  	t.Run("shutdown with panic", func(t *testing.T) {
    26  		exit = func(code int) { assert.Equal(t, 1, code) }
    27  		stderr, stdout = ioutil.Discard, ioutil.Discard
    28  		safe.Do(func() error { panic("test") }, shutdown)
    29  	})
    30  }