Files
codeocean/lib/cpp_catch2_adapter.rb
julZuern 5d91aeb810 added cpp adapter (#189)
* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Add files via upload

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh

* Update setup_debian_2_install_docker.sh
2018-07-24 15:36:49 +02:00

22 lines
1.0 KiB
Ruby

class CppUnitAdapter < TestingFrameworkAdapter
COUNT_REGEXP = /in (\d+) test cases/
FAILURES_REGEXP = /test cases: (\d+) | (\d+) failed/
BOTH_REGEXP = /test cases: (\d+) | (\d+) passed | (\d+) failed/
ASSERTION_ERROR_REGEXP = /\n(.+) error:(.+); /
def self.framework_name
'CppUnit'
end
def parse_output(output)
if SUCCESS_REGEXP.match(output[:stdout])
{count: Regexp.last_match(1).to_i, passed: Regexp.last_match(1).to_i}
else
count = COUNT_REGEXP.match(output[:stdout]).try(:captures).try(:first).try(:to_i) || FAILURES_REGEXP.last_match(0).try(:captures).try(:first).try(:to_i) || SUCCESS_REGEXP.last_match(0).try(:captures).try(:first).try(:to_i) || 0
failed = FAILURES_REGEXP.match(1).try(:captures).try(:first).try(:to_i) || BOTH_REGEXP.match(2).try(:captures).try(:first).try(:to_i) || 0
error_matches = ASSERTION_ERROR_REGEXP.match(output[:stdout]).try(:captures) || []
{count: count, failed: failed, error_messages: error_matches}
end
end
end