github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/tekton/syntax/pipeline_internal_test.go (about) 1 // +build unit 2 3 package syntax 4 5 import ( 6 "strings" 7 "testing" 8 ) 9 10 func TestFindDuplicates(t *testing.T) { 11 12 tests := []struct { 13 name string 14 input []string 15 errors []string 16 }{ 17 { 18 name: "Two stage name duplicated", 19 input: []string{"Stage 1", "Stage 1", "Stage 2", "Stage 2"}, 20 errors: []string{"Stage 1", "Stage 2"}, 21 }, { 22 name: "One stage name duplicated", 23 input: []string{"Stage 1", "Stage 1"}, 24 errors: []string{"Stage 1"}, 25 }, { 26 name: "No stage name duplicated", 27 input: []string{"Stage 0", "Stage 1", "Stage 2", "Stage 3"}, 28 errors: nil, 29 }, { 30 name: "Case-insensitive stage name duplicated", 31 input: []string{"Stage 1", "stage 1"}, 32 errors: []string{"Stage 1"}, 33 }, 34 } 35 36 for _, tt := range tests { 37 t.Run(tt.name, func(t *testing.T) { 38 39 err := findDuplicates(tt.input) 40 41 if len(tt.errors) == 0 && err != nil { 42 t.Fatal("Not all duplicates found A") 43 } 44 45 if len(tt.errors) > 0 && len(err.Details) > 0 { 46 for _, expectedError := range tt.errors { 47 if !strings.Contains(err.Details, expectedError) { 48 t.Fatal("Not all duplicates found", expectedError) 49 } 50 } 51 } 52 53 if len(tt.errors) == 0 { 54 if err != nil { 55 t.Fatal("Unexpected error ", err.Details) 56 } 57 } 58 59 }) 60 } 61 }