Skip to content

Commit 9190856

Browse files
authored
tests: make sure only known parser warnings occur in the test demo set (#285)
1 parent 6831f82 commit 9190856

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

pkg/demoinfocs/demoinfocs_test.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,28 @@ func TestDemoSet(t *testing.T) {
361361

362362
p := demoinfocs.NewParser(f)
363363

364-
p.RegisterEventHandler(func(event events.GenericGameEvent) {
365-
if event.Name == "bot_takeover" {
366-
t.Log(event.Data)
364+
p.RegisterEventHandler(func(warn events.ParserWarn) {
365+
switch warn.Type {
366+
case events.WarnTypeBombsiteUnknown:
367+
if p.Header().MapName == "de_grind" {
368+
t.Log("expected known issue with bomb sites on de_grind occurred:", warn.Message)
369+
370+
return
371+
}
372+
373+
case events.WarnTypeTeamSwapPlayerNil:
374+
t.Log("expected known issue with team swaps occurred", warn.Message)
375+
return
376+
377+
case events.WarnTypeGameEventBeforeDescriptors:
378+
if strings.Contains(name, "POV-orbit-skytten-vs-cloud9-gfinity15sm1-nuke.dem") {
379+
t.Log("expected known issue for POV demos occurred:", warn.Message)
380+
381+
return
382+
}
383+
384+
default:
385+
t.Error("unexpected parser warning occurred:", warn.Message)
367386
}
368387
})
369388

pkg/demoinfocs/events/events.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,8 +503,10 @@ type StringTableCreated struct {
503503
type WarnType int
504504

505505
const (
506-
WarnTypeUndefined = iota
507-
WarnTypeBombsiteUnknown // may occur on de_grind for bombsite B as the bounding box of the bombsite is wrong
506+
WarnTypeUndefined = iota
507+
WarnTypeBombsiteUnknown // may occur on de_grind for bombsite B as the bounding box of the bombsite is wrong
508+
WarnTypeTeamSwapPlayerNil // TODO: figure out why this happens
509+
WarnTypeGameEventBeforeDescriptors // may occur in POV demos
508510
)
509511

510512
// ParserWarn signals that a non-fatal problem occurred during parsing.

pkg/demoinfocs/game_events.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ func (p *parser) handleGameEventList(gel *msg.CSVCMsg_GameEventList) {
2020

2121
func (p *parser) handleGameEvent(ge *msg.CSVCMsg_GameEvent) {
2222
if p.gameEventDescs == nil {
23-
p.eventDispatcher.Dispatch(events.ParserWarn{Message: "received GameEvent but event descriptors are missing"})
23+
p.eventDispatcher.Dispatch(events.ParserWarn{
24+
Message: "received GameEvent but event descriptors are missing",
25+
Type: events.WarnTypeGameEventBeforeDescriptors,
26+
})
2427

2528
return
2629
}
@@ -571,6 +574,7 @@ func (geh gameEventHandler) playerTeam(data map[string]*msg.CSVCMsg_GameEventKey
571574
// TODO: figure out why this happens and whether it's a bug or not
572575
geh.dispatch(events.ParserWarn{
573576
Message: "Player team swap game-event occurred but player is nil",
577+
Type: events.WarnTypeTeamSwapPlayerNil,
574578
})
575579
}
576580
}

0 commit comments

Comments
 (0)