19750e409Sopenharmony_ci# ==========================================
29750e409Sopenharmony_ci#   Unity Project - A Test Framework for C
39750e409Sopenharmony_ci#   Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
49750e409Sopenharmony_ci#   [Released under MIT License. Please refer to license.txt for details]
59750e409Sopenharmony_ci# ==========================================
69750e409Sopenharmony_ci
79750e409Sopenharmony_ciUNITY_ROOT = File.expand_path(File.dirname(__FILE__)) + '/'
89750e409Sopenharmony_ci$verbose = false
99750e409Sopenharmony_ci
109750e409Sopenharmony_cirequire 'rake'
119750e409Sopenharmony_cirequire 'rake/clean'
129750e409Sopenharmony_cirequire UNITY_ROOT + 'rakefile_helper'
139750e409Sopenharmony_cirequire 'rspec/core/rake_task'
149750e409Sopenharmony_ci
159750e409Sopenharmony_ciTEMP_DIRS = [
169750e409Sopenharmony_ci	File.join(UNITY_ROOT, 'build'),
179750e409Sopenharmony_ci	File.join(UNITY_ROOT, 'sandbox')
189750e409Sopenharmony_ci]
199750e409Sopenharmony_ci
209750e409Sopenharmony_ciTEMP_DIRS.each do |dir|
219750e409Sopenharmony_ci  directory(dir)
229750e409Sopenharmony_ci  CLOBBER.include(dir)
239750e409Sopenharmony_ciend
249750e409Sopenharmony_ci
259750e409Sopenharmony_citask :prepare_for_tests => TEMP_DIRS
269750e409Sopenharmony_ci
279750e409Sopenharmony_ciinclude RakefileHelpers
289750e409Sopenharmony_ci
299750e409Sopenharmony_ci# Load proper GCC as defult configuration
309750e409Sopenharmony_ciDEFAULT_CONFIG_FILE = 'gcc_auto_stdint.yml'
319750e409Sopenharmony_ciconfigure_toolchain(DEFAULT_CONFIG_FILE)
329750e409Sopenharmony_ci
339750e409Sopenharmony_cidesc "Test unity with its own unit tests"
349750e409Sopenharmony_citask :unit => [:prepare_for_tests] do
359750e409Sopenharmony_ci  run_tests unit_test_files
369750e409Sopenharmony_ciend
379750e409Sopenharmony_ci
389750e409Sopenharmony_cidesc "Test unity's helper scripts"
399750e409Sopenharmony_citask :scripts => [:prepare_for_tests] do
409750e409Sopenharmony_ci  Dir['tests/test_*.rb'].each do |scriptfile|
419750e409Sopenharmony_ci    require "./"+scriptfile
429750e409Sopenharmony_ci  end
439750e409Sopenharmony_ciend
449750e409Sopenharmony_ci
459750e409Sopenharmony_cidesc "Run all rspecs"
469750e409Sopenharmony_ciRSpec::Core::RakeTask.new(:spec) do |t|
479750e409Sopenharmony_ci  t.pattern = 'spec/**/*_spec.rb'
489750e409Sopenharmony_ciend
499750e409Sopenharmony_ci
509750e409Sopenharmony_cidesc "Generate test summary"
519750e409Sopenharmony_citask :summary do
529750e409Sopenharmony_ci  report_summary
539750e409Sopenharmony_ciend
549750e409Sopenharmony_ci
559750e409Sopenharmony_cidesc "Build and test Unity"
569750e409Sopenharmony_citask :all => [:clean, :prepare_for_tests, :scripts, :unit, :style, :summary]
579750e409Sopenharmony_citask :default => [:clobber, :all]
589750e409Sopenharmony_citask :ci => [:no_color, :default]
599750e409Sopenharmony_citask :cruise => [:no_color, :default]
609750e409Sopenharmony_ci
619750e409Sopenharmony_cidesc "Load configuration"
629750e409Sopenharmony_citask :config, :config_file do |t, args|
639750e409Sopenharmony_ci  configure_toolchain(args[:config_file])
649750e409Sopenharmony_ciend
659750e409Sopenharmony_ci
669750e409Sopenharmony_citask :no_color do
679750e409Sopenharmony_ci  $colour_output = false
689750e409Sopenharmony_ciend
699750e409Sopenharmony_ci
709750e409Sopenharmony_citask :verbose do
719750e409Sopenharmony_ci  $verbose = true
729750e409Sopenharmony_ciend
739750e409Sopenharmony_ci
749750e409Sopenharmony_cinamespace :style do
759750e409Sopenharmony_ci  desc "Check style"
769750e409Sopenharmony_ci  task :check do
779750e409Sopenharmony_ci    report "\nVERIFYING RUBY STYLE"
789750e409Sopenharmony_ci    report execute("rubocop ../auto ../examples ../extras --config .rubocop.yml", true)
799750e409Sopenharmony_ci    report "Styling Ruby:PASS"
809750e409Sopenharmony_ci  end
819750e409Sopenharmony_ci
829750e409Sopenharmony_ci  namespace :check do
839750e409Sopenharmony_ci    Dir['../**/*.rb'].each do |f|
849750e409Sopenharmony_ci      filename = File.basename(f, '.rb')
859750e409Sopenharmony_ci      desc "Check Style of #{filename}"
869750e409Sopenharmony_ci      task filename.to_sym => ['style:clean'] do
879750e409Sopenharmony_ci        report execute("rubocop #{f} --color --config .rubocop.yml", true)
889750e409Sopenharmony_ci        report "Style Checked for #{f}"
899750e409Sopenharmony_ci      end
909750e409Sopenharmony_ci    end
919750e409Sopenharmony_ci  end
929750e409Sopenharmony_ci
939750e409Sopenharmony_ci  desc "Fix Style of all C Code"
949750e409Sopenharmony_ci  task :c do
959750e409Sopenharmony_ci    run_astyle("../src/*.* ../extras/fixture/src/*.*")
969750e409Sopenharmony_ci  end
979750e409Sopenharmony_ci
989750e409Sopenharmony_ci  namespace :c do
999750e409Sopenharmony_ci    Dir['../{src,extras/**}/*.{c,h}'].each do |f|
1009750e409Sopenharmony_ci      filename = File.basename(f)[0..-3]
1019750e409Sopenharmony_ci      desc "Check Style of #{filename}"
1029750e409Sopenharmony_ci      task filename.to_sym do
1039750e409Sopenharmony_ci        run_astyle f
1049750e409Sopenharmony_ci      end
1059750e409Sopenharmony_ci    end
1069750e409Sopenharmony_ci  end
1079750e409Sopenharmony_ci
1089750e409Sopenharmony_ci  desc "Attempt to Autocorrect style"
1099750e409Sopenharmony_ci  task :auto  => ['style:clean'] do
1109750e409Sopenharmony_ci    execute("rubocop ../auto ../examples ../extras --auto-correct --config .rubocop.yml")
1119750e409Sopenharmony_ci    report "Autocorrected What We Could."
1129750e409Sopenharmony_ci  end
1139750e409Sopenharmony_ci
1149750e409Sopenharmony_ci  desc "Update style todo list"
1159750e409Sopenharmony_ci  task :todo  => ['style:clean'] do
1169750e409Sopenharmony_ci    execute("rubocop ../auto ../examples ../extras --auto-gen-config --config .rubocop.yml")
1179750e409Sopenharmony_ci    report "Updated Style TODO List."
1189750e409Sopenharmony_ci  end
1199750e409Sopenharmony_ci
1209750e409Sopenharmony_ci  task :clean do
1219750e409Sopenharmony_ci    File.delete(".rubocop_todo.yml") if File.exists?(".rubocop_todo.yml")
1229750e409Sopenharmony_ci  end
1239750e409Sopenharmony_ciend
1249750e409Sopenharmony_ci
1259750e409Sopenharmony_citask :style => ['style:check']
126