github.com/zppinho/prow@v0.0.0-20240510014325-1738badeb017/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  }