mumuki/mumuki-ruby-runner

View on GitHub
lib/test_hook.rb

Summary

Maintainability
A
0 mins
Test Coverage
class RubyTestHook < Mumukit::Templates::FileHook
  line_number_offset 1, include_extra: true

  mashup do |extra, content, test|
    [
      extra,
      content,
<<RUBY
describe do
  after(:all) do
    puts '!!!MUMUKI-RUBY-OUTPUT!!!'
  end
  #{test}
end
RUBY
    ]
  end
  isolated true
  structured true, separator: '!!!MUMUKI-RUBY-OUTPUT!!!'

  def tempfile_extension
    '.rb'
  end

  def command_line(filename)
    "rspec #{filename} -f json"
  end

  def post_process_unstructured_result(file, result, status)
    if status.errored?
      [
        result
          .gsub(/^.*(#{masked_tempfile_path}:\d+:)/) { $1 }
          .lines
          .reject { |it| it.start_with? "    from /usr/local" }
          .take(3)
          .join + "\n",
        status
      ]
    else
      super
    end
  end

  def to_structured_result(result)
    transform(super['examples'])
  end

  def transform(examples)
    examples.map { |e| [e['full_description'].strip, e['status'].to_sym, parse_out(e['exception'])] }
  end

  def parse_out(exception)
    exception ? exception['message'] : ''
  end
end