github.com/devstream-io/devstream@v0.13.3/internal/pkg/commit/commit_test.go (about)

     1  package commit_test
     2  
     3  import (
     4  	"os"
     5  	"os/exec"
     6  	"path/filepath"
     7  
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  
    11  	. "github.com/devstream-io/devstream/internal/pkg/commit"
    12  )
    13  
    14  var _ = Describe("Commit", func() {
    15  	var testRepoDir string
    16  
    17  	BeforeEach(func() {
    18  		// 1. Create a temporary directory
    19  		var err error
    20  		testRepoDir, err = os.MkdirTemp("", "test-repo-*")
    21  		Expect(err).NotTo(HaveOccurred())
    22  
    23  		// 2. Change the working directory to the temporary directory
    24  		err = os.Chdir(testRepoDir)
    25  		Expect(err).NotTo(HaveOccurred())
    26  
    27  		// 3. Initialize a git repository
    28  		cmd := exec.Command("git", "init")
    29  		err = cmd.Run()
    30  		Expect(err).NotTo(HaveOccurred())
    31  
    32  		// 4. Create a file and write some content to it
    33  		file, err := os.Create(filepath.Join(testRepoDir, "test.txt"))
    34  		Expect(err).NotTo(HaveOccurred())
    35  
    36  		_, err = file.WriteString("Test content")
    37  		Expect(err).NotTo(HaveOccurred())
    38  		file.Close()
    39  
    40  		// 5. Add the file to the git index
    41  		cmd = exec.Command("git", "add", "test.txt")
    42  		err = cmd.Run()
    43  		Expect(err).NotTo(HaveOccurred())
    44  	})
    45  
    46  	AfterEach(func() {
    47  		err := os.RemoveAll(testRepoDir)
    48  		Expect(err).NotTo(HaveOccurred())
    49  	})
    50  
    51  	It("should create a new commit with the given message", func() {
    52  		message := "Test commit"
    53  		err := Commit(message)
    54  		Expect(err).NotTo(HaveOccurred())
    55  
    56  		cmd := exec.Command("git", "log", "--oneline")
    57  		output, err := cmd.CombinedOutput()
    58  		Expect(err).NotTo(HaveOccurred())
    59  
    60  		Expect(string(output)).To(ContainSubstring(message))
    61  	})
    62  
    63  	It("should return an error when git is not installed", func() {
    64  		origGitPath, err := exec.LookPath("git")
    65  		Expect(err).NotTo(HaveOccurred())
    66  
    67  		err = os.Setenv("PATH", "")
    68  		Expect(err).NotTo(HaveOccurred())
    69  		defer func() {
    70  			err = os.Setenv("PATH", origGitPath)
    71  			Expect(err).NotTo(HaveOccurred())
    72  		}()
    73  
    74  		err = Commit("Test commit")
    75  		Expect(err).To(HaveOccurred())
    76  	})
    77  })