github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/main_test.go (about) 1 package main 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/ActiveState/cli/internal/errs" 8 "github.com/ActiveState/cli/internal/output" 9 "github.com/ActiveState/cli/internal/testhelpers/suite" 10 ) 11 12 type MainTestSuite struct { 13 suite.Suite 14 } 15 16 func (suite *MainTestSuite) TestOutputer() { 17 { 18 outputer, err := initOutput(outputFlags{"", false, false}, "", "") 19 suite.Require().NoError(err, errs.JoinMessage(err)) 20 suite.Equal(output.PlainFormatName, outputer.Type(), "Returns Plain outputer") 21 } 22 23 { 24 outputer, err := initOutput(outputFlags{string(output.PlainFormatName), false, false}, "", "") 25 suite.Require().NoError(err) 26 suite.Equal(output.PlainFormatName, outputer.Type(), "Returns Plain outputer") 27 } 28 29 { 30 outputer, err := initOutput(outputFlags{string(output.JSONFormatName), false, false}, "", "") 31 suite.Require().NoError(err) 32 suite.Equal(output.JSONFormatName, outputer.Type(), "Returns JSON outputer") 33 } 34 35 { 36 outputer, err := initOutput(outputFlags{"", false, false}, string(output.JSONFormatName), "") 37 suite.Require().NoError(err) 38 suite.Equal(output.JSONFormatName, outputer.Type(), "Returns JSON outputer") 39 } 40 41 { 42 outputer, err := initOutput(outputFlags{"", false, false}, string(output.EditorFormatName), "") 43 suite.Require().NoError(err) 44 suite.Equal(output.EditorFormatName, outputer.Type(), "Returns JSON outputer") 45 } 46 } 47 48 func (suite *MainTestSuite) TestParseOutputFlags() { 49 suite.Equal(outputFlags{"plain", false, false}, parseOutputFlags([]string{"state", "foo", "-o", "plain"})) 50 suite.Equal(outputFlags{"json", false, false}, parseOutputFlags([]string{"state", "foo", "--output", "json"})) 51 suite.Equal(outputFlags{"json", false, false}, parseOutputFlags([]string{"state", "foo", "-o", "json"})) 52 suite.Equal(outputFlags{"editor", false, false}, parseOutputFlags([]string{"state", "foo", "--output", "editor"})) 53 suite.Equal(outputFlags{"", true, false}, parseOutputFlags([]string{"state", "foo", "--mono"})) 54 suite.Equal(outputFlags{"", false, true}, parseOutputFlags([]string{"state", "foo", "--non-interactive"})) 55 suite.Equal(outputFlags{"", false, true}, parseOutputFlags([]string{"state", "foo", "-n"})) 56 } 57 58 func (suite *MainTestSuite) TestDisableColors() { 59 monoFlags := outputFlags{Mono: true} 60 nonMonoFlags := outputFlags{Mono: false} 61 62 err := os.Setenv("NO_COLOR", "") 63 suite.Require().NoError(err) 64 suite.True(nonMonoFlags.DisableColor(false), "disable colors if NO_COLOR is set") 65 err = os.Unsetenv("NO_COLOR") 66 suite.Require().NoError(err) 67 suite.False(nonMonoFlags.DisableColor(false), "do not disable colors by default") 68 suite.True(monoFlags.DisableColor(false), "disable colors if --mono is set") 69 } 70 71 func TestMainTestSuite(t *testing.T) { 72 suite.Run(t, new(MainTestSuite)) 73 }