diff --git a/suite/stats.go b/suite/stats.go index be4ccd679..56bd90fb8 100644 --- a/suite/stats.go +++ b/suite/stats.go @@ -35,8 +35,15 @@ func (s *SuiteInformation) end(testName string, passed bool) { if s == nil { return } - s.TestStats[testName].End = time.Now() - s.TestStats[testName].Passed = passed + + testStats, started := s.TestStats[testName] + + if !started { + return + } + + testStats.End = time.Now() + testStats.Passed = passed } func (s *SuiteInformation) Passed() bool { diff --git a/suite/suite_test.go b/suite/suite_test.go index 1c193aaf2..cebb47c13 100644 --- a/suite/suite_test.go +++ b/suite/suite_test.go @@ -813,3 +813,24 @@ func TestSuiteSignatureValidation(t *testing.T) { assert.True(t, suiteTester.setUp, "SetupSuite should have been executed") assert.True(t, suiteTester.toreDown, "TearDownSuite should have been executed") } + +type suiteSkipTestWithStats struct{ Suite } + +func (s *suiteSkipTestWithStats) SetupTest() { + s.T().Skip("Just because!") +} + +func (s *suiteSkipTestWithStats) HandleStats(_ string, _ *SuiteInformation) {} + +func (s *suiteSkipTestWithStats) TestSomething() { + panic("Should not get here.") +} + +func TestSuiteSkipTestWithStats(t *testing.T) { + assert.NotPanics( + t, + func() { + Run(t, &suiteSkipTestWithStats{}) + }, + ) +}