Add R script adapter

This commit is contained in:
Sebastian Serth
2020-01-13 15:10:00 +01:00
parent 9e690554dc
commit 4f8fedf1bb
3 changed files with 45 additions and 1 deletions

View File

@ -418,7 +418,29 @@ configureEditors: function () {
card.find('.row .col-sm-9').eq(1).find('.number').eq(0).text(parseFloat((result.score * result.weight).toFixed(2)));
card.find('.row .col-sm-9').eq(1).find('.number').eq(1).text(result.weight);
card.find('.row .col-sm-9').eq(2).html(result.message);
if (result.error_messages) card.find('.row .col-sm-9').eq(3).text(result.error_messages.join(' '));
// Add error message from code to card
if (result.error_messages) {
const targetNode = card.find('.row .col-sm-9').eq(3);
// one or more errors?
if (result.error_messages.length > 1) {
// delete all current elements
targetNode.text('');
// create a new list and appand each element
const ul = document.createElement("ul");
ul.setAttribute('class', 'error_messages_list');
result.error_messages.forEach(function (item) {
var li = document.createElement("li");
var text = document.createTextNode(item);
li.appendChild(text);
ul.append(li);
})
targetNode.append(ul);
} else {
targetNode.text(result.error_messages.join(''));
}
}
//card.find('.row .col-sm-9').eq(4).find('a').attr('href', '#output-' + index);
},

View File

@ -152,6 +152,11 @@ button i.fa-spin {
margin-left: auto;
}
.error_messages_list {
list-style-type: disc;
padding-inline-start: 1.25rem;
}
.enforce-top-margin {
margin-top: 5px !important;
}

17
lib/r_script_adapter.rb Normal file
View File

@ -0,0 +1,17 @@
class RScriptAdapter < TestingFrameworkAdapter
REGEXP = /(\d+) examples?, (\d+) passed?/
ASSERTION_ERROR_REGEXP = /AssertionError:\s(.*)/
def self.framework_name
'R Script'
end
def parse_output(output)
captures = REGEXP.match(output[:stdout]).captures.map(&:to_i)
count = captures.first
passed = captures.second
failed = count - passed
assertion_error_matches = output[:stdout].scan(ASSERTION_ERROR_REGEXP).flatten || []
{count: count, failed: failed, error_messages: assertion_error_matches}
end
end