mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
|
|
// Copyright 2016 The Go Authors. All rights reserved.
|
||
|
|
// Use of this source code is governed by a BSD-style
|
||
|
|
// license that can be found in the LICENSE file.
|
||
|
|
|
||
|
|
// Package testdeps provides access to dependencies needed by test execution.
|
||
|
|
//
|
||
|
|
// This package is imported by the generated main package, which passes
|
||
|
|
// TestDeps into testing.Main. This allows tests to use packages at run time
|
||
|
|
// without making those packages direct dependencies of package testing.
|
||
|
|
// Direct dependencies of package testing are harder to write tests for.
|
||
|
|
package testdeps
|
||
|
|
|
||
|
|
import (
|
||
|
|
"io"
|
||
|
|
"regexp"
|
||
|
|
"runtime/pprof"
|
||
|
|
)
|
||
|
|
|
||
|
|
// TestDeps is an implementation of the testing.testDeps interface,
|
||
|
|
// suitable for passing to testing.MainStart.
|
||
|
|
type TestDeps struct{}
|
||
|
|
|
||
|
|
var matchPat string
|
||
|
|
var matchRe *regexp.Regexp
|
||
|
|
|
||
|
|
func (TestDeps) MatchString(pat, str string) (result bool, err error) {
|
||
|
|
if matchRe == nil || matchPat != pat {
|
||
|
|
matchPat = pat
|
||
|
|
matchRe, err = regexp.Compile(matchPat)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return matchRe.MatchString(str), nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (TestDeps) StartCPUProfile(w io.Writer) error {
|
||
|
|
return pprof.StartCPUProfile(w)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (TestDeps) StopCPUProfile() {
|
||
|
|
pprof.StopCPUProfile()
|
||
|
|
}
|
||
|
|
|
||
|
|
func (TestDeps) WriteHeapProfile(w io.Writer) error {
|
||
|
|
return pprof.WriteHeapProfile(w)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (TestDeps) WriteProfileTo(name string, w io.Writer, debug int) error {
|
||
|
|
return pprof.Lookup(name).WriteTo(w, debug)
|
||
|
|
}
|