#!/usr/bin/env ruby

require 'fileutils'

def get_output_filenames
  files = Dir.glob('*')
  files.delete('Makefile')
  files
end

def cleanup
  get_output_filenames.each do |fname|
    FileUtils.rm fname
  end
end

Dir.glob('test/*.mk').sort.each do |mk|
  c = File.read(mk)

  expected_failure = c =~ /\A# TODO/

  name = mk[/([^\/]+)\.mk$/, 1]
  dir = "out/#{name}"
  FileUtils.rm_rf(dir)
  FileUtils.mkdir_p(dir)

  Dir.chdir(dir) do
    File.open("Makefile", 'w') do |ofile|
      ofile.print(c)
    end

    expected = ''
    output = ''

    testcases = c.scan(/^test\d*/).sort

    cleanup
    testcases.each do |tc|
      expected += "=== #{tc} ===\n" + `make #{tc} 2>&1`
      expected_files = get_output_filenames
      expected += "\n=== FILES ===\n#{expected_files * "\n"}\n"
    end

    cleanup
    testcases.each do |tc|
      output += "=== #{tc} ===\n" + `../../kati #{tc} 2>&1`
      output_files = get_output_filenames
      output += "\n=== FILES ===\n#{output_files * "\n"}\n"
    end

    expected.gsub!(/^make\[.*\n/, '')
    output.gsub!(/^\*kati\*.*\n/, '')

    File.open('out.make', 'w'){|ofile|ofile.print(expected)}
    File.open('out.kati', 'w'){|ofile|ofile.print(output)}

    if expected != output
      if expected_failure
        puts "#{name}: FAIL (expected)"
      else
        puts "#{name}: FAIL"
        puts `diff -u out.make out.kati`
      end
    else
      if expected_failure
        puts "#{name}: PASS (unexpected)"
      else
        puts "#{name}: PASS"
      end
    end
  end
end
