From 914ad6c7e351e6090f8f4e16d2592627fd60aa19 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Tue, 1 Oct 2024 05:04:07 -0400 Subject: [PATCH] fix: add comment on wrong result status --- internal/parsers/diff/parser.go | 53 ++++++++++++++++----------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/internal/parsers/diff/parser.go b/internal/parsers/diff/parser.go index be70396..fc0d106 100644 --- a/internal/parsers/diff/parser.go +++ b/internal/parsers/diff/parser.go @@ -57,37 +57,36 @@ func (*Diff) Run(results []stage.ExecutorResult, confAny any) ( comment += fmt.Sprintf( "Unexpected executor status: %s.", result.Status, ) - continue - } - for _, output := range caseConf.Outputs { - answer, err := os.ReadFile(output.AnswerPath) - if err != nil { - return nil, true, err - } - slog.Debug("compare", "filename", output.FileName, - "answer path", output.AnswerPath, - "actual", result.Files[output.FileName], - "answer", string(answer)) - // If no difference, assign score - if compareChars(string(answer), result.Files[output.FileName], output.IgnoreWhitespace) { - score += output.Score - } else { - // Convert answer to string and split by lines - stdoutLines := strings.Split(string(answer), "\n") - resultLines := strings.Split(result.Files[output.FileName], "\n") + } else { + for _, output := range caseConf.Outputs { + answer, err := os.ReadFile(output.AnswerPath) + if err != nil { + return nil, true, err + } + slog.Debug("compare", "filename", output.FileName, + "answer path", output.AnswerPath, + "actual", result.Files[output.FileName], + "answer", string(answer)) + // If no difference, assign score + if compareChars(string(answer), result.Files[output.FileName], output.IgnoreWhitespace) { + score += output.Score + } else { + // Convert answer to string and split by lines + stdoutLines := strings.Split(string(answer), "\n") + resultLines := strings.Split(result.Files[output.FileName], "\n") - // Generate Myers diff - diffOps := myersDiff(stdoutLines, resultLines) + // Generate Myers diff + diffOps := myersDiff(stdoutLines, resultLines) - // Generate diff block with surrounding context - diffOutput := generateDiffWithContext(stdoutLines, resultLines, diffOps) - comment += fmt.Sprintf( - "difference found in %s:\n```diff\n%s```\n", - output.FileName, diffOutput, - ) + // Generate diff block with surrounding context + diffOutput := generateDiffWithContext(stdoutLines, resultLines, diffOps) + comment += fmt.Sprintf( + "difference found in %s:\n```diff\n%s```\n", + output.FileName, diffOutput, + ) + } } } - res = append(res, stage.ParserResult{ Score: score, Comment: comment,