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 }