sigs.k8s.io/prow@v0.0.0-20240503223140-c5e374dc7eb1/pkg/initupload/run_test.go (about) 1 /* 2 Copyright 2018 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package initupload 18 19 import ( 20 "reflect" 21 "testing" 22 23 "github.com/GoogleCloudPlatform/testgrid/metadata" 24 prowapi "sigs.k8s.io/prow/pkg/apis/prowjobs/v1" 25 "sigs.k8s.io/prow/pkg/pod-utils/clone" 26 "sigs.k8s.io/prow/pkg/pod-utils/downwardapi" 27 ) 28 29 func TestSpecToStarted(t *testing.T) { 30 var tests = []struct { 31 name string 32 spec downwardapi.JobSpec 33 cloneRecords []clone.Record 34 expected metadata.Started 35 }{ 36 { 37 name: "Refs with Pull", 38 spec: downwardapi.JobSpec{ 39 Refs: &prowapi.Refs{ 40 Org: "kubernetes", 41 Repo: "test-infra", 42 BaseRef: "master", 43 BaseSHA: "deadbeef", 44 Pulls: []prowapi.Pull{ 45 { 46 Number: 123, 47 SHA: "abcd1234", 48 }, 49 }, 50 }, 51 }, 52 expected: metadata.Started{ 53 Pull: "123", 54 DeprecatedRepoVersion: "abcd1234", 55 RepoCommit: "abcd1234", 56 Repos: map[string]string{ 57 "kubernetes/test-infra": "master:deadbeef,123:abcd1234", 58 }, 59 }, 60 }, 61 { 62 name: "Refs with BaseRef only", 63 spec: downwardapi.JobSpec{ 64 Refs: &prowapi.Refs{ 65 Org: "kubernetes", 66 Repo: "test-infra", 67 BaseRef: "master", 68 }, 69 }, 70 expected: metadata.Started{ 71 DeprecatedRepoVersion: "master", 72 RepoCommit: "master", 73 Repos: map[string]string{ 74 "kubernetes/test-infra": "master", 75 }, 76 }, 77 }, 78 { 79 name: "Refs with BaseSHA and ExtraRef", 80 spec: downwardapi.JobSpec{ 81 Refs: &prowapi.Refs{ 82 Org: "kubernetes", 83 Repo: "test-infra", 84 BaseRef: "master", 85 BaseSHA: "deadbeef", 86 }, 87 ExtraRefs: []prowapi.Refs{ 88 { 89 Org: "kubernetes", 90 Repo: "release", 91 BaseRef: "v1.10", 92 }, 93 }, 94 }, 95 expected: metadata.Started{ 96 DeprecatedRepoVersion: "deadbeef", 97 RepoCommit: "deadbeef", 98 Repos: map[string]string{ 99 "kubernetes/test-infra": "master:deadbeef", 100 "kubernetes/release": "v1.10", 101 }, 102 }, 103 }, 104 { 105 name: "Refs with ExtraRef and cloneRecords containing a final SHA", 106 spec: downwardapi.JobSpec{ 107 Refs: &prowapi.Refs{ 108 Org: "kubernetes", 109 Repo: "test-infra", 110 BaseRef: "master", 111 }, 112 ExtraRefs: []prowapi.Refs{ 113 { 114 Org: "kubernetes", 115 Repo: "release", 116 BaseRef: "v1.10", 117 }, 118 }, 119 }, 120 cloneRecords: []clone.Record{{ 121 Refs: prowapi.Refs{ 122 Org: "kubernetes", 123 Repo: "test-infra", 124 BaseRef: "master", 125 }, 126 FinalSHA: "aaaaaaaa", 127 }}, 128 expected: metadata.Started{ 129 DeprecatedRepoVersion: "aaaaaaaa", 130 RepoCommit: "aaaaaaaa", 131 Repos: map[string]string{ 132 "kubernetes/test-infra": "master", 133 "kubernetes/release": "v1.10", 134 }, 135 }, 136 }, 137 { 138 name: "Refs with only ExtraRef and cloneRecords containing a final SHA", 139 spec: downwardapi.JobSpec{ 140 ExtraRefs: []prowapi.Refs{ 141 { 142 Org: "kubernetes", 143 Repo: "release", 144 BaseRef: "v1.10", 145 }, 146 }, 147 }, 148 cloneRecords: []clone.Record{{ 149 Refs: prowapi.Refs{ 150 Org: "kubernetes", 151 Repo: "release", 152 BaseRef: "v1.10", 153 }, 154 FinalSHA: "aaaaaaaa", 155 }}, 156 expected: metadata.Started{ 157 DeprecatedRepoVersion: "aaaaaaaa", 158 RepoCommit: "aaaaaaaa", 159 Repos: map[string]string{ 160 "kubernetes/release": "v1.10", 161 }, 162 }, 163 }, 164 } 165 166 for _, test := range tests { 167 actual, expected := downwardapi.SpecToStarted(&test.spec, test.cloneRecords), test.expected 168 expected.Timestamp = actual.Timestamp 169 if !reflect.DeepEqual(actual, expected) { 170 t.Errorf("%s: got started: %#v, but expected: %#v", test.name, actual, expected) 171 } 172 } 173 }