Merge pull request #613 from kadel/fix-ImageStream-tag

Fix incorrect tag in BuildConfig.
This commit is contained in:
Charlie Drage 2017-05-23 15:13:34 -04:00 committed by GitHub
commit 93f5c0103c
2 changed files with 55 additions and 31 deletions

View File

@ -245,7 +245,7 @@ func initBuildConfig(name string, service kobject.ServiceConfig, repo string, br
Output: buildapi.BuildOutput{ Output: buildapi.BuildOutput{
To: &kapi.ObjectReference{ To: &kapi.ObjectReference{
Kind: "ImageStreamTag", Kind: "ImageStreamTag",
Name: name + ":latest", Name: name + ":" + getImageTag(service.Image),
}, },
}, },
}, },

View File

@ -281,43 +281,67 @@ func TestGetAbsBuildContext(t *testing.T) {
// Test initializing buildconfig for a service // Test initializing buildconfig for a service
func TestInitBuildConfig(t *testing.T) { func TestInitBuildConfig(t *testing.T) {
dir := testutils.CreateLocalGitDirectory(t)
testutils.CreateSubdir(t, dir, "a/build")
defer os.RemoveAll(dir)
serviceName := "serviceA" serviceName := "serviceA"
repo := "https://git.test.com/org/repo" repo := "https://git.test.com/org/repo1"
branch := "somebranch" branch := "somebranch"
buildArgs := []kapi.EnvVar{{Name: "name", Value: "value"}} buildArgs := []kapi.EnvVar{{Name: "name", Value: "value"}}
value := "value" value := "value"
sc := kobject.ServiceConfig{ testDir := "a/build"
Build: filepath.Join(dir, "a/build"),
Dockerfile: "Dockerfile-alternate", dir := testutils.CreateLocalGitDirectory(t)
BuildArgs: map[string]*string{"name": &value}, testutils.CreateSubdir(t, dir, testDir)
} defer os.RemoveAll(dir)
bc, err := initBuildConfig(serviceName, sc, repo, branch)
if err != nil { testCases := []struct {
t.Error(errors.Wrap(err, "initBuildConfig failed")) Name string
ServiceConfig kobject.ServiceConfig
}{
{
Name: "Service config without image key",
ServiceConfig: kobject.ServiceConfig{
Build: filepath.Join(dir, testDir),
Dockerfile: "Dockerfile-alternate",
BuildArgs: map[string]*string{"name": &value},
},
},
{
Name: "Service config with image key",
ServiceConfig: kobject.ServiceConfig{
Build: filepath.Join(dir, testDir),
Dockerfile: "Dockerfile-alternate",
BuildArgs: map[string]*string{"name": &value},
Image: "foo:bar",
},
},
} }
testCases := map[string]struct { for _, test := range testCases {
field string
value string bc, err := initBuildConfig(serviceName, test.ServiceConfig, repo, branch)
}{ if err != nil {
"Assert buildconfig source git URI": {bc.Spec.CommonSpec.Source.Git.URI, repo}, t.Error(errors.Wrap(err, "initBuildConfig failed"))
"Assert buildconfig source git Ref": {bc.Spec.CommonSpec.Source.Git.Ref, branch}, }
"Assert buildconfig source context dir": {bc.Spec.CommonSpec.Source.ContextDir, "a/build/"},
"Assert buildconfig output name": {bc.Spec.CommonSpec.Output.To.Name, serviceName + ":latest"}, assertions := map[string]struct {
"Assert buildconfig dockerfilepath": {bc.Spec.CommonSpec.Strategy.DockerStrategy.DockerfilePath, "Dockerfile-alternate"}, field string
} value string
for name, test := range testCases { }{
t.Log("Test case: ", name) "Assert buildconfig source git URI": {bc.Spec.CommonSpec.Source.Git.URI, repo},
if test.field != test.value { "Assert buildconfig source git Ref": {bc.Spec.CommonSpec.Source.Git.Ref, branch},
t.Errorf("Expected: %#v, got: %#v", test.value, test.field) "Assert buildconfig source context dir": {bc.Spec.CommonSpec.Source.ContextDir, testDir + "/"},
// BuildConfig output image is named after service name. If image key is set than tag from that is used.
"Assert buildconfig output name": {bc.Spec.CommonSpec.Output.To.Name, serviceName + ":" + getImageTag(test.ServiceConfig.Image)},
"Assert buildconfig dockerfilepath": {bc.Spec.CommonSpec.Strategy.DockerStrategy.DockerfilePath, test.ServiceConfig.Dockerfile},
}
for name, assertionTest := range assertions {
if assertionTest.field != assertionTest.value {
t.Errorf("%s Expected: %#v, got: %#v", name, assertionTest.value, assertionTest.field)
}
}
if !reflect.DeepEqual(bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs) {
t.Errorf("Expected: %#v, got: %#v", bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs)
} }
}
if !reflect.DeepEqual(bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs) {
t.Errorf("Expected: %#v, got: %#v", bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs)
} }
} }