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

     1  package ddevapp_test
     2  
     3  import (
     4  	"github.com/ddev/ddev/pkg/ddevapp"
     5  	"github.com/ddev/ddev/pkg/exec"
     6  	asrt "github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  	"os"
     9  	"path/filepath"
    10  	"testing"
    11  )
    12  
    13  func TestGetInactiveProjects(t *testing.T) {
    14  	assert := asrt.New(t)
    15  
    16  	origDir, _ := os.Getwd()
    17  	app := &ddevapp.DdevApp{}
    18  
    19  	site := TestSites[0]
    20  
    21  	t.Cleanup(func() {
    22  		err := os.Chdir(origDir)
    23  		assert.NoError(err)
    24  		err = app.Stop(true, false)
    25  		assert.NoError(err)
    26  	})
    27  	// Make sure we have one app in existence
    28  	err := app.Init(site.Dir)
    29  	require.NoError(t, err)
    30  	err = app.Start()
    31  	require.NoError(t, err)
    32  
    33  	// Stop all sites
    34  	_, err = exec.RunCommand(DdevBin, []string{"stop", "--all"})
    35  	require.NoError(t, err)
    36  
    37  	apps, err := ddevapp.GetInactiveProjects()
    38  	require.NoError(t, err)
    39  
    40  	assert.Greater(len(apps), 0)
    41  }
    42  
    43  func TestExtractProjectNames(t *testing.T) {
    44  	var apps []*ddevapp.DdevApp
    45  
    46  	assert := asrt.New(t)
    47  
    48  	apps = append(apps, &ddevapp.DdevApp{Name: "bar"})
    49  	apps = append(apps, &ddevapp.DdevApp{Name: "foo"})
    50  	apps = append(apps, &ddevapp.DdevApp{Name: "zoz"})
    51  
    52  	names := ddevapp.ExtractProjectNames(apps)
    53  	expectedNames := []string{"bar", "foo", "zoz"}
    54  
    55  	assert.Equal(expectedNames, names)
    56  }
    57  
    58  // TestGetRelativeWorkingDirectory validates GetRelativeWorkingDirectory
    59  func TestGetRelativeWorkingDirectory(t *testing.T) {
    60  	assert := asrt.New(t)
    61  
    62  	origDir, _ := os.Getwd()
    63  	app := &ddevapp.DdevApp{}
    64  
    65  	site := TestSites[0]
    66  
    67  	t.Cleanup(func() {
    68  		err := os.Chdir(origDir)
    69  		assert.NoError(err)
    70  		err = app.Stop(true, false)
    71  		assert.NoError(err)
    72  		_ = os.RemoveAll("one")
    73  	})
    74  	// Make sure we have one app in existence
    75  	err := app.Init(site.Dir)
    76  	require.NoError(t, err)
    77  	err = os.MkdirAll(filepath.Join(app.AppRoot, "one", "two", "three", "four"), 0755)
    78  	require.NoError(t, err)
    79  
    80  	testCases := []string{filepath.Join("one"), filepath.Join("one", "two"), filepath.Join("one", "two", "three"), filepath.Join("one", "two", "three", "four")}
    81  	for _, c := range testCases {
    82  		err = os.Chdir(filepath.Join(app.AppRoot, c))
    83  		require.NoError(t, err)
    84  		relDir := app.GetRelativeWorkingDirectory()
    85  		assert.Equal(filepath.ToSlash(c), filepath.ToSlash(relDir))
    86  	}
    87  }