github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/jenkinsfile/gitresolver/buildpack_test.go (about) 1 // +build unit 2 3 package gitresolver 4 5 import ( 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/google/uuid" 12 "github.com/jenkins-x/jx-logging/pkg/log" 13 "github.com/olli-ai/jx/v2/pkg/gits" 14 "github.com/olli-ai/jx/v2/pkg/gits/testhelpers" 15 "github.com/olli-ai/jx/v2/pkg/util" 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestBuildPackInitClone(t *testing.T) { 20 mainRepo, err := ioutil.TempDir("", uuid.New().String()) 21 assert.NoError(t, err) 22 23 remoteRepo, err := ioutil.TempDir("", uuid.New().String()) 24 assert.NoError(t, err) 25 26 defer func() { 27 err := os.RemoveAll(mainRepo) 28 err2 := os.RemoveAll(remoteRepo) 29 if err != nil || err2 != nil { 30 log.Logger().Errorf("Error cleaning up tmpdirs because %v", err) 31 } 32 }() 33 34 err = os.Setenv("JX_HOME", mainRepo) 35 assert.NoError(t, err) 36 gitDir := mainRepo + "/draft/packs" 37 err = os.MkdirAll(gitDir, 0755) 38 assert.NoError(t, err) 39 40 gitter := gits.NewGitCLI() 41 assert.NoError(t, err) 42 43 // Prepare a git repo to test - this is our "remote" 44 err = gitter.Init(remoteRepo) 45 assert.NoError(t, err) 46 47 readme := "README" 48 initialReadme := "Cheesy!" 49 50 readmePath := filepath.Join(remoteRepo, readme) 51 err = ioutil.WriteFile(readmePath, []byte(initialReadme), 0600) 52 assert.NoError(t, err) 53 err = gitter.Add(remoteRepo, readme) 54 assert.NoError(t, err) 55 err = gitter.CommitDir(remoteRepo, "Initial Commit") 56 assert.NoError(t, err) 57 58 // Prepare another git repo, this is local repo 59 err = gitter.Init(gitDir) 60 assert.NoError(t, err) 61 // Set up the remote 62 err = gitter.AddRemote(gitDir, "origin", remoteRepo) 63 assert.NoError(t, err) 64 err = gitter.FetchBranch(gitDir, "origin", "master") 65 assert.NoError(t, err) 66 err = gitter.Merge(gitDir, "origin/master") 67 assert.NoError(t, err) 68 69 // Removing the remote tracking information, after executing InitBuildPack, it should have not failed and it should've set a remote tracking branch 70 testhelpers.GitCmd(func(s string, i ...int) {}, gitDir, "branch", "--unset-upstream") 71 72 _, err = InitBuildPack(gitter, "", "master") 73 74 testhelpers.GitCmd(func(s string, i ...int) {}, gitDir, "status", "-sb") 75 76 args := []string{"status", "-sb"} 77 cmd := util.Command{ 78 Dir: gitDir, 79 Name: "git", 80 Args: args, 81 } 82 output, err := cmd.RunWithoutRetry() 83 assert.NoError(t, err, "it should not fail to pull from the branch as remote tracking information has been set") 84 85 // Check the current branch is tracking the origin/master one 86 assert.Equal(t, "## master...origin/master", output) 87 }