GitRoot
craft your forge, build your project, grow your community freely
1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
2//
3// SPDX-License-Identifier: EUPL-1.2
4
5package repository
6
7import (
8 "context"
9 _ "embed"
10 "fmt"
11 "testing"
12
13 "github.com/go-git/go-git/v5/plumbing"
14 "gitroot.dev/server/configuration"
15 "gitroot.dev/server/user"
16)
17
18//go:embed test_ressources/standard_README.md
19var test_standard_README []byte
20
21//go:embed test_ressources/standard_README_mod.md
22var test_standard_README_mod []byte
23
24//go:embed test_ressources/standard_README_diff.md
25var test_standard_README_diff string
26
27func TestGetDiff(t *testing.T) {
28 dataDir := t.TempDir()
29 conf := configuration.NewConfiguration(dataDir)
30 userManager, _ := user.NewManager(conf)
31 m := NewManager(conf, userManager)
32 err := m.CreateUserRepo(context.TODO(), RepoConf{Name: "getDiff", DefaultBranch: "main"}, []user.SimpleUser{}, []byte(""))
33 if err != nil {
34 t.Fatal(err)
35 }
36 repo, err := m.Open(context.TODO(), "getDiff")
37 if err != nil {
38 t.Fatal(err)
39 }
40 repoWriter, err := repo.WillWrite(plumbing.HEAD)
41 if err != nil {
42 t.Fatal(err)
43 }
44 makeCommitForDiff(repoWriter, 1, test_standard_README, t, userManager)
45 h := makeCommitForDiff(repoWriter, 1, test_standard_README_mod, t, userManager)
46
47 res, err := repoWriter.GetDiff(h, "README.md", "README.md")
48 if err != nil {
49 t.Fatal(err)
50 }
51
52 if res != test_standard_README_diff {
53 t.Errorf("have\n---\n%s\n---\nwant\n---\n%s\n---\n", res, test_standard_README_diff)
54 }
55}
56
57func makeCommitForDiff(repo *GitRootRepositoryWrite, nb int, content []byte, t *testing.T, u *user.Manager) plumbing.Hash {
58 if err := repo.Write("README.md", content); err != nil {
59 t.Fatal(err)
60 }
61 h, err := repo.CommitAll(fmt.Sprintf("commit%d", nb), u.RootCommiter())
62 if err != nil {
63 t.Fatal(err)
64 }
65 return h
66}