mirror of
https://github.com/Infisical/infisical.git
synced 2025-07-13 09:35:39 +00:00
159 lines
4.0 KiB
Go
159 lines
4.0 KiB
Go
package git_test
|
|
|
|
// TODO: commenting out this test for now because it's flaky. Alternatives to consider to get this working:
|
|
// -- use `git stash` instead of `restore()`
|
|
|
|
// const repoBasePath = "../../testdata/repos/"
|
|
|
|
// const expectPath = "../../testdata/expected/"
|
|
|
|
// func TestGitLog(t *testing.T) {
|
|
// tests := []struct {
|
|
// source string
|
|
// logOpts string
|
|
// expected string
|
|
// }{
|
|
// {
|
|
// source: filepath.Join(repoBasePath, "small"),
|
|
// expected: filepath.Join(expectPath, "git", "small.txt"),
|
|
// },
|
|
// {
|
|
// source: filepath.Join(repoBasePath, "small"),
|
|
// expected: filepath.Join(expectPath, "git", "small-branch-foo.txt"),
|
|
// logOpts: "--all foo...",
|
|
// },
|
|
// }
|
|
|
|
// err := moveDotGit("dotGit", ".git")
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer func() {
|
|
// if err = moveDotGit(".git", "dotGit"); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }()
|
|
|
|
// for _, tt := range tests {
|
|
// files, err := git.GitLog(tt.source, tt.logOpts)
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
|
|
// var diffSb strings.Builder
|
|
// for f := range files {
|
|
// for _, tf := range f.TextFragments {
|
|
// diffSb.WriteString(tf.Raw(gitdiff.OpAdd))
|
|
// }
|
|
// }
|
|
|
|
// expectedBytes, err := os.ReadFile(tt.expected)
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// expected := string(expectedBytes)
|
|
// if expected != diffSb.String() {
|
|
// // write string builder to .got file using os.Create
|
|
// err = os.WriteFile(strings.Replace(tt.expected, ".txt", ".got.txt", 1), []byte(diffSb.String()), 0644)
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// t.Error("expected: ", expected, "got: ", diffSb.String())
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// func TestGitDiff(t *testing.T) {
|
|
// tests := []struct {
|
|
// source string
|
|
// expected string
|
|
// additions string
|
|
// target string
|
|
// }{
|
|
// {
|
|
// source: filepath.Join(repoBasePath, "small"),
|
|
// expected: "this line is added\nand another one",
|
|
// additions: "this line is added\nand another one",
|
|
// target: filepath.Join(repoBasePath, "small", "main.go"),
|
|
// },
|
|
// }
|
|
|
|
// err := moveDotGit("dotGit", ".git")
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer func() {
|
|
// if err = moveDotGit(".git", "dotGit"); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }()
|
|
|
|
// for _, tt := range tests {
|
|
// noChanges, err := os.ReadFile(tt.target)
|
|
// if err != nil {
|
|
// t.Error(err)
|
|
// }
|
|
// err = os.WriteFile(tt.target, []byte(tt.additions), 0644)
|
|
// if err != nil {
|
|
// restore(tt.target, noChanges, t)
|
|
// t.Error(err)
|
|
// }
|
|
|
|
// files, err := git.GitDiff(tt.source, false)
|
|
// if err != nil {
|
|
// restore(tt.target, noChanges, t)
|
|
// t.Error(err)
|
|
// }
|
|
|
|
// for f := range files {
|
|
// sb := strings.Builder{}
|
|
// for _, tf := range f.TextFragments {
|
|
// sb.WriteString(tf.Raw(gitdiff.OpAdd))
|
|
// }
|
|
// if sb.String() != tt.expected {
|
|
// restore(tt.target, noChanges, t)
|
|
// t.Error("expected: ", tt.expected, "got: ", sb.String())
|
|
// }
|
|
// }
|
|
// restore(tt.target, noChanges, t)
|
|
// }
|
|
// }
|
|
|
|
// func restore(path string, data []byte, t *testing.T) {
|
|
// err := os.WriteFile(path, data, 0644)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
|
|
// func moveDotGit(from, to string) error {
|
|
// repoDirs, err := os.ReadDir("../../testdata/repos")
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// for _, dir := range repoDirs {
|
|
// if to == ".git" {
|
|
// _, err := os.Stat(fmt.Sprintf("%s/%s/%s", repoBasePath, dir.Name(), "dotGit"))
|
|
// if os.IsNotExist(err) {
|
|
// // dont want to delete the only copy of .git accidentally
|
|
// continue
|
|
// }
|
|
// os.RemoveAll(fmt.Sprintf("%s/%s/%s", repoBasePath, dir.Name(), ".git"))
|
|
// }
|
|
// if !dir.IsDir() {
|
|
// continue
|
|
// }
|
|
// _, err := os.Stat(fmt.Sprintf("%s/%s/%s", repoBasePath, dir.Name(), from))
|
|
// if os.IsNotExist(err) {
|
|
// continue
|
|
// }
|
|
|
|
// err = os.Rename(fmt.Sprintf("%s/%s/%s", repoBasePath, dir.Name(), from),
|
|
// fmt.Sprintf("%s/%s/%s", repoBasePath, dir.Name(), to))
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// }
|
|
// return nil
|
|
// }
|