mirror of
https://github.com/thomiceli/opengist.git
synced 2024-12-23 13:02:39 +00:00
71 lines
2 KiB
Go
71 lines
2 KiB
Go
package git
|
|
|
|
import (
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/thomiceli/opengist/internal/config"
|
|
"io"
|
|
"os"
|
|
"os/exec"
|
|
"path"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func SetupTest(t *testing.T) {
|
|
_ = os.Setenv("OPENGIST_SKIP_GIT_HOOKS", "1")
|
|
|
|
err := config.InitConfig("", io.Discard)
|
|
require.NoError(t, err, "Could not init config")
|
|
|
|
err = os.MkdirAll(path.Join(config.GetHomeDir(), "tests"), 0755)
|
|
ReposDirectory = path.Join("tests")
|
|
require.NoError(t, err)
|
|
|
|
err = os.MkdirAll(filepath.Join(config.GetHomeDir(), "tmp", "repos"), 0755)
|
|
require.NoError(t, err)
|
|
|
|
err = InitRepository("thomas", "gist1")
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TeardownTest(t *testing.T) {
|
|
err := os.RemoveAll(path.Join(config.GetHomeDir(), "tests"))
|
|
require.NoError(t, err, "Could not remove repos directory")
|
|
}
|
|
|
|
func CommitToBare(t *testing.T, user string, gist string, files map[string]string) {
|
|
err := CloneTmp(user, gist, gist, "thomas@mail.com", true)
|
|
require.NoError(t, err, "Could not clone repository")
|
|
|
|
if len(files) > 0 {
|
|
for filename, content := range files {
|
|
if strings.Contains(filename, "/") {
|
|
dir := filepath.Dir(filename)
|
|
err := os.MkdirAll(filepath.Join(TmpRepositoryPath(gist), dir), os.ModePerm)
|
|
require.NoError(t, err, "Could not create directory")
|
|
}
|
|
_ = os.WriteFile(filepath.Join(TmpRepositoryPath(gist), filename), []byte(content), 0644)
|
|
|
|
if err := AddAll(gist); err != nil {
|
|
require.NoError(t, err, "Could not add all to repository")
|
|
}
|
|
}
|
|
}
|
|
|
|
if err := CommitRepository(gist, user, "thomas@mail.com"); err != nil {
|
|
require.NoError(t, err, "Could not commit to repository")
|
|
}
|
|
|
|
if err := Push(gist); err != nil {
|
|
require.NoError(t, err, "Could not push to repository")
|
|
}
|
|
}
|
|
|
|
func LastHashOfCommit(t *testing.T, user string, gist string) string {
|
|
cmd := exec.Command("git", "rev-parse", "HEAD")
|
|
cmd.Dir = RepositoryPath(user, gist)
|
|
out, err := cmd.Output()
|
|
require.NoError(t, err, "Could not run git command")
|
|
return strings.TrimSpace(string(out))
|
|
}
|