diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-07-07 08:36:58 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-07-07 08:36:58 +0200 |
| commit | ef6b94b52219de122b7848a031dbcae34ca80965 (patch) | |
| tree | 28e0f0c4d7d61ec4bfb79827a3d4eabaa1d00e2d /pkg/vcs | |
| parent | 4272335555c7a9d8e2339e18da7e17a8570695b2 (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.go | 97 |
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 } |
