// Approximately 1 in a 100 binaries fail to start. If it happens,
// try again. These failures happen for several reasons beyond
// our control, but all of them are safe to retry as they happen
- // before lldb encounters the initial SIGUSR2 stop. As we
+ // before lldb encounters the initial getwd breakpoint. As we
// know the tests haven't started, we are not hiding flaky tests
// with this retry.
for i := 0; i < 5; i++ {
s.do(`process handle SIGHUP --stop false --pass true --notify false`)
s.do(`process handle SIGPIPE --stop false --pass true --notify false`)
s.do(`process handle SIGUSR1 --stop false --pass true --notify false`)
- s.do(`process handle SIGUSR2 --stop true --pass false --notify true`) // sent by test harness
s.do(`process handle SIGCONT --stop false --pass true --notify false`)
s.do(`process handle SIGSEGV --stop false --pass true --notify false`) // does not work
s.do(`process handle SIGBUS --stop false --pass true --notify false`) // does not work
return nil
}
+ s.do(`breakpoint set -n getwd`) // in runtime/cgo/gcc_darwin_arm.go
+
started = true
- s.doCmd("run", "stop reason = signal SIGUSR2", 20*time.Second)
+ s.doCmd("run", "stop reason = breakpoint", 20*time.Second)
// Move the current working directory into the faux gopath.
if pkgpath != "src" {
if cfg.BuildContext.GOOS == "darwin" {
if cfg.BuildContext.GOARCH == "arm" || cfg.BuildContext.GOARCH == "arm64" {
- t.IsIOS = true
- t.NeedOS = true
+ t.NeedCgo = true
}
}
- if t.TestMain == nil {
- t.NeedOS = true
- }
for _, cp := range pmain.Internal.Imports {
if len(cp.Internal.CoverVars) > 0 {
NeedTest bool
ImportXtest bool
NeedXtest bool
- NeedOS bool
- IsIOS bool
+ NeedCgo bool
Cover []coverInfo
}
package main
import (
-{{if .NeedOS}}
+{{if not .TestMain}}
"os"
{{end}}
"testing"
_cover{{$i}} {{$p.Package.ImportPath | printf "%q"}}
{{end}}
-{{if .IsIOS}}
- "os/signal"
+{{if .NeedCgo}}
_ "runtime/cgo"
- "syscall"
{{end}}
)
{{end}}
func main() {
-{{if .IsIOS}}
- signal.Notify(make(chan os.Signal), syscall.SIGUSR2)
- syscall.Kill(0, syscall.SIGUSR2)
- signal.Reset(syscall.SIGUSR2)
-{{end}}
-
{{if .CoverEnabled}}
testing.RegisterCover(testing.Cover{
Mode: {{printf "%q" .CoverMode}},