aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/vcs
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-07-07 08:36:58 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-07-07 08:36:58 +0200
commitef6b94b52219de122b7848a031dbcae34ca80965 (patch)
tree28e0f0c4d7d61ec4bfb79827a3d4eabaa1d00e2d /pkg/vcs
parent4272335555c7a9d8e2339e18da7e17a8570695b2 (diff)
pkg/vcs: fix config minimization test
The test requires new git binary. It's not necessary installed everywhere. Skip the test if git binary does not support bisection. Also reoder functions from more important to less important. Mark the test as parallel. Move individual tests into subtests. Split trace per subtest.
Diffstat (limited to 'pkg/vcs')
-rw-r--r--pkg/vcs/linux_test.go97
1 files changed, 52 insertions, 45 deletions
diff --git a/pkg/vcs/linux_test.go b/pkg/vcs/linux_test.go
index a583e56aa..a249dc6c9 100644
--- a/pkg/vcs/linux_test.go
+++ b/pkg/vcs/linux_test.go
@@ -5,6 +5,7 @@ package vcs
import (
"bytes"
+ "fmt"
"io/ioutil"
"os"
"strings"
@@ -22,39 +23,8 @@ type MinimizationTest struct {
passing bool
}
-func createTestLinuxRepo(t *testing.T) string {
- baseDir, err := ioutil.TempDir("", "syz-config-bisect-test")
- if err != nil {
- t.Fatal(err)
- }
- repo := CreateTestRepo(t, baseDir, "")
- repo.CommitChange("commit")
- repo.SetTag("v4.1")
- err = os.MkdirAll(baseDir+"/tools/testing/ktest", 0755)
- if err != nil {
- t.Fatal(err)
- }
- err = os.MkdirAll(baseDir+"/scripts/kconfig", 0755)
- if err != nil {
- t.Fatal(err)
- }
-
- // Copy stubbed scripts used by config bisect
- err = osutil.CopyFile("testdata/linux/config-bisect.pl",
- baseDir+"/tools/testing/ktest/config-bisect.pl")
- if err != nil {
- t.Fatal(err)
- }
- err = osutil.CopyFile("testdata/linux/merge_config.sh",
- baseDir+"/scripts/kconfig/merge_config.sh")
- if err != nil {
- t.Fatal(err)
- }
-
- return baseDir
-}
-
-func TestMinimizationResults(t *testing.T) {
+func TestConfigMinimizer(t *testing.T) {
+ t.Parallel()
tests := []MinimizationTest{
{
config: "CONFIG_ORIGINAL=y",
@@ -76,7 +46,6 @@ func TestMinimizationResults(t *testing.T) {
},
}
- trace := new(bytes.Buffer)
baseDir := createTestLinuxRepo(t)
repo, err := NewRepo("linux", "64", baseDir)
if err != nil {
@@ -93,16 +62,54 @@ func TestMinimizationResults(t *testing.T) {
if !ok {
t.Fatalf("Config minimization is not implemented")
}
- for _, test := range tests {
- outConfig, err := minimizer.Minimize([]byte(test.config),
- []byte(test.baselineConfig), trace, pred)
- if test.passing && err != nil {
- t.Fatalf("failed to run Minimize: %v", err)
- } else if test.passing && !strings.Contains(string(outConfig),
- test.expectedConfig) {
- t.Fatalf("output is not expected %v vs. %v", string(outConfig),
- test.expectedConfig)
- }
+ for i, test := range tests {
+ t.Run(fmt.Sprint(i), func(t *testing.T) {
+ trace := new(bytes.Buffer)
+ outConfig, err := minimizer.Minimize([]byte(test.config),
+ []byte(test.baselineConfig), trace, pred)
+ if test.passing && err != nil {
+ t.Fatalf("failed to run Minimize: %v", err)
+ } else if test.passing && !strings.Contains(string(outConfig),
+ test.expectedConfig) {
+ t.Fatalf("output is not expected %v vs. %v", string(outConfig),
+ test.expectedConfig)
+ }
+ t.Log(trace.String())
+ })
}
- t.Log(trace.String())
+}
+
+func createTestLinuxRepo(t *testing.T) string {
+ baseDir, err := ioutil.TempDir("", "syz-config-bisect-test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ repo := CreateTestRepo(t, baseDir, "")
+ if !repo.SupportsBisection() {
+ t.Skip("bisection is unsupported by git (probably too old version)")
+ }
+ repo.CommitChange("commit")
+ repo.SetTag("v4.1")
+ err = os.MkdirAll(baseDir+"/tools/testing/ktest", 0755)
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = os.MkdirAll(baseDir+"/scripts/kconfig", 0755)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // Copy stubbed scripts used by config bisect
+ err = osutil.CopyFile("testdata/linux/config-bisect.pl",
+ baseDir+"/tools/testing/ktest/config-bisect.pl")
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = osutil.CopyFile("testdata/linux/merge_config.sh",
+ baseDir+"/scripts/kconfig/merge_config.sh")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ return baseDir
}