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