// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package repository import ( "context" _ "embed" "fmt" "testing" "github.com/go-git/go-git/v6/plumbing" "gitroot.dev/server/configuration" "gitroot.dev/server/user" ) //go:embed test_ressources/standard_README.md var test_standard_README []byte //go:embed test_ressources/standard_README_mod.md var test_standard_README_mod []byte //go:embed test_ressources/standard_README_diff.md var test_standard_README_diff string func TestGetDiff(t *testing.T) { dataDir := t.TempDir() conf := configuration.NewConfiguration(dataDir) userManager, _ := user.NewManager(conf) m := NewManager(conf, userManager) err := m.CreateUserRepo(context.TODO(), RepoConf{Name: "getDiff", DefaultBranch: "main"}, []user.SimpleUser{}, []byte("")) if err != nil { t.Fatal(err) } repo, err := m.Open(context.TODO(), "getDiff") if err != nil { t.Fatal(err) } repoWriter, err := repo.WillWrite(plumbing.HEAD) if err != nil { t.Fatal(err) } makeCommitForDiff(repoWriter, 1, test_standard_README, t, userManager) h := makeCommitForDiff(repoWriter, 1, test_standard_README_mod, t, userManager) res, err := repoWriter.GetDiff(h, "README.md", "README.md") if err != nil { t.Fatal(err) } if res != test_standard_README_diff { t.Errorf("have\n---\n%s\n---\nwant\n---\n%s\n---\n", res, test_standard_README_diff) } } func makeCommitForDiff(repo *GitRootRepositoryWrite, nb int, content []byte, t *testing.T, u *user.Manager) plumbing.Hash { if err := repo.Write("README.md", content); err != nil { t.Fatal(err) } h, err := repo.CommitAll(fmt.Sprintf("commit%d", nb), u.RootCommiter()) if err != nil { t.Fatal(err) } return h }