github.com/undoio/delve@v1.9.0/service/debugger/debugger_test.go (about) 1 package debugger 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "runtime" 8 "testing" 9 10 "github.com/undoio/delve/pkg/gobuild" 11 protest "github.com/undoio/delve/pkg/proc/test" 12 "github.com/undoio/delve/service/api" 13 ) 14 15 func TestDebugger_LaunchNoMain(t *testing.T) { 16 fixturesDir := protest.FindFixturesDir() 17 nomaindir := filepath.Join(fixturesDir, "nomaindir") 18 debugname := "debug" 19 exepath := filepath.Join(nomaindir, debugname) 20 defer os.Remove(exepath) 21 if err := gobuild.GoBuild(debugname, []string{nomaindir}, fmt.Sprintf("-o %s", exepath)); err != nil { 22 t.Fatalf("go build error %v", err) 23 } 24 25 d := new(Debugger) 26 _, err := d.Launch([]string{exepath}, ".") 27 if err == nil { 28 t.Fatalf("expected error but none was generated") 29 } 30 if err != api.ErrNotExecutable { 31 t.Fatalf("expected error \"%v\" got \"%v\"", api.ErrNotExecutable, err) 32 } 33 } 34 35 func TestDebugger_LaunchInvalidFormat(t *testing.T) { 36 goos := os.Getenv("GOOS") 37 goarch := os.Getenv("GOARCH") 38 defer func() { 39 // restore environment values 40 os.Setenv("GOOS", goos) 41 os.Setenv("GOARCH", goarch) 42 }() 43 fixturesDir := protest.FindFixturesDir() 44 buildtestdir := filepath.Join(fixturesDir, "buildtest") 45 debugname := "debug" 46 switchOS := map[string]string{ 47 "darwin": "linux", 48 "windows": "linux", 49 "freebsd": "windows", 50 "linux": "windows", 51 } 52 if runtime.GOARCH == "arm64" && runtime.GOOS == "linux" { 53 os.Setenv("GOARCH", "amd64") 54 } 55 os.Setenv("GOOS", switchOS[runtime.GOOS]) 56 exepath := filepath.Join(buildtestdir, debugname) 57 if err := gobuild.GoBuild(debugname, []string{buildtestdir}, fmt.Sprintf("-o %s", exepath)); err != nil { 58 t.Fatalf("go build error %v", err) 59 } 60 defer os.Remove(exepath) 61 62 d := new(Debugger) 63 _, err := d.Launch([]string{exepath}, ".") 64 if err == nil { 65 t.Fatalf("expected error but none was generated") 66 } 67 if err != api.ErrNotExecutable { 68 t.Fatalf("expected error \"%s\" got \"%v\"", api.ErrNotExecutable, err) 69 } 70 }