class BasePythonTestHook

Public Instance Methods

command_line(filename) click to toggle source
# File lib/base/test_hook.rb, line 8
def command_line(filename)
  "rununittest #{filename}"
end
compile_file_content(request) click to toggle source
# File lib/base/test_hook.rb, line 12
  def compile_file_content(request)
    <<python


import unittest
import xmlrunner
import sys

#{request.extra}
#{request.content}
#{test_class(request.test)}

unittest.main(
  testRunner=xmlrunner.XMLTestRunner(output='./xml-unittest-output'),
  failfast=False,
  buffer=False,
  catchbreak=False
)
python
  end
post_process_file(_file, output, status) click to toggle source
# File lib/base/test_hook.rb, line 33
def post_process_file(_file, output, status)
  xml = output.split("Generating XML reports...\n").last
  raise StandardError, 'No XML found' unless xml.start_with? '<?xml'

  [generate_test_results(Nokogiri::XML(xml))]
rescue
  [output, :errored]
end
tempfile_extension() click to toggle source
# File lib/base/test_hook.rb, line 4
def tempfile_extension
  '.py'
end

Private Instance Methods

format_test_name(name) click to toggle source
# File lib/base/test_hook.rb, line 68
def format_test_name(name)
  name.sub('test_', '').gsub('_', ' ').capitalize
end
generate_test_results(report) click to toggle source
# File lib/base/test_hook.rb, line 52
def generate_test_results(report)
  report.xpath('//testcase').map(&method(:test_result))
end
test_class(test) click to toggle source
# File lib/base/test_hook.rb, line 44
  def test_class(test)
    return test if test =~ /class.*\( *unittest.TestCase *\) *:/
    <<python
class MumukiTest(unittest.TestCase):
  #{test.gsub(/\n/,"\n\t")}
python
  end
test_result(test_case) click to toggle source
# File lib/base/test_hook.rb, line 56
def test_result(test_case)
  failure = test_case.xpath('failure', 'error')
  error = failure.attribute('type')
  message = failure.attribute('message')

  [
      format_test_name(test_case.attribute('name').to_s),
      error.nil? ? :passed: :failed,
      error.nil? ? '' : "#{error}: #{message}"
  ]
end