From 8c6013de89e4280c27344f6180db06ae27b7749f Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Fri, 1 Sep 2023 12:11:42 +0200 Subject: dashboard: auto-guess kernel and repo for #syz test We used to support this only for external reportings, but let's auto-guess these parameters for all incoming patch testing commands. --- pkg/email/parser.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'pkg/email/parser.go') diff --git a/pkg/email/parser.go b/pkg/email/parser.go index 2ed9495fd..efc63391b 100644 --- a/pkg/email/parser.go +++ b/pkg/email/parser.go @@ -296,13 +296,21 @@ func extractCommand(body string) (*SingleCommand, int) { // For "fix:"/"dup:" we need a whole non-empty line of text. switch cmd { case CmdTest: - args = extractArgsTokens(body[cmdPos+cmdEnd:], 2) + if strings.HasSuffix(str, ":") { + // For "#syz test:", we do want to query 2 arguments. + args = extractArgsTokens(body[cmdPos+cmdEnd:], 2) + } else { + // For "#syz test", it's likely there won't be anything else, so let's only parse + // the first line. + fmt.Printf("line: %s", body[cmdPos+cmdEnd:]) + args = extractArgsLine(body[cmdPos+cmdEnd:], false) + } case CmdSet, CmdUnset: - args = extractArgsLine(body[cmdPos+cmdEnd:]) + args = extractArgsLine(body[cmdPos+cmdEnd:], true) case cmdTest5: args = extractArgsTokens(body[cmdPos+cmdEnd:], 5) case CmdFix, CmdDup: - args = extractArgsLine(body[cmdPos+cmdEnd:]) + args = extractArgsLine(body[cmdPos+cmdEnd:], true) } return &SingleCommand{ Command: cmd, @@ -365,11 +373,12 @@ func extractArgsTokens(body string, num int) string { return strings.TrimSpace(strings.Join(args, " ")) } -func extractArgsLine(body string) string { +func extractArgsLine(body string, skipWs bool) string { pos := 0 - for pos < len(body) && (body[pos] == ' ' || body[pos] == '\t' || - body[pos] == '\n' || body[pos] == '\r') { - pos++ + if skipWs { + for pos < len(body) && unicode.IsSpace(rune(body[pos])) { + pos++ + } } lineEnd := strings.IndexByte(body[pos:], '\n') if lineEnd == -1 { -- cgit mrf-deployment