# desc “Explaining what the task does” # task :jpmobile do # # Task goes here # end
begin
require 'rspec/core/rake_task' namespace :spec do desc 'run unit testing (core test)' RSpec::Core::RakeTask.new(:unit) do |t| t.pattern = 'spec/unit /*_spec.rb' end desc 'run rack testing' RSpec::Core::RakeTask.new(:rack) do |t| t.pattern = 'spec/rack/ *_spec.rb' end end
rescue LoadError
warn "RSpec is not installed. Some tasks were skipped. please install rspec"
end
namespace :test do
desc "Generate rails app and run jpmobile tests in the app" task :rails, [:skip] do |t, args| rails_root = "test/rails/rails_root" relative_root = "../../../" puts "Running tests in Rails" skip = args.skip == "true" unless skip # generate rails app FileUtils.rm_rf("Gemfile.lock") FileUtils.rm_rf(rails_root) FileUtils.mkdir_p(rails_root) `rails new #{rails_root} --skip-bundle` end # setup jpmobile plugin_path = File.join(rails_root, 'vendor', 'jpmobile') FileUtils.mkdir_p(plugin_path) FileList["*"].exclude("test").exclude("spec").exclude('vendor').each do |file| FileUtils.cp_r(file, plugin_path) end # setup jpmobile-ipaddresses begin plugin_path = File.join(rails_root, 'vendor', 'jpmobile-ipaddresses') FileUtils.mkdir_p(plugin_path) FileList["vendor/jpmobile-ipaddresses/*"].exclude("test").each do |file| FileUtils.cp_r(file, plugin_path) end rescue LoadError puts "IP Address test requires jpmobile-ipaddresses module" end # setup jpmobile-terminfo begin plugin_path = File.join(rails_root, 'vendor', 'jpmobile-terminfo') FileUtils.mkdir_p(plugin_path) FileList["vendor/jpmobile-terminfo/*"].exclude("test").each do |file| FileUtils.cp_r(file, plugin_path) end rescue LoadError puts "Terminal display information test requires jpmobile-terminfo module" end # setup tests FileList["test/rails/overrides/*"].each do |file| FileUtils.cp_r(file, rails_root) end unless skip # for cookie_only option config_path = File.join(rails_root, 'config', 'initializers', 'session_store.rb') File.open(config_path, 'w') do |file| file.write <<-END
Rails.application.config.session_store :active_record_store, :key => '_session_id' Rails.application.config.session_options = {:cookie_only => false} END
end end unless skip # add gems for jpmobile spec config_path = File.join(rails_root, 'Gemfile') File.open(config_path, 'a+') do |file| file.write <<-END
instance_eval File.read(File.expand_path(__FILE__) + '.jpmobile') END
end end # run tests in rails cd rails_root ruby "-S bundle install" ruby "-S rake db:migrate RAILS_ENV=test" unless skip ruby "-S rake spec" # ruby "-S rspec -b --color spec/requests/filter_spec.rb -e 'jpmobile integration spec HankakuInputFilterController SoftBank 910T からのアクセス it should behave like hankaku_filter :input => true のとき はtextareaの中では半角に変換されないこと'" end desc "Run sinatra on jpmobile tests" Rake::TestTask.new(:sinatra) do |t| t.libs << 'lib' t.libs << 'test/sinatra' t.pattern = 'test/sinatra/test/*_test.rb' t.verbose = true end
end