From fd88c572339f90fb759a2c4ea3260dbcc3cbc515 Mon Sep 17 00:00:00 2001 From: guilherme silveira Date: Thu, 10 Jun 2010 20:56:30 -0300 Subject: [PATCH] wait only as much as you need --- Rakefile | 47 +++++++++++++++++-- .../rest_from_scratch/part_3/Rakefile | 1 + 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/Rakefile b/Rakefile index 51ce9c07..57117520 100644 --- a/Rakefile +++ b/Rakefile @@ -33,6 +33,13 @@ spec = Gem::Specification.new do |s| s.homepage = HOMEPAGE end +# optionally loads a task if the required gems exist +def optionally + begin + yield + rescue LoadError; end +end + def execute_process(name) sh "ruby ./spec/units/client/#{name}.rb &" sleep 15 @@ -50,6 +57,25 @@ def start_server_and_invoke_test(task_name) sh "kill -9 #{pid}" end +def kill_server + c = `(ps -ef | grep 'script/server')`.split(/\n/) + c.each do |line| + pid = line.split[1] + system "kill -9 #{pid}" + end +end + +def wait_server + 15.times do + begin + Net::HTTP.get(URI.parse('http://localhost:3000/')) + return + rescue + sleep 1 + end + end +end + desc 'Start server' task :server do process 'fake_server' @@ -120,6 +146,19 @@ namespace :test do start_server_and_invoke_test('test:rcov:rcov') end end + + desc "runs all example tests" + task :examples do + kill_server + enter_dir = "cd full-examples/rest_from_scratch/part_3" + system "#{enter_dir} && RAILS_ENV=test rake db:reset db:seed" + system "#{enter_dir} && RAILS_ENV=test script/server &" + wait_server + system "sleep 5 && curl http://localhost:3000/items" + system "#{enter_dir} && rake spec" + kill_server + end + end Rake::GemPackageTask.new(spec) do |pkg| @@ -128,16 +167,14 @@ end Rake::RDocTask.new("rdoc") do |rdoc| rdoc.options << '--line-numbers' << '--inline-source' -# rdoc.rdoc_files.include('lib/**/**/*.rb') end -begin +optionally do require 'yard' YARD::Rake::YardocTask.new do |t| - t.files = ['lib/restfulie/**/*.rb', 'README.textile'] # optional - # t.options = ['--any', '--extra', '--opts'] # optional + t.files = ['lib/restfulie/**/*.rb', 'README.textile'] end -rescue LoadError; end +end desc "Install the gem locally" task :install => [:package] do diff --git a/full-examples/rest_from_scratch/part_3/Rakefile b/full-examples/rest_from_scratch/part_3/Rakefile index 3bb0e859..41b6ca99 100644 --- a/full-examples/rest_from_scratch/part_3/Rakefile +++ b/full-examples/rest_from_scratch/part_3/Rakefile @@ -8,3 +8,4 @@ require 'rake/testtask' require 'rake/rdoctask' require 'tasks/rails' +