github.com/clusterize-io/tusk@v0.6.3-0.20211001020217-cfe8a8cd0d4a/runner/arg_test.go (about)

     1  package runner
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/clusterize-io/tusk/marshal"
     7  	yaml "gopkg.in/yaml.v2"
     8  )
     9  
    10  func TestEvaluate(t *testing.T) {
    11  	expected := "foo"
    12  	arg := Arg{Passed: expected}
    13  
    14  	actual, err := arg.Evaluate()
    15  	if err != nil {
    16  		t.Fatalf("Arg.Evaluate() => unexpected error: %v", err)
    17  	}
    18  
    19  	if expected != actual {
    20  		t.Errorf("Arg.Evaluate() => want %q, got %q", expected, actual)
    21  	}
    22  }
    23  
    24  func TestEvaluate_specified(t *testing.T) {
    25  	expected := "foo"
    26  	arg := Arg{
    27  		Passed: expected,
    28  		ValueWithList: ValueWithList{
    29  			ValuesAllowed: marshal.StringList{"wrong", expected, "other"},
    30  		},
    31  	}
    32  
    33  	actual, err := arg.Evaluate()
    34  	if err != nil {
    35  		t.Fatalf("Arg.Evaluate() => unexpected error: %v", err)
    36  	}
    37  
    38  	if expected != actual {
    39  		t.Errorf("Arg.Evaluate() => want %q, got %q", expected, actual)
    40  	}
    41  }
    42  
    43  func TestEvaluate_unspecified(t *testing.T) {
    44  	passed := "foo"
    45  	arg := Arg{
    46  		Passed: passed,
    47  		ValueWithList: ValueWithList{
    48  			ValuesAllowed: marshal.StringList{"wrong", "other"},
    49  		},
    50  	}
    51  
    52  	if _, err := arg.Evaluate(); err == nil {
    53  		t.Fatal("Arg.Evaluate() => want error for nil argument, got nil")
    54  	}
    55  }
    56  
    57  func TestEvaluate_nil(t *testing.T) {
    58  	var arg *Arg
    59  	if _, err := arg.Evaluate(); err == nil {
    60  		t.Fatal("Arg.Evaluate() => want error for nil argument, got nil")
    61  	}
    62  }
    63  
    64  func TestGetArgsWithOrder(t *testing.T) {
    65  	name := "foo"
    66  	usage := "use me"
    67  	ms := yaml.MapSlice{
    68  		{Key: name, Value: &Arg{Usage: usage}},
    69  		{Key: "bar", Value: &Arg{Usage: "other usage"}},
    70  	}
    71  
    72  	args, err := getArgsWithOrder(ms)
    73  	if err != nil {
    74  		t.Fatalf("GetArgsWithOrder(ms) => unexpected error: %v", err)
    75  	}
    76  
    77  	if len(ms) != len(args) {
    78  		t.Fatalf(
    79  			"GetArgsWithOrder(ms) => want %d items, got %d",
    80  			len(ms), len(args),
    81  		)
    82  	}
    83  
    84  	opt := args[0]
    85  
    86  	if name != opt.Name {
    87  		t.Errorf(
    88  			"GetArgsWithOrder(ms) => want opt.Name %q, got %q",
    89  			name, opt.Name,
    90  		)
    91  	}
    92  
    93  	if usage != opt.Usage {
    94  		t.Errorf(
    95  			"GetArgsWithOrder(ms) => want arg.Usage %q, got %q",
    96  			usage, opt.Usage,
    97  		)
    98  	}
    99  
   100  	if args[1].Name != "bar" {
   101  		t.Errorf("GetArgsWithOrder(ms) => want 2nd arg %q, got %q", "bar", args[1].Name)
   102  	}
   103  }
   104  
   105  func TestGetArgsWithOrder_invalid(t *testing.T) {
   106  	ms := yaml.MapSlice{
   107  		{Key: "foo", Value: "not an arg"},
   108  	}
   109  
   110  	_, err := getArgsWithOrder(ms)
   111  	if err == nil {
   112  		t.Error("GetArgsWithOrder() => expected yaml parsing error")
   113  	}
   114  }