Skip to content

Commit

Permalink
Fix panic from missing root test
Browse files Browse the repository at this point in the history
  • Loading branch information
dnephin committed Sep 17, 2024
1 parent 57f1b7f commit 4f35e55
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
6 changes: 5 additions & 1 deletion testjson/execution.go
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,11 @@ func (p *Package) addTestEvent(event TestEvent) {
// If this is a subtest, mark the root test as having a failed subtest
if tc.Test.IsSubTest() {
root, _ := TestName(event.Test).Split()
rootTestCase := p.running[root]
rootTestCase, ok := p.running[root]
if !ok {
rootTestCase = p.newTestCaseFromEvent(event)
rootTestCase.Test = TestName(root)
}
rootTestCase.hasSubTestFailed = true
p.running[root] = rootTestCase
}
Expand Down
32 changes: 32 additions & 0 deletions testjson/execution_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,38 @@ func (s *captureHandler) Err(text string) error {
return nil
}

func TestScanTestOuput_SubtestWithNoRunningRoot(t *testing.T) {
source := []byte(`{"Action":"start","Package":"k8s.io/kubernetes/test/integration/scheduler_perf"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingBasic/500Nodes"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingPodAntiAffinity/500Nodes"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingSecrets/500Nodes"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingPodAffinity/500Nodes"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingPreferredPodAntiAffinity/500Nodes"}
{"Action":"fail","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingDaemonset/15000Nodes"}
{"Action":"fail","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingDaemonset"}
{"Action":"skip","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Test":"BenchmarkPerfScheduling/SchedulingNodeAffinity/500Nodes"}
{"Action":"fail","Package":"k8s.io/kubernetes/test/integration/scheduler_perf","Elapsed":660.472}`)

handler := &captureHandler{}
cfg := ScanConfig{
Stdout: bytes.NewReader(source),
Handler: handler,
}
exec, err := ScanTestOutput(cfg)
assert.NilError(t, err)
actual := FilterFailedUnique(exec.Failed())

expected := []TestCase{
{
ID: 6,
Package: "k8s.io/kubernetes/test/integration/scheduler_perf",
Test: "BenchmarkPerfScheduling/SchedulingDaemonset/15000Nodes",
},
}
cmpTestCase := cmp.AllowUnexported(TestCase{})
assert.DeepEqual(t, expected, actual, cmpTestCase)
}

func TestFilterFailedUnique_MultipleNested(t *testing.T) {
source := []byte(`{"Package": "pkg", "Action": "run"}
{"Package": "pkg", "Test": "TestParent", "Action": "run"}
Expand Down

0 comments on commit 4f35e55

Please sign in to comment.