@@ -19,38 +19,52 @@ package e2e
1919import (
2020 "fmt"
2121 "os"
22+ "os/exec"
2223 "path/filepath"
2324 "runtime"
2425 "strings"
2526 "testing"
2627
28+ "github.com/stretchr/testify/require"
2729 "gotest.tools/v3/assert"
2830)
2931
3032const ddevVersion = "v1.19.1"
3133
3234func TestComposeRunDdev (t * testing.T ) {
3335 if ! composeStandaloneMode {
34- t .Skip ("Not running on standalone mode. " )
36+ t .Skip ("Not running in plugin mode - ddev only supports invoking standalone `docker-compose` " )
3537 }
3638 if runtime .GOOS == "windows" {
3739 t .Skip ("Running on Windows. Skipping..." )
3840 }
39- _ = os .Setenv ("DDEV_DEBUG" , "true" )
4041
41- c := NewParallelCLI (t )
42- dir , err := os .MkdirTemp ("" , t .Name ()+ "-" )
43- assert .NilError (t , err )
44-
45- // ddev needs to be able to find mkcert to figure out where certs are.
46- _ = os .Setenv ("PATH" , fmt .Sprintf ("%s:%s" , os .Getenv ("PATH" ), dir ))
47-
48- siteName := filepath .Base (dir )
42+ // ddev shells out to `docker` and `docker-compose` (standalone), so a
43+ // temporary directory is created with symlinks to system Docker and the
44+ // locally-built standalone Compose binary to use as PATH
45+ pathDir := t .TempDir ()
46+ dockerBin , err := exec .LookPath (DockerExecutableName )
47+ require .NoError (t , err , "Could not find %q in path" , DockerExecutableName )
48+ require .NoError (t , os .Symlink (dockerBin , filepath .Join (pathDir , DockerExecutableName )),
49+ "Could not create %q symlink" , DockerExecutableName )
50+
51+ composeBin := ComposeStandalonePath (t )
52+ require .NoError (t , os .Symlink (composeBin , filepath .Join (pathDir , DockerComposeExecutableName )),
53+ "Could not create %q symlink" , DockerComposeExecutableName )
54+
55+ c := NewCLI (t , WithEnv (
56+ "DDEV_DEBUG=true" ,
57+ fmt .Sprintf ("HOME=%s" , t .TempDir ()),
58+ fmt .Sprintf ("USER=%s" , os .Getenv ("USER" )),
59+ fmt .Sprintf ("PATH=%s" , pathDir ),
60+ ))
61+
62+ ddevDir := t .TempDir ()
63+ siteName := filepath .Base (ddevDir )
4964
5065 t .Cleanup (func () {
51- _ = c .RunCmdInDir (t , dir , "./ddev" , "delete" , "-Oy" )
52- _ = c .RunCmdInDir (t , dir , "./ddev" , "poweroff" )
53- _ = os .RemoveAll (dir )
66+ _ = c .RunCmdInDir (t , ddevDir , "./ddev" , "delete" , "-Oy" )
67+ _ = c .RunCmdInDir (t , ddevDir , "./ddev" , "poweroff" )
5468 })
5569
5670 osName := "linux"
@@ -59,27 +73,26 @@ func TestComposeRunDdev(t *testing.T) {
5973 }
6074
6175 compressedFilename := fmt .Sprintf ("ddev_%s-%s.%s.tar.gz" , osName , runtime .GOARCH , ddevVersion )
62- c .RunCmdInDir (t , dir , "curl" , "-LO" ,
63- fmt .Sprintf ("https://github.com/drud/ddev/releases/download/%s/%s" ,
64- ddevVersion ,
65- compressedFilename ))
76+ c .RunCmdInDir (t , ddevDir , "curl" , "-LO" , fmt .Sprintf ("https://github.com/drud/ddev/releases/download/%s/%s" ,
77+ ddevVersion ,
78+ compressedFilename ))
6679
67- c .RunCmdInDir (t , dir , "tar" , "-xzf" , compressedFilename )
80+ c .RunCmdInDir (t , ddevDir , "tar" , "-xzf" , compressedFilename )
6881
6982 // Create a simple index.php we can test against.
70- c .RunCmdInDir (t , dir , "sh" , "-c" , "echo '<?php\n print \" ddev is working\" ;' >index.php" )
83+ c .RunCmdInDir (t , ddevDir , "sh" , "-c" , "echo '<?php\n print \" ddev is working\" ;' >index.php" )
7184
72- c .RunCmdInDir (t , dir , "./ddev" , "config" , "--auto" )
73- c .RunCmdInDir (t , dir , "./ddev" , "config" , "global" , "--use-docker-compose-from-path" )
74- vRes := c .RunCmdInDir (t , dir , "./ddev" , "version" )
85+ c .RunCmdInDir (t , ddevDir , "./ddev" , "config" , "--auto" )
86+ c .RunCmdInDir (t , ddevDir , "./ddev" , "config" , "global" , "--use-docker-compose-from-path" )
87+ vRes := c .RunCmdInDir (t , ddevDir , "./ddev" , "version" )
7588 out := vRes .Stdout ()
7689 fmt .Printf ("ddev version: %s\n " , out )
7790
78- c .RunCmdInDir (t , dir , "./ddev" , "poweroff" )
91+ c .RunCmdInDir (t , ddevDir , "./ddev" , "poweroff" )
7992
80- c .RunCmdInDir (t , dir , "./ddev" , "start" , "-y" )
93+ c .RunCmdInDir (t , ddevDir , "./ddev" , "start" , "-y" )
8194
82- curlRes := c .RunCmdInDir (t , dir , "curl" , "-sSL" , fmt .Sprintf ("http://%s.ddev.site" , siteName ))
95+ curlRes := c .RunCmdInDir (t , ddevDir , "curl" , "-sSL" , fmt .Sprintf ("http://%s.ddev.site" , siteName ))
8396 out = curlRes .Stdout ()
8497 fmt .Println (out )
8598 assert .Assert (t , strings .Contains (out , "ddev is working" ), "Could not start project" )
0 commit comments