Improve PyLint RegEx to match single lines

* Also return more detailed results for further analysis
This commit is contained in:
Sebastian Serth
2020-10-23 22:23:57 +02:00
parent 975cb8f5bc
commit 9beefd0feb

View File

@ -1,6 +1,6 @@
class PyLintAdapter < TestingFrameworkAdapter
REGEXP = /Your code has been rated at (-?\d+\.?\d*)\/(\d+\.?\d*)/
ASSERTION_ERROR_REGEXP = /^.*?\(.*?,\ (.*?),.*?\)\ (.*?)$/m
ASSERTION_ERROR_REGEXP = /^.*?\([^,]*?,\ ([^,]*?),[^,]*?\)\ (.*?)$/
def self.framework_name
'PyLint'
@ -14,21 +14,22 @@ class PyLintAdapter < TestingFrameworkAdapter
else
captures = regex_match.captures.map(&:to_f)
count = captures.second
passed = captures.first
passed = captures.first >= 0 ? captures.first : 0
failed = count - passed
end
begin
assertion_error_matches = Timeout.timeout(2.seconds) do
output[:stdout].scan(ASSERTION_ERROR_REGEXP).map { |match|
output[:stdout].scan(ASSERTION_ERROR_REGEXP).map do |match|
test = match.first.strip
description = match.second.strip
"#{test}: #{description}"
}.flatten || []
{test: test, description: description}
end || []
end
rescue Timeout::Error
assertion_error_matches = []
end
{count: count, failed: failed, error_messages: assertion_error_matches}
concatenated_errors = assertion_error_matches.map { |result| "#{result[:test]}: #{result[:description]}" }.flatten
{count: count, failed: failed, error_messages: concatenated_errors, detailed_linter_results: assertion_error_matches}
end
end