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  }