From ef6b94b52219de122b7848a031dbcae34ca80965 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 7 Jul 2020 08:36:58 +0200 Subject: 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. --- pkg/vcs/linux_test.go | 97 +++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 45 deletions(-) (limited to 'pkg/vcs') 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 } -- cgit mrf-deployment