From bad51add3fd45562e76a3e705b28215859052331 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Mon, 26 Oct 2020 21:11:37 +0100 Subject: [PATCH] Store parsed linter messages --- app/controllers/concerns/submission_scoring.rb | 9 ++++++--- app/models/submission.rb | 5 +++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/controllers/concerns/submission_scoring.rb b/app/controllers/concerns/submission_scoring.rb index c6fd56e7..6c258a5a 100644 --- a/app/controllers/concerns/submission_scoring.rb +++ b/app/controllers/concerns/submission_scoring.rb @@ -12,14 +12,14 @@ module SubmissionScoring output = execute_test_file(file, submission) assessment = assessor.assess(output) passed = ((assessment[:passed] == assessment[:count]) and (assessment[:score]).positive?) - testrun_output = passed ? nil : 'message: ' + output[:message].to_s + "\n stdout: " + output[:stdout].to_s + "\n stderr: " + output[:stderr].to_s + testrun_output = passed ? nil : 'status: ' + output[:status].to_s + "\n stdout: " + output[:stdout].to_s + "\n stderr: " + output[:stderr].to_s unless testrun_output.blank? submission.exercise.execution_environment.error_templates.each do |template| pattern = Regexp.new(template.signature).freeze StructuredError.create_from_template(template, testrun_output, submission) if pattern.match(testrun_output) end end - Testrun.new( + testrun = Testrun.create( submission: submission, cause: 'assess', # Required to differ run and assess for RfC show file: file, # Test file that was executed @@ -27,7 +27,10 @@ module SubmissionScoring output: testrun_output, container_execution_time: output[:container_execution_time], waiting_for_container_time: output[:waiting_for_container_time] - ).save + ) + + LinterCheckRun.create_from(testrun, assessment) if file.teacher_defined_linter? + output.merge!(assessment) output.merge!(filename: file.name_with_extension, message: feedback_message(file, output), weight: file.weight) # end diff --git a/app/models/submission.rb b/app/models/submission.rb index 62d7ad8e..6ff1894a 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -53,6 +53,11 @@ class Submission < ApplicationRecord collect_files.detect(&:main_file?) end + def file_by_name(file_path) + # expects the full file path incl. file extension + collect_files.detect { |file| file.filepath == file_path } + end + def normalized_score ::NewRelic::Agent.add_custom_attributes({unnormalized_score: score}) if !score.nil? && !exercise.maximum_score.nil? && (exercise.maximum_score > 0)