From 0d22f34c56d8b98dc338b9a733e2a53c3dae5a4f Mon Sep 17 00:00:00 2001 From: funvit Date: Sat, 31 Aug 2019 19:26:57 +0300 Subject: [PATCH] fix: added panic if type assertions failed --- run.go | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/run.go b/run.go index e4ec538..d5c243c 100644 --- a/run.go +++ b/run.go @@ -72,30 +72,33 @@ func (r *runner) concurrent(rate int, formatterFn func() Formatter) (failed bool } if useFmtCopy { copyLock.Lock() - if d, ok := r.fmt.(*progress); ok { - if s, ok := fmtCopy.(*progress); ok { - func(source *progress, dest *progress) { - for _, v := range source.features { - dest.features = append(dest.features, v) - } + dest, dOk := r.fmt.(*progress) + source, sOk := fmtCopy.(*progress) - for _, v := range source.failed { - dest.failed = append(dest.failed, v) - } - for _, v := range source.passed { - dest.passed = append(dest.passed, v) - } - for _, v := range source.skipped { - dest.skipped = append(dest.skipped, v) - } - for _, v := range source.undefined { - dest.undefined = append(dest.undefined, v) - } - for _, v := range source.pending { - dest.pending = append(dest.pending, v) - } - }(s, d) + if dOk && sOk { + for _, v := range source.features { + dest.features = append(dest.features, v) } + + for _, v := range source.failed { + dest.failed = append(dest.failed, v) + } + for _, v := range source.passed { + dest.passed = append(dest.passed, v) + } + for _, v := range source.skipped { + dest.skipped = append(dest.skipped, v) + } + for _, v := range source.undefined { + dest.undefined = append(dest.undefined, v) + } + for _, v := range source.pending { + dest.pending = append(dest.pending, v) + } + } else if !dOk { + panic("cant cast dest formatter to progress-typed") + } else if !sOk { + panic("cant cast source formatter to progress-typed") } copyLock.Unlock() }