rakefile_helper_GCC.rb 1.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
#This rakefile sets you up to use GCC as your compiler for tests
module RakefileConstants
  
  C_EXTENSION = '.c'
  OBJ_EXTENSION = '.obj'
  BIN_EXTENSION = '.exe'
  
  UNIT_TEST_PATH = 'test'
  UNITY_PATH = 'src'
  SOURCE_PATH = 'src'
  BUILD_PATH = 'build'
  
  UNITY_SRC = UNITY_PATH + '\unity.c'
  UNITY_HDR = UNITY_PATH + '\unity.h'
  BIN_PATH = 'build'
  UNITY_TEST_SRC = UNIT_TEST_PATH + '\testunity.c'
  UNITY_TEST_RUNNER_SRC = UNIT_TEST_PATH + '\testunity_Runner.c'
  UNITY_OBJ = BIN_PATH + '\unity' + OBJ_EXTENSION
  UNITY_TEST_OBJ = BIN_PATH + '\testunity' + OBJ_EXTENSION
  UNITY_TEST_RUNNER_OBJ = BIN_PATH + '\testunity_Runner' + OBJ_EXTENSION
  UNITY_TEST_EXEC = UNITY_TEST_OBJ.ext BIN_EXTENSION
  TEST_RESULTS = UNITY_TEST_OBJ.ext '.testpass'
  
  COMPILER = 'gcc.exe'
  LINKER   = 'gcc.exe'
  
end

module RakefileHelpers
  include RakefileConstants

  def flush_output
    $stderr.flush
    $stdout.flush
  end
  
  def report message
    puts message
    flush_output
  end

  def compile src, obj
    execute "#{COMPILER} -c -I#{SOURCE_PATH} -I#{UNITY_PATH} -DTEST #{src} -o#{obj}"
  end

  def link prerequisites, executable
    execute "#{LINKER} -DTEST #{prerequisites.join(' ')} -o#{executable}"
  end

  def run_test executable      
    execute "\"#{executable}\""
  end
  
  def write_result_file filename, results
    if (results.include?("OK\n"))
      output_file = filename.gsub(BIN_EXTENSION, '.testpass')
    else
      output_file = filename.gsub(BIN_EXTENSION, '.testfail')
    end
    File.open(output_file, 'w') do |f|
      f.print results
    end
  end
  
private #####################

  def execute command_string
    report command_string
    output = `#{command_string}`
    report output
    output
  end

end