This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/master by this push:
     new fde8e1f  sanitize dependencies
fde8e1f is described below

commit fde8e1f049f4664eafe058a51303ce7b592dc450
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Sun Feb 24 18:34:05 2019 +0100

    sanitize dependencies
---
 pkg/builder/builder_steps.go      | 23 +++++++++++++++
 pkg/builder/builder_steps_test.go | 60 ++++++++++++++++++++++++++++++++++++---
 pkg/builder/kaniko/kaniko.go      |  1 +
 pkg/builder/s2i/s2i.go            |  1 +
 pkg/trait/builder_test.go         |  4 +--
 5 files changed, 83 insertions(+), 6 deletions(-)

diff --git a/pkg/builder/builder_steps.go b/pkg/builder/builder_steps.go
index 3fb2be5..6fcd317 100644
--- a/pkg/builder/builder_steps.go
+++ b/pkg/builder/builder_steps.go
@@ -164,6 +164,29 @@ func InjectDependencies(ctx *Context) error {
        return nil
 }
 
+// SanitizeDependencies --
+func SanitizeDependencies(ctx *Context) error {
+       for i := 0; i < len(ctx.Project.Dependencies); i++ {
+               dep := ctx.Project.Dependencies[i]
+
+               switch dep.GroupID {
+               case "org.apache.camel":
+                       //
+                       // Remove the version so we force using the one 
configured by the bom
+                       //
+                       ctx.Project.Dependencies[i].Version = ""
+               case "org.apache.camel.k":
+                       //
+                       // Force every runtime dependency to have the required 
version discardin
+                       // any version eventually set on the catalog
+                       //
+                       ctx.Project.Dependencies[i].Version = 
ctx.Request.RuntimeVersion
+               }
+       }
+
+       return nil
+}
+
 // ComputeDependencies --
 func ComputeDependencies(ctx *Context) error {
        p := path.Join(ctx.Path, "maven")
diff --git a/pkg/builder/builder_steps_test.go 
b/pkg/builder/builder_steps_test.go
index fc69f33..bfad198 100644
--- a/pkg/builder/builder_steps_test.go
+++ b/pkg/builder/builder_steps_test.go
@@ -20,12 +20,10 @@ package builder
 import (
        "testing"
 
-       "github.com/apache/camel-k/pkg/util/defaults"
-
-       "github.com/apache/camel-k/pkg/util/test"
-
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
+       "github.com/apache/camel-k/pkg/util/defaults"
        "github.com/apache/camel-k/pkg/util/maven"
+       "github.com/apache/camel-k/pkg/util/test"
 
        "github.com/stretchr/testify/assert"
 )
@@ -171,3 +169,57 @@ func TestGenerateProjectWithRepositories(t *testing.T) {
        assert.False(t, ctx.Project.Repositories[1].Releases.Enabled)
        assert.True(t, ctx.Project.Repositories[1].Snapshots.Enabled)
 }
+
+func TestSanitizeDependencies(t *testing.T) {
+       catalog, err := test.DefaultCatalog()
+       assert.Nil(t, err)
+
+       ctx := Context{
+               Catalog: catalog,
+               Request: Request{
+                       Catalog:        catalog,
+                       RuntimeVersion: defaults.RuntimeVersion,
+                       Platform: v1alpha1.IntegrationPlatformSpec{
+                               Build: v1alpha1.IntegrationPlatformBuildSpec{
+                                       CamelVersion: catalog.Version,
+                               },
+                       },
+                       Dependencies: []string{
+                               "camel:undertow",
+                               "mvn:org.apache.camel/camel-core/2.18.0",
+                               
"mvn:org.apache.camel.k/camel-k-runtime-jvm/1.0.0",
+                               "mvn:com.mycompany/my-dep/1.2.3",
+                       },
+               },
+       }
+
+       err = GenerateProject(&ctx)
+       assert.Nil(t, err)
+       err = InjectDependencies(&ctx)
+       assert.Nil(t, err)
+       err = SanitizeDependencies(&ctx)
+       assert.Nil(t, err)
+
+       assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+               GroupID:    "org.apache.camel.k",
+               ArtifactID: "camel-k-runtime-jvm",
+               Version:    defaults.RuntimeVersion,
+               Type:       "jar",
+       })
+       assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+               GroupID:    "org.apache.camel",
+               ArtifactID: "camel-core",
+               Type:       "jar",
+       })
+       assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+               GroupID:    "org.apache.camel",
+               ArtifactID: "camel-undertow",
+               Type:       "jar",
+       })
+       assert.Contains(t, ctx.Project.Dependencies, maven.Dependency{
+               GroupID:    "com.mycompany",
+               ArtifactID: "my-dep",
+               Version:    "1.2.3",
+               Type:       "jar",
+       })
+}
diff --git a/pkg/builder/kaniko/kaniko.go b/pkg/builder/kaniko/kaniko.go
index aa435b8..0c81d0a 100644
--- a/pkg/builder/kaniko/kaniko.go
+++ b/pkg/builder/kaniko/kaniko.go
@@ -25,6 +25,7 @@ import (
 var DefaultSteps = []builder.Step{
        builder.NewStep("project/generate", builder.ProjectGenerationPhase, 
builder.GenerateProject),
        builder.NewStep("project/inject-dependencies", 
builder.ProjectGenerationPhase+1, builder.InjectDependencies),
+       builder.NewStep("project/sanitize-dependencies", 
builder.ProjectGenerationPhase+2, builder.SanitizeDependencies),
        builder.NewStep("build/compute-dependencies", 
builder.ProjectBuildPhase, builder.ComputeDependencies),
        builder.NewStep("packager", builder.ApplicationPackagePhase, 
builder.StandardPackager),
        builder.NewStep("publisher/kaniko", builder.ApplicationPublishPhase, 
Publisher),
diff --git a/pkg/builder/s2i/s2i.go b/pkg/builder/s2i/s2i.go
index 32dd119..45c2bab 100644
--- a/pkg/builder/s2i/s2i.go
+++ b/pkg/builder/s2i/s2i.go
@@ -25,6 +25,7 @@ import (
 var DefaultSteps = []builder.Step{
        builder.NewStep("project/generate", builder.ProjectGenerationPhase, 
builder.GenerateProject),
        builder.NewStep("project/inject-dependencies", 
builder.ProjectGenerationPhase+1, builder.InjectDependencies),
+       builder.NewStep("project/sanitize-dependencies", 
builder.ProjectGenerationPhase+2, builder.SanitizeDependencies),
        builder.NewStep("build/compute-dependencies", 
builder.ProjectBuildPhase, builder.ComputeDependencies),
        builder.NewStep("packager/incremental", 
builder.ApplicationPackagePhase, builder.IncrementalPackager),
        builder.NewStep("publisher/s2i", builder.ApplicationPublishPhase, 
Publisher),
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 4b62577..4735aca 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -85,7 +85,7 @@ func TestS2IBuilderTrait(t *testing.T) {
        assert.NotEmpty(t, env.ExecutedTraits)
        assert.NotNil(t, env.GetTrait(ID("builder")))
        assert.NotEmpty(t, env.Steps)
-       assert.Len(t, env.Steps, 5)
+       assert.Len(t, env.Steps, 6)
        assert.Condition(t, func() bool {
                for _, s := range env.Steps {
                        if s.ID() == "publisher/s2i" && s.Phase() == 
builder.ApplicationPublishPhase {
@@ -105,7 +105,7 @@ func TestKanikoBuilderTrait(t *testing.T) {
        assert.NotEmpty(t, env.ExecutedTraits)
        assert.NotNil(t, env.GetTrait(ID("builder")))
        assert.NotEmpty(t, env.Steps)
-       assert.Len(t, env.Steps, 5)
+       assert.Len(t, env.Steps, 6)
        assert.Condition(t, func() bool {
                for _, s := range env.Steps {
                        if s.ID() == "publisher/kaniko" && s.Phase() == 
builder.ApplicationPublishPhase {

Reply via email to