1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
// Copyright 2024 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package triage
import (
"path/filepath"
"testing"
"github.com/google/syzkaller/pkg/osutil"
"github.com/google/syzkaller/pkg/vcs"
"github.com/google/syzkaller/syz-cluster/pkg/api"
"github.com/stretchr/testify/assert"
)
func TestGitTreeOpsHead(t *testing.T) {
baseDir := t.TempDir()
repo := vcs.MakeTestRepo(t, baseDir)
// Emulate the behavior of the kernel-disk machinery.
osutil.WriteFile(filepath.Join(baseDir, "file.txt"), []byte("Some content"))
repo.Git("add", "file.txt")
head1 := repo.CommitChange("first head")
repo.SetTag("mainline/main")
osutil.WriteFile(filepath.Join(baseDir, "file.txt"), []byte("Another content"))
repo.Git("add", "file.txt")
head2 := repo.CommitChange("second head")
repo.SetTag("second/main")
// Verify that the right commits are queried.
ops, err := NewGitTreeOps(baseDir, false)
assert.NoError(t, err)
commit, err := ops.HeadCommit(&api.Tree{Name: "mainline", Branch: "main"})
assert.NoError(t, err)
assert.Equal(t, head1.Hash, commit.Hash)
commit, err = ops.HeadCommit(&api.Tree{Name: "second", Branch: "main"})
assert.NoError(t, err)
assert.Equal(t, head2.Hash, commit.Hash)
}
func TestGitTreeOpsApply(t *testing.T) {
baseDir := t.TempDir()
repo := vcs.MakeTestRepo(t, baseDir)
osutil.WriteFile(filepath.Join(baseDir, "file.txt"), []byte("First\nSecond\nThird\n"))
repo.Git("add", "file.txt")
base := repo.CommitChange("base")
ops, err := NewGitTreeOps(baseDir, false)
assert.NoError(t, err)
assert.Error(t, ops.ApplySeries(base.Hash, [][]byte{goodPatch, wontApply}))
assert.NoError(t, ops.ApplySeries(base.Hash, [][]byte{goodPatch}))
}
var wontApply = []byte(`From dc2cf7bc4a9dbe170d47338d0fe6d2351c88c9d1 Mon Sep 17 00:00:00 2001
From: Test Syzkaller <test@syzkaller.com>
Date: Tue, 10 Dec 2024 17:58:20 +0100
Subject: [PATCH] change1
---
file.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/file.txt b/file.txt
index 0d39765..97c39a4 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
-1First
-1Second
-1Third
+First1
+Second
+Third1
--
2.47.1.545.g3c1d2e2a6a-goog
`)
var goodPatch = []byte(`From 708670e05c0462d3783f774cef82f9a3b3099f9a Mon Sep 17 00:00:00 2001
From: Test Syzkaller <test@syzkaller.com>
Date: Tue, 10 Dec 2024 17:57:37 +0100
Subject: [PATCH] change1
---
file.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/file.txt b/file.txt
index ab7c514..97c39a4 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
-First
+First1
Second
-Third
+Third1
--
2.47.1.545.g3c1d2e2a6a-goog
`)
|