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  }