@@ -2,6 +2,7 @@ package build
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"testing"
6
7
7
8
"github.com/hashicorp/go-version"
@@ -73,3 +74,91 @@ func TestGitRevision_consul(t *testing.T) {
73
74
latestConstraint , v )
74
75
}
75
76
}
77
+
78
+ func TestGitRevisionValidate (t * testing.T ) {
79
+ t .Parallel ()
80
+
81
+ testCases := map [string ]struct {
82
+ gr GitRevision
83
+ expectedErr error
84
+ }{
85
+ "Product-incorrect-binary-name" : {
86
+ gr : GitRevision {
87
+ Product : product.Product {
88
+ BinaryName : func () string { return "invalid!" },
89
+ Name : product .Terraform .Name ,
90
+ },
91
+ },
92
+ expectedErr : fmt .Errorf ("invalid binary name: \" invalid!\" " ),
93
+ },
94
+ "Product-incorrect-name" : {
95
+ gr : GitRevision {
96
+ Product : product.Product {
97
+ BinaryName : product .Terraform .BinaryName ,
98
+ Name : "invalid!" ,
99
+ },
100
+ },
101
+ expectedErr : fmt .Errorf ("invalid product name: \" invalid!\" " ),
102
+ },
103
+ "Product-missing-build-instructions" : {
104
+ gr : GitRevision {
105
+ Product : product.Product {
106
+ BinaryName : product .Terraform .BinaryName ,
107
+ Name : product .Terraform .Name ,
108
+ },
109
+ },
110
+ expectedErr : fmt .Errorf ("no build instructions" ),
111
+ },
112
+ "Product-missing-build-instructions-build" : {
113
+ gr : GitRevision {
114
+ Product : product.Product {
115
+ BinaryName : product .Terraform .BinaryName ,
116
+ BuildInstructions : & product.BuildInstructions {
117
+ GitRepoURL : product .Terraform .BuildInstructions .GitRepoURL ,
118
+ },
119
+ Name : product .Terraform .Name ,
120
+ },
121
+ },
122
+ expectedErr : fmt .Errorf ("missing build instructions" ),
123
+ },
124
+ "Product-missing-build-instructions-gitrepourl" : {
125
+ gr : GitRevision {
126
+ Product : product.Product {
127
+ BinaryName : product .Terraform .BinaryName ,
128
+ BuildInstructions : & product.BuildInstructions {
129
+ Build : product .Terraform .BuildInstructions .Build ,
130
+ },
131
+ Name : product .Terraform .Name ,
132
+ },
133
+ },
134
+ expectedErr : fmt .Errorf ("missing repository URL" ),
135
+ },
136
+ "Product-valid" : {
137
+ gr : GitRevision {
138
+ Product : product .Terraform ,
139
+ },
140
+ },
141
+ }
142
+
143
+ for name , testCase := range testCases {
144
+ name , testCase := name , testCase
145
+
146
+ t .Run (name , func (t * testing.T ) {
147
+ t .Parallel ()
148
+
149
+ err := testCase .gr .Validate ()
150
+
151
+ if err == nil && testCase .expectedErr != nil {
152
+ t .Fatalf ("expected error: %s, got no error" , testCase .expectedErr )
153
+ }
154
+
155
+ if err != nil && testCase .expectedErr == nil {
156
+ t .Fatalf ("expected no error, got error: %s" , err )
157
+ }
158
+
159
+ if err != nil && testCase .expectedErr != nil && err .Error () != testCase .expectedErr .Error () {
160
+ t .Fatalf ("expected error: %s, got error: %s" , testCase .expectedErr , err )
161
+ }
162
+ })
163
+ }
164
+ }
0 commit comments