@@ -19,38 +19,52 @@ package e2e
19
19
import (
20
20
"fmt"
21
21
"os"
22
+ "os/exec"
22
23
"path/filepath"
23
24
"runtime"
24
25
"strings"
25
26
"testing"
26
27
28
+ "github.com/stretchr/testify/require"
27
29
"gotest.tools/v3/assert"
28
30
)
29
31
30
32
const ddevVersion = "v1.19.1"
31
33
32
34
func TestComposeRunDdev (t * testing.T ) {
33
35
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` " )
35
37
}
36
38
if runtime .GOOS == "windows" {
37
39
t .Skip ("Running on Windows. Skipping..." )
38
40
}
39
- _ = os .Setenv ("DDEV_DEBUG" , "true" )
40
41
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 )
49
64
50
65
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" )
54
68
})
55
69
56
70
osName := "linux"
@@ -59,27 +73,26 @@ func TestComposeRunDdev(t *testing.T) {
59
73
}
60
74
61
75
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 ))
66
79
67
- c .RunCmdInDir (t , dir , "tar" , "-xzf" , compressedFilename )
80
+ c .RunCmdInDir (t , ddevDir , "tar" , "-xzf" , compressedFilename )
68
81
69
82
// 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" )
71
84
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" )
75
88
out := vRes .Stdout ()
76
89
fmt .Printf ("ddev version: %s\n " , out )
77
90
78
- c .RunCmdInDir (t , dir , "./ddev" , "poweroff" )
91
+ c .RunCmdInDir (t , ddevDir , "./ddev" , "poweroff" )
79
92
80
- c .RunCmdInDir (t , dir , "./ddev" , "start" , "-y" )
93
+ c .RunCmdInDir (t , ddevDir , "./ddev" , "start" , "-y" )
81
94
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 ))
83
96
out = curlRes .Stdout ()
84
97
fmt .Println (out )
85
98
assert .Assert (t , strings .Contains (out , "ddev is working" ), "Could not start project" )
0 commit comments