%w(rake/clean rubygems colored).each { |f| require f }
INCLUDE = "include"
ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import"
SRC = FileList['src/*.erl']
TEST = FileList['test/*.erl']
OBJ = SRC.pathmap("%{^src$,ebin}X.beam")
TESTS = TEST.pathmap("%{^test$,ebin}X.beam")
CLEAN.include("ebin/*.beam", "tests/*.beam", "erl_crash.dump")
directory 'ebin'
directory 'tests'
rule ".beam" => ["%{ebin,src;ebin,test}X.erl"] do |t|
sh "erlc -D EUNIT -pa ebin -pz /Users/da3mon/hack/erlang/eunit/ebin -W #{ERLC_FLAGS} -o ebin #{t.source}"
end
task :compile => ['ebin'] + OBJ + TESTS
task :default => [:clean, :test]
task :test => :compile do
puts "Modules under test:".cyan
TESTS.each do |test|
test[%r{.*/(test_.*).beam}]
next if $1.nil?
file_under_test = $1
puts "Testing " + "#{$1.gsub(/test_/, '')}".green_on_black
puts "erl -pa ebin -run #{file_under_test} test -run init stop".red if ENV['DEBUG']
test_output = `erl -pa ebin -run #{file_under_test} test -run init stop`
puts test_output
end
end