File view with blame information shown in the left gutter beside each line.

barerepo / server / e2e/leaving_test.go
45 lines · 1.8kb · 133728eaa05486504991b230f9d4c7e986b7defc
log files threads runs releases config jump to file t
133728e barerepo 1mo
1
package e2e
133728e barerepo 1mo
2
133728e barerepo 1mo
3
import (
133728e barerepo 1mo
4
"os/exec"
133728e barerepo 1mo
5
"strings"
133728e barerepo 1mo
6
"testing"
133728e barerepo 1mo
7
)
133728e barerepo 1mo
8
133728e barerepo 1mo
9
// Chapter 40.1 lists what a mirror clone takes, and a promise about leaving must be exact.
133728e barerepo 1mo
10
func TestAMirrorCloneTakesEverythingChapter40Lists(t *testing.T) {
133728e barerepo 1mo
11
if _, err := exec.LookPath("git"); err != nil {
133728e barerepo 1mo
12
t.Skip("git is not installed")
133728e barerepo 1mo
13
}
133728e barerepo 1mo
14
in := newInstance(t)
133728e barerepo 1mo
15
john := in.account("john")
133728e barerepo 1mo
16
mark := in.account("mark")
133728e barerepo 1mo
17
work := seed(t, in, john, "john", "johnbot")
133728e barerepo 1mo
18
run(t, work, "git", "tag", "-a", "v1.0.0", "-m", "the first release")
133728e barerepo 1mo
19
run(t, work, "git", "push", "-q", in.url(john, "/john/johnbot"), "v1.0.0")
133728e barerepo 1mo
20
133728e barerepo 1mo
21
// A proposal, then a rewrite of it, so there is a retained revision to take as well.
133728e barerepo 1mo
22
mine := clone(t, in, mark, "/john/johnbot")
133728e barerepo 1mo
23
commit(t, mine, "package main\n\nfunc main() {}\n", "a first attempt")
133728e barerepo 1mo
24
run(t, mine, "git", "push", "-q", in.url(mark, "/john/johnbot"), "HEAD:refs/proposals/new")
133728e barerepo 1mo
25
commit(t, mine, "package main\n\nfunc main() { println(1) }\n", "a second attempt")
133728e barerepo 1mo
26
run(t, mine, "git", "push", "-q", "-f", in.url(mark, "/john/johnbot"), "HEAD:refs/proposals/1")
133728e barerepo 1mo
27
133728e barerepo 1mo
28
// A build result, because chapter 40.1 promises those come too and they live in a note.
133728e barerepo 1mo
29
sha := strings.TrimSpace(run(t, work, "git", "rev-parse", "HEAD"))
133728e barerepo 1mo
30
passRun(t, in, "john", "john/johnbot", sha, "build")
133728e barerepo 1mo
31
133728e barerepo 1mo
32
away := t.TempDir()
133728e barerepo 1mo
33
run(t, away, "git", "clone", "--mirror", "-q", in.url(john, "/john/johnbot"), "johnbot.git")
133728e barerepo 1mo
34
took := run(t, away+"/johnbot.git", "git", "for-each-ref", "--format=%(refname)")
133728e barerepo 1mo
35
133728e barerepo 1mo
36
// Every kind chapter 40.1 names, and the revisions comments are anchored to. 43.5.
133728e barerepo 1mo
37
for _, want := range []string{
133728e barerepo 1mo
38
"refs/heads/master", "refs/tags/v1.0.0", "refs/proposals/1",
133728e barerepo 1mo
39
"refs/notes/threads/1", "refs/revisions/1/", "refs/notes/runs",
133728e barerepo 1mo
40
} {
133728e barerepo 1mo
41
if !strings.Contains(took, want) {
133728e barerepo 1mo
42
t.Errorf("a mirror clone left %s behind:\n%s", want, took)
133728e barerepo 1mo
43
}
133728e barerepo 1mo
44
}
133728e barerepo 1mo
45
}
history · rawbarerepo 0.1.0