kompose/pkg/testutils/git.go
Tomas Kral f530f99f02
Fix CreateLocalGitDirectory for tests.
If you didn't setup user.email and user.name `git commit` fails.
This configures user.email and user.name for newly created temporary git
repo.
2017-01-23 11:49:25 +01:00

81 lines
1.8 KiB
Go

package testutils
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"testing"
)
// NewCommand TODO: comment
func NewCommand(cmd string) *exec.Cmd {
return exec.Command("sh", "-c", cmd)
}
// CreateLocalDirectory TODO: comment
func CreateLocalDirectory(t *testing.T) string {
dir, err := ioutil.TempDir(os.TempDir(), "kompose-test-")
if err != nil {
t.Fatal(err)
}
return dir
}
// CreateLocalGitDirectory TODO: comment
func CreateLocalGitDirectory(t *testing.T) string {
dir := CreateLocalDirectory(t)
cmd := NewCommand(
`git init &&
git config user.email "you@example.com" &&
git config user.name "Your Name" &&
touch README &&
git add README &&
git commit --no-gpg-sign -m 'testcommit'`)
cmd.Dir = dir
_, err := cmd.Output()
if err != nil {
t.Logf("create local git dir: %v", err)
t.Fatal(err)
}
return dir
}
// SetGitRemote TODO: comment
func SetGitRemote(t *testing.T, dir string, remote string, remoteURL string) {
cmd := NewCommand(fmt.Sprintf("git remote add %s %s", remote, remoteURL))
cmd.Dir = dir
_, err := cmd.Output()
if err != nil {
t.Logf("set git remote: %v", err)
t.Fatal(err)
}
}
// CreateGitRemoteBranch TODO: comment
func CreateGitRemoteBranch(t *testing.T, dir string, branch string, remote string) {
cmd := NewCommand(
fmt.Sprintf(`git checkout -b %s &&
git config branch.%s.remote %s &&
git config branch.%s.merge refs/heads/%s`,
branch, branch, remote, branch, branch))
cmd.Dir = dir
_, err := cmd.Output()
if err != nil {
t.Logf("create git branch: %v", err)
t.Fatal(err)
}
}
// CreateSubdir TODO: comment
func CreateSubdir(t *testing.T, dir string, subdir string) {
cmd := NewCommand(fmt.Sprintf("mkdir -p %s", subdir))
cmd.Dir = dir
_, err := cmd.Output()
if err != nil {
t.Fatal(err)
}
}