Merge pull request #308 from cucumber/bugfix/junit-testsuite-time

Fixed an issue with calculating time for junit testsuite
Этот коммит содержится в:
Fredrik Lönnblad 2020-06-13 10:45:01 +02:00 коммит произвёл GitHub
родитель 849e8e499b e61d3558c6
коммит a03a1b8d2c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 12 добавлений и 23 удалений

Просмотреть файл

@ -1,8 +1,6 @@
package godog package godog
import ( import (
"time"
"github.com/cucumber/messages-go/v10" "github.com/cucumber/messages-go/v10"
) )
@ -10,7 +8,6 @@ type feature struct {
*messages.GherkinDocument *messages.GherkinDocument
pickles []*messages.Pickle pickles []*messages.Pickle
time time.Time
content []byte content []byte
order int order int
} }
@ -90,7 +87,3 @@ func (f feature) findStep(astStepID string) *messages.GherkinDocument_Feature_St
return nil return nil
} }
func (f feature) startedAt() time.Time {
return f.time
}

Просмотреть файл

@ -67,21 +67,8 @@ func (f *junitFormatter) buildJUNITPackageSuite() junitPackageSuite {
pickles := f.storage.mustGetPickles(feature.Uri) pickles := f.storage.mustGetPickles(feature.Uri)
sort.Sort(sortPicklesByID(pickles)) sort.Sort(sortPicklesByID(pickles))
var finishedAt = feature.startedAt()
if len(pickles) > 0 {
lastPickle := pickles[len(pickles)-1]
if len(lastPickle.Steps) > 0 {
lastStep := lastPickle.Steps[len(lastPickle.Steps)-1]
lastPickleStepResult := f.storage.mustGetPickleStepResult(lastStep.Id)
finishedAt = lastPickleStepResult.finishedAt
}
}
ts := junitTestSuite{ ts := junitTestSuite{
Name: feature.Feature.Name, Name: feature.Feature.Name,
Time: junitTimeDuration(feature.startedAt(), finishedAt),
TestCases: make([]*junitTestCase, len(pickles)), TestCases: make([]*junitTestCase, len(pickles)),
} }
@ -90,21 +77,28 @@ func (f *junitFormatter) buildJUNITPackageSuite() junitPackageSuite {
testcaseNames[pickle.Name] = testcaseNames[pickle.Name] + 1 testcaseNames[pickle.Name] = testcaseNames[pickle.Name] + 1
} }
firstPickleStartedAt := f.startedAt
lastPickleFinishedAt := f.startedAt
var outlineNo = make(map[string]int) var outlineNo = make(map[string]int)
for idx, pickle := range pickles { for idx, pickle := range pickles {
tc := junitTestCase{} tc := junitTestCase{}
pickleResult := f.storage.mustGetPickleResult(pickle.Id) pickleResult := f.storage.mustGetPickleResult(pickle.Id)
var finishedAt = pickleResult.StartedAt if idx == 0 {
firstPickleStartedAt = pickleResult.StartedAt
}
lastPickleFinishedAt = pickleResult.StartedAt
if len(pickle.Steps) > 0 { if len(pickle.Steps) > 0 {
lastStep := pickle.Steps[len(pickle.Steps)-1] lastStep := pickle.Steps[len(pickle.Steps)-1]
lastPickleStepResult := f.storage.mustGetPickleStepResult(lastStep.Id) lastPickleStepResult := f.storage.mustGetPickleStepResult(lastStep.Id)
finishedAt = lastPickleStepResult.finishedAt lastPickleFinishedAt = lastPickleStepResult.finishedAt
} }
tc.Time = junitTimeDuration(pickleResult.StartedAt, finishedAt) tc.Time = junitTimeDuration(pickleResult.StartedAt, lastPickleFinishedAt)
tc.Name = pickle.Name tc.Name = pickle.Name
if testcaseNames[tc.Name] > 1 { if testcaseNames[tc.Name] > 1 {
@ -159,6 +153,8 @@ func (f *junitFormatter) buildJUNITPackageSuite() junitPackageSuite {
ts.TestCases[idx] = &tc ts.TestCases[idx] = &tc
} }
ts.Time = junitTimeDuration(firstPickleStartedAt, lastPickleFinishedAt)
suite.TestSuites[idx] = &ts suite.TestSuites[idx] = &ts
} }