package main import ( "fmt" "os/exec" "path/filepath" "testing" "src.opensuse.org/autogits/common" ) const LocalCMD = "---" func gitExecs(t *testing.T, git *common.GitHandlerImpl, cmds [][]string) { for _, cmd := range cmds { if cmd[0] == LocalCMD { command := exec.Command(cmd[2], cmd[3:]...) command.Dir = filepath.Join(git.GitPath, cmd[1]) command.Stdin = nil command.Env = append([]string{"GIT_CONFIG_COUNT=1", "GIT_CONFIG_KEY_1=protocol.file.allow", "GIT_CONFIG_VALUE_1=always"}, common.ExtraGitParams...) _, err := command.CombinedOutput() if err != nil { t.Errorf(" *** error: %v\n", err) } } else { git.GitExecOrPanic(cmd[0], cmd[1:]...) } } } func commandsForPackages(dir, prefix string, startN, endN int) [][]string { commands := make([][]string, (endN-startN+2)*6) if dir == "" { dir = "." } cmdIdx := 0 for idx := startN; idx <= endN; idx++ { pkgDir := fmt.Sprintf("%s%d", prefix, idx) commands[cmdIdx+0] = []string{"", "init", "-q", "--object-format", "sha256", "-b", "testing", pkgDir} commands[cmdIdx+1] = []string{LocalCMD, pkgDir, "/usr/bin/touch", "testFile"} commands[cmdIdx+2] = []string{pkgDir, "add", "testFile"} commands[cmdIdx+3] = []string{pkgDir, "commit", "-m", "added testFile"} commands[cmdIdx+4] = []string{pkgDir, "config", "receive.denyCurrentBranch", "ignore"} commands[cmdIdx+5] = []string{"prj", "submodule", "add", filepath.Join("..", pkgDir), filepath.Join(dir, pkgDir)} cmdIdx += 6 } // add all the submodules to the prj commands[cmdIdx+0] = []string{"prj", "commit", "-a", "-m", "adding subpackages"} return commands } func setupGitForTests(t *testing.T, git *common.GitHandlerImpl) { common.ExtraGitParams = []string{ "GIT_CONFIG_COUNT=1", "GIT_CONFIG_KEY_0=protocol.file.allow", "GIT_CONFIG_VALUE_0=always", "GIT_AUTHOR_NAME=testname", "GIT_AUTHOR_EMAIL=test@suse.com", "GIT_AUTHOR_DATE='2005-04-07T22:13:13'", "GIT_COMMITTER_NAME=testname", "GIT_COMMITTER_EMAIL=test@suse.com", "GIT_COMMITTER_DATE='2005-04-07T22:13:13'", } gitExecs(t, git, [][]string{ {"", "init", "-q", "--object-format", "sha256", "-b", "testing", "prj"}, {"", "init", "-q", "--object-format", "sha256", "-b", "testing", "foo"}, {LocalCMD, "foo", "/usr/bin/touch", "file1"}, {"foo", "add", "file1"}, {"foo", "commit", "-m", "first commit"}, {"prj", "config", "receive.denyCurrentBranch", "ignore"}, {"prj", "submodule", "init"}, {"prj", "submodule", "add", "../foo", "testRepo"}, {"prj", "add", ".gitmodules", "testRepo"}, {"prj", "commit", "-m", "First instance"}, {"prj", "submodule", "deinit", "testRepo"}, {LocalCMD, "foo", "/usr/bin/touch", "file2"}, {"foo", "add", "file2"}, {"foo", "commit", "-m", "added file2"}, }) }