github.com/biogo/biogo@v1.0.4/errors/errors_test.go (about)

     1  // Copyright ©2011-2013 The bíogo Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package errors
     6  
     7  import (
     8  	"testing"
     9  
    10  	"gopkg.in/check.v1"
    11  )
    12  
    13  func Test(t *testing.T) { check.TestingT(t) }
    14  
    15  type S struct{}
    16  
    17  var _ = check.Suite(&S{})
    18  
    19  // Helpers
    20  func f(i int) error {
    21  	if i == 0 {
    22  		return Make("message", 0, 10)
    23  	}
    24  
    25  	i--
    26  	return f(i)
    27  }
    28  
    29  var traceRE = `Trace: message:
    30  
    31   github.com/biogo/biogo/errors.f:
    32  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=22
    33  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=26
    34  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=26
    35  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=26
    36  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=26
    37  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=26
    38  
    39   github.com/biogo/biogo/errors.\(\*S\).TestCaller:
    40  	(?:[A-Z]:)?/.*/github.com/biogo/biogo/errors/errors_test.go#L=52
    41  `
    42  
    43  // Tests
    44  func (s *S) TestCaller(c *check.C) {
    45  	c.Skip("This fails after Go1.15.")
    46  	err := Make("message", 0, 10, "item")
    47  	c.Check(err.Error(), check.Equals, "message")
    48  	fn, ln := err.FileLine()
    49  	c.Check(fn, check.Matches, "(?:[A-Z]:)?/.*/biogo/errors/errors_test.go")
    50  	c.Check(ln, check.Equals, 45)
    51  	c.Check(err.Package(), check.Equals, "github.com/biogo/biogo/errors.(*S)")
    52  	c.Check(err.Function(), check.Equals, "TestCaller")
    53  	err = f(5).(Error)
    54  	c.Check(err.Tracef(7), check.Matches, traceRE)
    55  }
    56  
    57  func (s *S) TestMakeFail(c *check.C) {
    58  	c.Check(func() { Make("message", 0, 0) }, check.Panics, "errors: zero trace depth")
    59  }