From 29a5718a2c10feb0d3b92b52dfa7dc470f7c705e Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Fri, 11 Dec 2015 00:12:32 -0800 Subject: Add dataset test --- xdelta3/go/src/xdelta/test.go | 21 +++++++++++---------- xdelta3/go/src/xdelta/tgroup.go | 11 +++++++++-- 2 files changed, 20 insertions(+), 12 deletions(-) (limited to 'xdelta3/go/src/xdelta') diff --git a/xdelta3/go/src/xdelta/test.go b/xdelta3/go/src/xdelta/test.go index bab66f3..7210698 100644 --- a/xdelta3/go/src/xdelta/test.go +++ b/xdelta3/go/src/xdelta/test.go @@ -47,14 +47,16 @@ func (t *TestGroup) Empty(f io.ReadCloser, desc string) *Goroutine { }) } -func TestWrite(what string, f io.WriteCloser, b []byte) error { - if _, err := f.Write(b); err != nil { - return errors.New(fmt.Sprint(what, ":", err)) - } - if err := f.Close(); err != nil { - return errors.New(fmt.Sprint(what, ":", err)) - } - return nil +func (t *TestGroup) TestWrite(what string, f io.WriteCloser, b []byte) *Goroutine { + return t.Go("write", func(g *Goroutine) { + if _, err := f.Write(b); err != nil { + g.Panic(err) + } + if err := f.Close(); err != nil { + g.Panic(err) + } + g.OK() + }) } func (t *TestGroup) CopyStreams(r io.ReadCloser, w io.WriteCloser, written *int64) *Goroutine { @@ -104,7 +106,7 @@ func (t *TestGroup) CompareStreams(r1 io.ReadCloser, r2 io.ReadCloser, length in }) } -func (t *TestGroup) Exec(desc string, p *Program, srcfifo bool, flags []string) (*Run, error) { +func (t *TestGroup) Exec(desc string, p Program, srcfifo bool, flags []string) (*Run, error) { var err error run := &Run{} args := []string{p.Path} @@ -133,7 +135,6 @@ func (t *TestGroup) Exec(desc string, p *Program, srcfifo bool, flags []string) run.Cmd.Path = p.Path run.Cmd.Args = append(args, flags...) run.Cmd.Dir = t.Runner.Testdir - fmt.Println("Start command", run.Cmd.Args) if serr := run.Cmd.Start(); serr != nil { return nil, serr } diff --git a/xdelta3/go/src/xdelta/tgroup.go b/xdelta3/go/src/xdelta/tgroup.go index 0a3b41b..b1b04ec 100644 --- a/xdelta3/go/src/xdelta/tgroup.go +++ b/xdelta3/go/src/xdelta/tgroup.go @@ -29,6 +29,11 @@ func (g *Goroutine) String() string { func (g *Goroutine) finish(err error) { wait := false tg := g.TestGroup + sbuf := make([]byte, 4096) + sbuf = sbuf[0:runtime.Stack(sbuf, false)] + if err != nil { + err = fmt.Errorf("%v:%v:%v", g.name, err, string(sbuf)) + } tg.Lock() if g.done { if err != nil { @@ -58,6 +63,8 @@ func (g *Goroutine) Panic(err error) { func (t *TestGroup) Main() *Goroutine { return t.main } +func (t *TestGroup) Panic(err error) { t.Main().Panic(err) } + func (t *TestGroup) Go(name string, f func(*Goroutine)) *Goroutine { g := &Goroutine{t, name, false} t.Lock() @@ -68,8 +75,8 @@ func (t *TestGroup) Go(name string, f func(*Goroutine)) *Goroutine { return g } -func (t *TestGroup) Wait(self *Goroutine, procs... *Run) { - self.OK() +func (t *TestGroup) Wait(procs... *Run) { + t.Main().OK() t.WaitGroup.Wait() for _, p := range procs { if err := p.Wait(); err != nil { -- cgit v1.2.3