aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/aflow/flow/patching
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/aflow/flow/patching')
-rw-r--r--pkg/aflow/flow/patching/actions.go20
-rw-r--r--pkg/aflow/flow/patching/actions_test.go9
2 files changed, 19 insertions, 10 deletions
diff --git a/pkg/aflow/flow/patching/actions.go b/pkg/aflow/flow/patching/actions.go
index d42c24fa1..bea70e978 100644
--- a/pkg/aflow/flow/patching/actions.go
+++ b/pkg/aflow/flow/patching/actions.go
@@ -114,7 +114,6 @@ func maintainers(ctx *aflow.Context, args maintainersArgs) (maintainersResult, e
var getRecentCommits = aflow.NewFuncAction("get-recent-commits", recentCommits)
type recentCommitsArgs struct {
- KernelSrc string
KernelCommit string
PatchDiff string
}
@@ -132,11 +131,16 @@ func recentCommits(ctx *aflow.Context, args recentCommitsArgs) (recentCommitsRes
if len(files) == 0 {
return res, aflow.FlowError(errors.New("patch diff does not contain any modified files"))
}
- gitArgs := append([]string{"log", "--format=%s", "--no-merges", "-n", "20", args.KernelCommit}, files...)
- output, err := osutil.RunCmd(10*time.Minute, args.KernelSrc, "git", gitArgs...)
- if err != nil {
- return res, aflow.FlowError(fmt.Errorf("%w\n%s", err, output))
- }
- res.RecentCommits = string(output)
- return res, nil
+ // We need to run git log in the master git repo b/c out KernelSrc/KernelScratchSrc
+ // are shallow checkouts that don't have history.
+ err := kernel.UseLinuxRepo(ctx, func(kernelRepoDir string, _ vcs.Repo) error {
+ gitArgs := append([]string{"log", "--format=%s", "--no-merges", "-n", "20", args.KernelCommit}, files...)
+ output, err := osutil.RunCmd(10*time.Minute, kernelRepoDir, "git", gitArgs...)
+ if err != nil {
+ return aflow.FlowError(fmt.Errorf("%w\n%s", err, output))
+ }
+ res.RecentCommits = string(output)
+ return nil
+ })
+ return res, err
}
diff --git a/pkg/aflow/flow/patching/actions_test.go b/pkg/aflow/flow/patching/actions_test.go
index c6f3011e7..c2e18141b 100644
--- a/pkg/aflow/flow/patching/actions_test.go
+++ b/pkg/aflow/flow/patching/actions_test.go
@@ -9,6 +9,8 @@ import (
"testing"
"github.com/google/syzkaller/pkg/aflow"
+ "github.com/google/syzkaller/pkg/osutil"
+ "github.com/stretchr/testify/require"
)
func TestRecentCommits(t *testing.T) {
@@ -17,8 +19,11 @@ func TestRecentCommits(t *testing.T) {
if os.Getenv("CI") != "" {
t.Skip("skipping on CI because of shallow git checkout")
}
- aflow.TestAction(t, getRecentCommits, recentCommitsArgs{
- KernelSrc: filepath.FromSlash("../../../.."),
+ dir := t.TempDir()
+ require.NoError(t, osutil.MkdirAll(filepath.Join(dir, "repo")))
+ require.NoError(t, os.Symlink(osutil.Abs(filepath.FromSlash("../../../..")),
+ filepath.Join(dir, "repo", "linux")))
+ aflow.TestAction(t, getRecentCommits, dir, recentCommitsArgs{
KernelCommit: "e01a0ca6c12c9851ea7090f13879255ef82291e7",
PatchDiff: `
diff --git a/dashboard/app/ai.go b/dashboard/app/ai.go