Skip to content

Commit

Permalink
fix smart selection in multiconfig (#219)
Browse files Browse the repository at this point in the history
  • Loading branch information
VikrantKS committed Jul 11, 2022
1 parent a2ec489 commit 370cd7b
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 1 deletion.
18 changes: 17 additions & 1 deletion pkg/driver/driver_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"fmt"
"os"
"path"
"strings"
"sync"

"github.com/LambdaTest/test-at-scale/pkg/core"
Expand Down Expand Up @@ -416,7 +417,7 @@ func (d *driverV2) buildDiscoveryArgs(payload *core.Payload, tasConfig *core.TAS
TestConfigFile: subModule.ConfigFile,
FrameWork: subModule.Framework,
SmartRun: tasConfig.SmartRun,
Diff: diff,
Diff: GetSubmoduleBasedDiff(diff, subModule.Path),
DiffExists: diffExists,
CWD: modulePath,
}
Expand Down Expand Up @@ -495,3 +496,18 @@ func (d *driverV2) buildTestExecutionArgs(payload *core.Payload,
CWD: modulePath,
}
}

func GetSubmoduleBasedDiff(diff map[string]int, subModulePath string) map[string]int {
newDiff := map[string]int{}
subModulePath = strings.TrimPrefix(subModulePath, "./")
if !strings.HasSuffix(subModulePath, "/") {
subModulePath += "/"
}

for file, value := range diff {
filePath := strings.TrimPrefix(file, subModulePath)

newDiff[filePath] = value
}
return newDiff
}
108 changes: 108 additions & 0 deletions pkg/driver/driver_v2_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package driver

import (
"reflect"
"testing"
)

type testArgs struct {
name string
subModulePath string
diffMap map[string]int
wantDiffMap map[string]int
}

func TestGetSubmoduleBasedDiff(t *testing.T) {
tests :=
[]testArgs{
{
name: "test with subModule package included in diff 1",
subModulePath: "./package/subModule-1",
diffMap: map[string]int{
"package/subModule-1/test/testFile1.js": 1,
"package/subModule-1/test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
wantDiffMap: map[string]int{
"test/testFile1.js": 1,
"test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
},

{
name: "test with subModule package included in diff 2",
subModulePath: "package/subModule-1",
diffMap: map[string]int{
"package/subModule-1/test/testFile1.js": 1,
"package/subModule-1/test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
wantDiffMap: map[string]int{
"test/testFile1.js": 1,
"test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
},
{
name: "test with subModule package included in diff 3",
subModulePath: "./package/subModule-1/",
diffMap: map[string]int{
"package/subModule-1/test/testFile1.js": 1,
"package/subModule-1/test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
wantDiffMap: map[string]int{
"test/testFile1.js": 1,
"test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
},
{
name: "test with subModule package included in diff 4",
subModulePath: "package/subModule-1/",
diffMap: map[string]int{
"package/subModule-1/test/testFile1.js": 1,
"package/subModule-1/test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
wantDiffMap: map[string]int{
"test/testFile1.js": 1,
"test/testFile2.js": 2,
"package/subModule-2/test/testFile1.js": 3,
"package/subModule-2/test/testFile2.js": 4,
},
},
{
name: "test with subModule package not included in diff ",
subModulePath: "package/subModule-1/",
diffMap: map[string]int{
"package/subModule-2/test/testFile1.js": 1,
"package/subModule-2/test/testFile2.js": 2,
"package/subModule-2/test/testFile3.js": 3,
"package/subModule-2/test/testFile4.js": 4,
},
wantDiffMap: map[string]int{
"package/subModule-2/test/testFile1.js": 1,
"package/subModule-2/test/testFile2.js": 2,
"package/subModule-2/test/testFile3.js": 3,
"package/subModule-2/test/testFile4.js": 4,
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
actualMap := GetSubmoduleBasedDiff(test.diffMap, test.subModulePath)
if !reflect.DeepEqual(actualMap, test.wantDiffMap) {
t.Errorf("not equal wanted %+v , got %+v", test.diffMap, actualMap)
}
})
}
}

0 comments on commit 370cd7b

Please sign in to comment.