12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package parser
- import (
- "fmt"
- "path/filepath"
- "runtime"
- "testing"
- )
- // Quick and dirty replacement for terst
- func tt(t *testing.T, f func()) {
- defer func() {
- if x := recover(); x != nil {
- pcs := make([]uintptr, 16)
- pcs = pcs[:runtime.Callers(1, pcs)]
- frames := runtime.CallersFrames(pcs)
- var file string
- var line int
- for {
- frame, more := frames.Next()
- // The line number here must match the line where f() is called (see below)
- if frame.Line == 40 && filepath.Base(frame.File) == "testutil_test.go" {
- break
- }
- if !more {
- break
- }
- file, line = frame.File, frame.Line
- }
- if line > 0 {
- t.Errorf("Error at %s:%d: %v", filepath.Base(file), line, x)
- } else {
- t.Errorf("Error at <unknown>: %v", x)
- }
- }
- }()
- f()
- }
- func is(a, b interface{}) {
- as := fmt.Sprintf("%v", a)
- bs := fmt.Sprintf("%v", b)
- if as != bs {
- panic(fmt.Errorf("%+v(%T) != %+v(%T)", a, a, b, b))
- }
- }
|