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

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


The following commit(s) were added to refs/heads/main by this push:
     new 0feccdb3d Execute Quarkus JVM mode before native mode
0feccdb3d is described below

commit 0feccdb3dc09e4aece7990d4f7c4ecb6b4649f4c
Author: Michal Vavřík <[email protected]>
AuthorDate: Mon Jan 15 23:18:30 2024 +0100

    Execute Quarkus JVM mode before native mode
---
 pkg/trait/quarkus.go      |  4 ++++
 pkg/trait/quarkus_test.go | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index 8027436fa..cb8b216f0 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -210,6 +210,10 @@ func (t *quarkusTrait) applyWhileBuildingKit(e 
*Environment) {
                kit := t.newIntegrationKit(e, packageType(t.Modes[0]))
                e.IntegrationKits = append(e.IntegrationKits, *kit)
        default:
+               // execute jvm mode before native mode
+               sort.Slice(t.Modes, func(i, j int) bool {
+                       return t.Modes[i] != traitv1.NativeQuarkusMode
+               })
                for _, md := range t.Modes {
                        kit := t.newIntegrationKit(e, packageType(md))
                        if kit.Spec.Traits.Quarkus == nil {
diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
index 4b9312c0b..d92481167 100644
--- a/pkg/trait/quarkus_test.go
+++ b/pkg/trait/quarkus_test.go
@@ -20,6 +20,8 @@ package trait
 import (
        "testing"
 
+       traitv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait"
+
        "github.com/stretchr/testify/assert"
 
        v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -84,6 +86,24 @@ func TestApplyQuarkusTraitAnnotationKitConfiguration(t 
*testing.T) {
 
 }
 
+func TestQuarkusTraitBuildModeOrder(t *testing.T) {
+       quarkusTrait, environment := createNominalQuarkusTest()
+       quarkusTrait.Modes = []traitv1.QuarkusMode{traitv1.NativeQuarkusMode, 
traitv1.JvmQuarkusMode}
+       environment.Integration.Status.Phase = v1.IntegrationPhaseBuildingKit
+       environment.Integration.Spec.Sources = []v1.SourceSpec{
+               {
+                       Language: v1.LanguageYaml,
+               },
+       }
+
+       err := quarkusTrait.Apply(environment)
+       assert.Nil(t, err)
+       assert.Len(t, environment.IntegrationKits, 2)
+       // assure jvm mode is executed before native mode
+       assert.Equal(t, 
environment.IntegrationKits[0].Labels[v1.IntegrationKitLayoutLabel], 
v1.IntegrationKitLayoutFastJar)
+       assert.Equal(t, 
environment.IntegrationKits[1].Labels[v1.IntegrationKitLayoutLabel], 
v1.IntegrationKitLayoutNativeSources)
+}
+
 func createNominalQuarkusTest() (*quarkusTrait, *Environment) {
        trait, _ := newQuarkusTrait().(*quarkusTrait)
        client, _ := test.NewFakeClient()

Reply via email to