class CppTestHook

Public Instance Methods

command_line(filename) click to toggle source
# File lib/test_hook.rb, line 10
def command_line(filename)
  "runcppunit #{filename}"
end
compile_file_content(request) click to toggle source
# File lib/test_hook.rb, line 30
  def compile_file_content(request)
    <<EOF
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>

#{super}
int main( int argc, char **argv)
{
  CppUnit::TextUi::TestRunner runner;
  runner.addTest( MumukiTest::suite() );
  runner.run();
  return 0;
}
EOF
  end
post_process_file(file, result, status) click to toggle source
Calls superclass method
# File lib/test_hook.rb, line 14
def post_process_file(file, result, status)
  if result.include? '!!TEST FINISHED WITH COMPILATION ERROR!!'
    [Mumukit::ContentType::Markdown.code(result), :errored]
  else
    super
  end
end
tempfile_extension() click to toggle source
# File lib/test_hook.rb, line 6
def tempfile_extension
  '.cpp'
end
to_structured_result(result) click to toggle source
# File lib/test_hook.rb, line 22
def to_structured_result(result)
  if result.include? '!!!FAILURES!!!'
    transform(result)
  else
    [['All tests passed', :passed]]
  end
end

Private Instance Methods

format_code(result) click to toggle source
# File lib/test_hook.rb, line 60
def format_code(result)
  Mumukit::ContentType::Markdown.code result
end
transform(result) click to toggle source
# File lib/test_hook.rb, line 48
def transform(result)
  result
      .split(/\d{0,9}\) test: MumukiTest::/)
      .drop(1)
      .map do |it|
    captures = it.split("\n")
    title = captures.first.split(' (F)').first
    result = [captures[1], captures[2], captures[3], captures[4], captures[5]].compact.join(' ').strip
    [title, :failed, format_code(result)]
  end
end