require 'rake/testtask'
require 'webrick'
require './lib/lib.rb'

task default: [:test]

Rake::TestTask.new do |t|
  t.pattern = "test*.rb"
end

task :write_cprogs do
  system("rm -rf ./c_programs/*.c")
  require('./lib/write_cprogs.rb')
end

task :compile_cprogs do
  system("rm -rf ./c_programs/*.out")
  Dir.glob('./c_programs/*.c') do |c_file|
    system("gcc -Wall -Wextra #{c_file} -o #{c_file.chomp(".c")}.out")
  end
end

task :verify_cprogs do
  WebServer.start
  Dir.glob('./c_programs/*.out') do |c_file|
    if !system(c_file) then puts "#{c_file} failed!" end
    sleep 0.03 # Throttle to avoid failed connect()
  end
  WebServer.stop
end

task :prepare_cprogs => [:write_cprogs, :compile_cprogs, :verify_cprogs]
