Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions builder/parser/code/multisvc/multi_services.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
package multi

import (
"strings"

"github.com/goodrain/rainbond/builder/parser/types"
)

Expand All @@ -30,9 +32,11 @@ type ServiceInterface interface {

// NewMultiServiceI creates a new MultiModuler.
func NewMultiServiceI(lang string) ServiceInterface {
switch lang {
case "Java-maven":
return NewMaven()
for _, part := range strings.Split(lang, ",") {
switch strings.TrimSpace(part) {
case "Java-maven":
return NewMaven()
}
}
return nil
}
33 changes: 33 additions & 0 deletions builder/parser/code/multisvc/multi_services_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package multi

import "testing"

func TestNewMultiServiceI_SupportsCompositeJavaMaven(t *testing.T) {
tests := []struct {
name string
lang string
}{
{name: "plain java maven", lang: "Java-maven"},
{name: "dockerfile first", lang: "dockerfile,Java-maven"},
{name: "java maven first", lang: "Java-maven,dockerfile"},
{name: "with spaces", lang: " dockerfile , Java-maven "},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := NewMultiServiceI(tt.lang); got == nil {
t.Fatalf("NewMultiServiceI(%q) = nil, want maven parser", tt.lang)
}
})
}
}

func TestNewMultiServiceI_IgnoresLanguagesWithoutJavaMaven(t *testing.T) {
for _, lang := range []string{"dockerfile", "Node.js", "dockerfile,Node.js"} {
t.Run(lang, func(t *testing.T) {
if got := NewMultiServiceI(lang); got != nil {
t.Fatalf("NewMultiServiceI(%q) = %T, want nil", lang, got)
}
})
}
}