github.com/verrazzano/verrazzano@v1.7.0/tools/vz/cmd/helpers/log_format_test.go (about)

     1  // Copyright (c) 2022, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package helpers
     5  
     6  import (
     7  	"github.com/spf13/pflag"
     8  	"testing"
     9  )
    10  
    11  func TestLogFormat_AsFlag(t *testing.T) {
    12  	tests := []struct {
    13  		name    string
    14  		args    []string
    15  		want    LogFormat
    16  		wantErr bool
    17  	}{
    18  		{name: "simple", args: []string{"--v=simple"}, want: LogFormatSimple, wantErr: false},
    19  		{name: "json", args: []string{"--v=json"}, want: LogFormatJSON, wantErr: false},
    20  		{name: "invalid", args: []string{"--v=invalid"}, want: "", wantErr: true},
    21  	}
    22  	for _, tt := range tests {
    23  		t.Run(tt.name, func(t *testing.T) {
    24  			var flags pflag.FlagSet
    25  			flags.Init("test", pflag.ContinueOnError)
    26  			var v LogFormat
    27  			flags.VarP(&v, "v", "v", "usage")
    28  			if err := flags.Parse(tt.args); (err != nil) != tt.wantErr {
    29  				t.Errorf("flags.Parse(LogFormat) error = %v, wantErr %v", err, tt.wantErr)
    30  			}
    31  			if v.String() != tt.want.String() {
    32  				t.Errorf("expected value %q got %q", tt.want.String(), v.String())
    33  			}
    34  			if v.Type() != "format" {
    35  				t.Errorf("expected type to be %q got %q", "format", v.Type())
    36  			}
    37  		})
    38  	}
    39  }