mirror of
https://github.com/go-delve/delve.git
synced 2025-10-29 01:27:16 +08:00
service/debugger: Assume current dir for exec (#3167)
This patch modifies the behavior of the exec subcommand such that you don't necessarily have to write the "./" prefix when trying to debug a precompiled binary in your working directory. For example (given foo.test in working dir), before this change: dlv exec foo.test Would result in an error, forcing the user to type: dlv exec ./foo.test This just makes things a bit more convenient.
This commit is contained in:
@ -5,6 +5,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/go-delve/delve/pkg/gobuild"
|
||||
@ -68,3 +69,35 @@ func TestDebugger_LaunchInvalidFormat(t *testing.T) {
|
||||
t.Fatalf("expected error \"%s\" got \"%v\"", api.ErrNotExecutable, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDebugger_LaunchCurrentDir(t *testing.T) {
|
||||
fixturesDir := protest.FindFixturesDir()
|
||||
testDir := filepath.Join(fixturesDir, "buildtest")
|
||||
debugname := "debug"
|
||||
exepath := filepath.Join(testDir, debugname)
|
||||
originalPath, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.Chdir(originalPath)
|
||||
defer func() {
|
||||
if err := os.Remove(exepath); err != nil {
|
||||
t.Fatalf("error removing executable %v", err)
|
||||
}
|
||||
}()
|
||||
if err := gobuild.GoBuild(debugname, []string{testDir}, fmt.Sprintf("-o %s", exepath)); err != nil {
|
||||
t.Fatalf("go build error %v", err)
|
||||
}
|
||||
|
||||
os.Chdir(testDir)
|
||||
|
||||
d := new(Debugger)
|
||||
d.config = &Config{}
|
||||
_, err = d.Launch([]string{debugname}, ".")
|
||||
if err == nil {
|
||||
t.Fatal("expected error but none was generated")
|
||||
}
|
||||
if err != nil && !strings.Contains(err.Error(), "unknown backend") {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user