github.com/criteo/command-launcher@v0.0.0-20230407142452-fb616f546e98/internal/pkg/git-package_test.go (about)

     1  package pkg
     2  
     3  import (
     4  	"os"
     5  	"os/exec"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/criteo/command-launcher/internal/helper"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func createGitRepo(t *testing.T) string {
    14  	repoDir := filepath.Join(t.TempDir(), "folder-package")
    15  	err := os.Mkdir(repoDir, 0777)
    16  	assert.Nil(t, err)
    17  
    18  	commands := [...][]string{
    19  		{"init"},
    20  		{"add", "manifest.mf"},
    21  		{"config", "user.email", "test@example.com"},
    22  		{"config", "user.name", "tester"},
    23  		{"commit", "-m", "initial import"},
    24  	}
    25  
    26  	err = helper.CopyLocalFile("assets/folder-package/manifest.mf", filepath.Join(repoDir, "manifest.mf"), false)
    27  	assert.Nil(t, err)
    28  
    29  	for _, cmd := range commands {
    30  		ctx := exec.Command("git", cmd...)
    31  		ctx.Dir = repoDir
    32  		ctx.Stdout = os.Stdout
    33  		ctx.Stderr = os.Stderr
    34  		ctx.Stdin = os.Stdin
    35  		err = ctx.Run()
    36  		assert.Nil(t, err)
    37  	}
    38  
    39  	return repoDir
    40  }
    41  
    42  func TestGitRepo_Create_WrongRepo(t *testing.T) {
    43  	p, err := CreateGitRepoPackage("assets/folder-package")
    44  	assert.Nil(t, p)
    45  	assert.NotNil(t, err)
    46  }
    47  
    48  func TestGitRepo_Create(t *testing.T) {
    49  	repo := createGitRepo(t)
    50  	p, err := CreateGitRepoPackage(repo)
    51  	assert.NotNil(t, p)
    52  	assert.Nil(t, err)
    53  
    54  	assert.Equal(t, 1, len(p.Commands()))
    55  	assert.Equal(t, "fake_test", p.Name())
    56  }
    57  
    58  func TestGitRepo_InstallTo(t *testing.T) {
    59  	repo := createGitRepo(t)
    60  	p, err := CreateGitRepoPackage(repo)
    61  	assert.NotNil(t, p)
    62  	assert.Nil(t, err)
    63  
    64  	targetDir := t.TempDir()
    65  	mf, err := p.InstallTo(targetDir)
    66  	assert.NotNil(t, mf)
    67  	assert.Nil(t, err)
    68  
    69  	_, err = os.Stat(filepath.Join(targetDir, "fake_test", "manifest.mf"))
    70  	assert.Nil(t, err)
    71  }