class Tryouts::Translators::MinitestTranslator
def generate_code(testrun)
def generate_code(testrun) file_basename = File.basename(testrun.source_file, '.rb') class_name = "Test#{file_basename.gsub(/[^A-Za-z0-9]/, '')}" lines = [] lines << '' lines << "require 'minitest/test'" lines << "require 'minitest/autorun'" lines << '' lines << "class #{class_name} < Minitest::Test" if testrun.setup && !testrun.setup.empty? lines << ' def setup' testrun.setup.code.lines.each { |line| lines << " #{line.chomp}" } lines << ' end' lines << '' end testrun.test_cases.each_with_index do |test_case, index| next if test_case.empty? || !test_case.expectations? method_name = "test_#{index.to_s.rjust(3, '0')}_#{parameterize(test_case.description)}" lines << " def #{method_name}" if test_case.exception_expectations? # Handle exception expectations lines << ' error = assert_raises(StandardError) do' unless test_case.code.strip.empty? test_case.code.lines.each { |line| lines << " #{line.chomp}" } end lines << ' end' test_case.exception_expectations.each do |expectation| lines << " assert #{expectation}, \"Exception expectation failed: #{expectation}\"" end else # Handle regular expectations unless test_case.code.strip.empty? lines << ' result = begin' test_case.code.lines.each { |line| lines << " #{line.chomp}" } lines << ' end' end test_case.expectations.each do |expectation| lines << " assert_equal #{expectation}, result" end end lines << ' end' lines << '' end if testrun.teardown && !testrun.teardown.empty? lines << ' def teardown' testrun.teardown.code.lines.each { |line| lines << " #{line.chomp}" } lines << ' end' end lines << 'end' lines.join("\n") end