github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/disable_test.go (about)

     1  package cli
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestDisable(t *testing.T) {
    10  	for _, tc := range []struct {
    11  		name            string
    12  		args            []string
    13  		expectedEnabled []string
    14  		expectedError   string
    15  	}{
    16  		{
    17  			"normal",
    18  			[]string{"enabled_a", "enabled_b"},
    19  			[]string{"enabled_c", "(Tiltfile)"},
    20  			"",
    21  		},
    22  		{
    23  			"all",
    24  			[]string{"--all"},
    25  			[]string{"(Tiltfile)"},
    26  			"",
    27  		},
    28  		{
    29  			"all+names",
    30  			[]string{"--all", "enabled_b"},
    31  			nil,
    32  			"cannot use --all with resource names",
    33  		},
    34  		{
    35  			"no names",
    36  			nil,
    37  			nil,
    38  			"must specify at least one resource",
    39  		},
    40  		{
    41  			"nonexistent resource",
    42  			[]string{"foo"},
    43  			nil,
    44  			"no such resource \"foo\"",
    45  		},
    46  		{
    47  			"Tiltfile",
    48  			[]string{"(Tiltfile)"},
    49  			nil,
    50  			"(Tiltfile) cannot be enabled or disabled",
    51  		},
    52  	} {
    53  		t.Run(tc.name, func(t *testing.T) {
    54  			f := newEnableFixture(t)
    55  
    56  			f.createResources()
    57  
    58  			cmd := disableCmd{}
    59  			c := cmd.register()
    60  			err := c.Flags().Parse(tc.args)
    61  			require.NoError(t, err)
    62  			err = cmd.run(f.ctx, c.Flags().Args())
    63  			if tc.expectedError != "" {
    64  				require.Error(t, err)
    65  				require.Contains(t, err.Error(), tc.expectedError)
    66  				// if there's an error, expect enabled states to remain the same
    67  				tc.expectedEnabled = []string{"enabled_a", "enabled_b", "enabled_c", "(Tiltfile)"}
    68  			} else {
    69  				require.NoError(t, err)
    70  			}
    71  
    72  			require.ElementsMatch(t, tc.expectedEnabled, f.enabledResources())
    73  		})
    74  	}
    75  }