github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/pkg/ddevapp/providerGit_test.go (about)

     1  package ddevapp_test
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/ddev/ddev/pkg/ddevapp"
    10  	"github.com/ddev/ddev/pkg/nodeps"
    11  	"github.com/ddev/ddev/pkg/testcommon"
    12  	"github.com/mitchellh/go-homedir"
    13  	asrt "github.com/stretchr/testify/assert"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  // TestGitPull ensures we can pull backups from a Git repository
    18  func TestGitPull(t *testing.T) {
    19  	assert := asrt.New(t)
    20  	var err error
    21  
    22  	testDir, _ := os.Getwd()
    23  
    24  	siteDir := testcommon.CreateTmpDir(t.Name())
    25  
    26  	err = os.Chdir(siteDir)
    27  	assert.NoError(err)
    28  	app, err := ddevapp.NewApp(siteDir, true)
    29  	assert.NoError(err)
    30  	app.Name = t.Name()
    31  	app.Type = nodeps.AppTypeDrupal
    32  	app.Docroot = "web"
    33  	err = app.Stop(true, false)
    34  	require.NoError(t, err)
    35  	err = app.WriteConfig()
    36  	require.NoError(t, err)
    37  
    38  	testcommon.ClearDockerEnv()
    39  
    40  	t.Cleanup(func() {
    41  		err = app.Stop(true, false)
    42  		assert.NoError(err)
    43  
    44  		_ = os.Chdir(testDir)
    45  		_ = os.RemoveAll(siteDir)
    46  		home, _ := homedir.Dir()
    47  		_ = os.RemoveAll(filepath.Join(home, "tmp", "ddev-pull-git-test-repo"))
    48  	})
    49  
    50  	err = ddevapp.PopulateExamplesCommandsHomeadditions(app.Name)
    51  	require.NoError(t, err)
    52  
    53  	// Build our git.yaml from the example file
    54  	s, err := os.ReadFile(app.GetConfigPath("providers/git.yaml.example"))
    55  	require.NoError(t, err)
    56  	err = os.WriteFile(app.GetConfigPath("providers/git.yaml"), []byte(s), 0666)
    57  	assert.NoError(err)
    58  	err = app.WriteConfig()
    59  	require.NoError(t, err)
    60  
    61  	provider, err := app.GetProvider("git")
    62  	require.NoError(t, err)
    63  
    64  	err = app.Start()
    65  	require.NoError(t, err)
    66  	err = app.Pull(provider, false, false, false)
    67  	assert.NoError(err)
    68  
    69  	assert.FileExists(filepath.Join(app.GetHostUploadDirFullPath(), "tmp/veggie-pasta-bake-hero-umami.jpg"))
    70  	out, _, err := app.Exec(&ddevapp.ExecOpts{
    71  		Cmd:     "echo 'select COUNT(*) from users_field_data where mail=\"margaret.hopper@example.com\";' | mysql -N",
    72  		Service: "db",
    73  	})
    74  	assert.NoError(err)
    75  	assert.True(strings.HasPrefix(out, "1\n"))
    76  }