github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/command/arguments/validate_test.go (about) 1 package arguments 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/davecgh/go-spew/spew" 8 "github.com/hashicorp/terraform/internal/tfdiags" 9 ) 10 11 func TestParseValidate_valid(t *testing.T) { 12 testCases := map[string]struct { 13 args []string 14 want *Validate 15 }{ 16 "defaults": { 17 nil, 18 &Validate{ 19 Path: ".", 20 ViewType: ViewHuman, 21 }, 22 }, 23 "json": { 24 []string{"-json"}, 25 &Validate{ 26 Path: ".", 27 ViewType: ViewJSON, 28 }, 29 }, 30 "path": { 31 []string{"-json", "foo"}, 32 &Validate{ 33 Path: "foo", 34 ViewType: ViewJSON, 35 }, 36 }, 37 } 38 39 for name, tc := range testCases { 40 t.Run(name, func(t *testing.T) { 41 got, diags := ParseValidate(tc.args) 42 if len(diags) > 0 { 43 t.Fatalf("unexpected diags: %v", diags) 44 } 45 if *got != *tc.want { 46 t.Fatalf("unexpected result\n got: %#v\nwant: %#v", got, tc.want) 47 } 48 }) 49 } 50 } 51 52 func TestParseValidate_invalid(t *testing.T) { 53 testCases := map[string]struct { 54 args []string 55 want *Validate 56 wantDiags tfdiags.Diagnostics 57 }{ 58 "unknown flag": { 59 []string{"-boop"}, 60 &Validate{ 61 Path: ".", 62 ViewType: ViewHuman, 63 }, 64 tfdiags.Diagnostics{ 65 tfdiags.Sourceless( 66 tfdiags.Error, 67 "Failed to parse command-line flags", 68 "flag provided but not defined: -boop", 69 ), 70 }, 71 }, 72 "too many arguments": { 73 []string{"-json", "bar", "baz"}, 74 &Validate{ 75 Path: "bar", 76 ViewType: ViewJSON, 77 }, 78 tfdiags.Diagnostics{ 79 tfdiags.Sourceless( 80 tfdiags.Error, 81 "Too many command line arguments", 82 "Expected at most one positional argument.", 83 ), 84 }, 85 }, 86 } 87 88 for name, tc := range testCases { 89 t.Run(name, func(t *testing.T) { 90 got, gotDiags := ParseValidate(tc.args) 91 if *got != *tc.want { 92 t.Fatalf("unexpected result\n got: %#v\nwant: %#v", got, tc.want) 93 } 94 if !reflect.DeepEqual(gotDiags, tc.wantDiags) { 95 t.Errorf("wrong result\ngot: %s\nwant: %s", spew.Sdump(gotDiags), spew.Sdump(tc.wantDiags)) 96 } 97 }) 98 } 99 }