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}