Skip to content

Commit

Permalink
Fix extraneous newline in ddev exec, fixes ddev#3131
Browse files Browse the repository at this point in the history
  • Loading branch information
rfay committed Jul 31, 2021
1 parent 06ff3e5 commit 1429033
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 22 deletions.
4 changes: 1 addition & 3 deletions cmd/ddev/cmd/exec.go
Expand Up @@ -6,7 +6,6 @@ import (
"strings"

"github.com/drud/ddev/pkg/ddevapp"
"github.com/drud/ddev/pkg/output"
"github.com/drud/ddev/pkg/util"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -43,7 +42,7 @@ var DdevExecCmd = &cobra.Command{

app.DockerEnv()

out, _, err := app.Exec(&ddevapp.ExecOpts{
_, _, err = app.Exec(&ddevapp.ExecOpts{
Service: serviceType,
Dir: execDirArg,
Cmd: strings.Join(args, " "),
Expand All @@ -53,7 +52,6 @@ var DdevExecCmd = &cobra.Command{
if err != nil {
util.Failed("Failed to execute command %s: %v", strings.Join(args, " "), err)
}
output.UserOut.Print(out)
},
}

Expand Down
29 changes: 10 additions & 19 deletions cmd/ddev/cmd/exec_test.go
Expand Up @@ -35,49 +35,41 @@ func TestCmdExec(t *testing.T) {
assert.NoError(err)

// Test default invocation
args := []string{"exec", "pwd"}
out, err := exec.RunCommand(DdevBin, args)
out, err := exec.RunHostCommand(DdevBin, "exec", "pwd")
assert.NoError(err)
assert.Contains(out, "/var/www/html")

// Test specifying service
args = []string{"-s", "db", "exec", "pwd"}
out, err = exec.RunCommand(DdevBin, args)
out, err = exec.RunHostCommand(DdevBin, "-s", "db", "exec", "pwd")
assert.NoError(err)
assert.Contains(out, "/")

// Test specifying working directory
args = []string{"exec", "-d", "/bin", "pwd"}
out, err = exec.RunCommand(DdevBin, args)
out, err = exec.RunHostCommand(DdevBin, "exec", "-d", "/bin", "pwd")
assert.NoError(err)
assert.Contains(out, "/bin")

// Test specifying service and working directory
args = []string{"exec", "-s", "db", "-d", "/var", "pwd"}
out, err = exec.RunCommand(DdevBin, args)
out, err = exec.RunHostCommand(DdevBin, "exec", "-s", "db", "-d", "/var", "pwd")
assert.NoError(err)
assert.Contains(out, "/var")

// Test sudo
args = []string{"exec", "sudo", "whoami"}
out, err = exec.RunCommand(DdevBin, args)
out, err = exec.RunHostCommand(DdevBin, "exec", "sudo", "whoami")
assert.NoError(err)
assert.Contains(out, "root")

// Test that an nonexistent working directory generates an error
args = []string{"exec", "-d", "/does/not/exist", "pwd"}
out, err = exec.RunCommand(DdevBin, args)
out, err = exec.RunHostCommand(DdevBin, "exec", "-d", "/does/not/exist", "pwd")
assert.Error(err)
assert.Contains(out, "no such file or directory")

args = []string{"exec", "ls >/var/www/html/TestCmdExec-${OSTYPE}.txt"}
_, err = exec.RunCommand(DdevBin, args)
_, err = exec.RunHostCommand(DdevBin, "exec", "ls >/var/www/html/TestCmdExec-${OSTYPE}.txt")
assert.NoError(err)

assert.FileExists(filepath.Join(site.Dir, "TestCmdExec-linux-gnu.txt"))

args = []string{"exec", "ls >/dev/null && touch /var/www/html/TestCmdExec-touch-all-in-one.txt"}
_, err = exec.RunCommand(DdevBin, args)
_, err = exec.RunHostCommand(DdevBin, "exec", "ls >/dev/null && touch /var/www/html/TestCmdExec-touch-all-in-one.txt")
assert.NoError(err)

// We just created in the container, must flush before looking for it on host
Expand All @@ -86,8 +78,7 @@ func TestCmdExec(t *testing.T) {

assert.FileExists(filepath.Join(site.Dir, "TestCmdExec-touch-all-in-one.txt"))

args = []string{"exec", "true", "&&", "touch", "/var/www/html/TestCmdExec-touch-separate-args.txt"}
_, err = exec.RunCommand(DdevBin, args)
_, err = exec.RunHostCommand(DdevBin, "exec", "true", "&&", "touch", "/var/www/html/TestCmdExec-touch-separate-args.txt")
assert.NoError(err)

err = app.MutagenSyncFlush()
Expand All @@ -97,7 +88,7 @@ func TestCmdExec(t *testing.T) {

// Make sure we can pipe things into ddev exec and have them work in stdin inside container
filename := t.Name() + "_junk.txt"
_, err = exec.RunCommand("sh", []string{"-c", fmt.Sprintf("printf 'This file was piped into ddev exec' | %s exec 'cat >/var/www/html/%s'", DdevBin, filename)})
_, err = exec.RunHostCommand("sh", "-c", fmt.Sprintf("printf 'This file was piped into ddev exec' | %s exec 'cat >/var/www/html/%s'", DdevBin, filename))
assert.NoError(err)
require.FileExists(t, filepath.Join(site.Dir, filename))

Expand Down

0 comments on commit 1429033

Please sign in to comment.