diff --git a/.gitignore b/.gitignore index f3f1ec1..5f54680 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ rdoc/ Gemfile.lock spec/dummy/tmp spec/dummy/log +gemfiles diff --git a/Appraisals b/Appraisals new file mode 100644 index 0000000..cfd86ba --- /dev/null +++ b/Appraisals @@ -0,0 +1,7 @@ +appraise "prawn0.12.0" do + gem "prawn", '0.12.0' +end + +appraise "prawn0.6.3" do + gem "prawn", '0.6.3' +end diff --git a/Gemfile b/Gemfile index 2940ed5..069c016 100644 --- a/Gemfile +++ b/Gemfile @@ -6,3 +6,4 @@ gemspec gem "spork", ">= 0.9.0" gem "rspec-rails" gem "mocha" +gem "appraisal" diff --git a/README.rdoc b/README.rdoc index fb38c6d..6f973ee 100644 --- a/README.rdoc +++ b/README.rdoc @@ -78,6 +78,20 @@ Sometimes you need to be able to render a PDF from anywhere (Background process While layouts and partials aren't yet supported, helper methods can be called from within the PDF views. To help keep PDF's DRY, I would recommend creating a PdfHelper class for complex functionality. Don't forget to add this helper to your emailer if you generate PDF's as attachments. +== Testing + +prawnto uses appraisal to run tests for different versions of prawn. In order to +run the specs you first need to install the dependencies for each appraisal: + + rake appraisal:install + +Then you can run the tests for a specifc version of prawn (only 0.12.0 and +0.6.3, but you can add your own version) or all versions: + + rake appraisal:prawn0.12.0 spec + rake appraisal:prawn0.6.3 spec + rake appraisal spec # all versions + = Contributing & Reporting Issues Obviously, all code contributions are greatly appreciated. We also need help with testing and the wiki. diff --git a/Rakefile b/Rakefile index fa9ceca..0bea826 100644 --- a/Rakefile +++ b/Rakefile @@ -1,10 +1,12 @@ +require 'rubygems' +require 'bundler/setup' + require 'rake' require 'rake/testtask' require 'rdoc/task' require 'rubygems/package_task' -desc 'Default: run unit tests.' -task :default => :test +require 'appraisal' desc 'Generate documentation for the prawnto plugin.' RDoc::Task.new do |rdoc| @@ -15,9 +17,11 @@ RDoc::Task.new do |rdoc| rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb") end -desc 'Test the prawnto gem' -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.pattern = 'test/*_test.rb' - # t.verbose = true +require 'rspec/core/rake_task' + +desc 'Default: run specs.' +task :default => :spec + +desc "Run specs" +RSpec::Core::RakeTask.new do |t| end diff --git a/prawnto.gemspec b/prawnto.gemspec index e701e94..c1312b4 100644 --- a/prawnto.gemspec +++ b/prawnto.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = ">= 1.3.6" s.platform = Gem::Platform::RUBY s.add_dependency('rails', '>= 3.1') - s.add_dependency('prawn', '>= 0.12.0') + s.add_dependency('prawn', '>= 0.6.0') s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") diff --git a/spec/assets/default_render.pdf b/spec/assets/default_render-0.12.0.pdf similarity index 100% rename from spec/assets/default_render.pdf rename to spec/assets/default_render-0.12.0.pdf diff --git a/spec/assets/default_render-0.6.3.pdf b/spec/assets/default_render-0.6.3.pdf new file mode 100644 index 0000000..9dee929 Binary files /dev/null and b/spec/assets/default_render-0.6.3.pdf differ diff --git a/spec/assets/dsl_render.pdf b/spec/assets/dsl_render-0.12.0.pdf similarity index 100% rename from spec/assets/dsl_render.pdf rename to spec/assets/dsl_render-0.12.0.pdf diff --git a/spec/assets/dsl_render-0.6.3.pdf b/spec/assets/dsl_render-0.6.3.pdf new file mode 100644 index 0000000..cd6478e Binary files /dev/null and b/spec/assets/dsl_render-0.6.3.pdf differ diff --git a/spec/assets/yield_block_in_helper_test.pdf b/spec/assets/yield_block_in_helper_test-0.12.0.pdf similarity index 100% rename from spec/assets/yield_block_in_helper_test.pdf rename to spec/assets/yield_block_in_helper_test-0.12.0.pdf diff --git a/spec/assets/yield_block_in_helper_test-0.6.3.pdf b/spec/assets/yield_block_in_helper_test-0.6.3.pdf new file mode 100644 index 0000000..7181de7 Binary files /dev/null and b/spec/assets/yield_block_in_helper_test-0.6.3.pdf differ diff --git a/spec/integrations/super_model_spec.rb b/spec/integrations/super_model_spec.rb index e6aa925..21bbb31 100644 --- a/spec/integrations/super_model_spec.rb +++ b/spec/integrations/super_model_spec.rb @@ -8,7 +8,7 @@ end it do - asset_binary = File.open(TEST_ASSETS + "/default_render.pdf").read.bytes.to_a + asset_binary = File.open(asset_path('default_render')).read.bytes.to_a @model.to_pdf.bytes.to_a.should == asset_binary end end diff --git a/spec/integrations/test_controller_spec.rb b/spec/integrations/test_controller_spec.rb index cca6fde..1d82b80 100644 --- a/spec/integrations/test_controller_spec.rb +++ b/spec/integrations/test_controller_spec.rb @@ -7,7 +7,7 @@ get "/default_render.pdf" response.should be_success - asset_binary = File.open(TEST_ASSETS + "/default_render.pdf").read.bytes.to_a + asset_binary = File.open(asset_path("default_render")).read.bytes.to_a body_binary = response.body.bytes.to_a body_binary.should == asset_binary end @@ -19,7 +19,7 @@ it "should render items in a block passed to a helper" do get "/yield_block_in_helper_test.pdf" - asset_binary = File.open(TEST_ASSETS + "/yield_block_in_helper_test.pdf").read.bytes.to_a + asset_binary = File.open(asset_path("yield_block_in_helper_test")).read.bytes.to_a body_binary = response.body.bytes.to_a body_binary.should == asset_binary end @@ -31,10 +31,10 @@ get "/dsl_render.pdf" response.should be_success - asset_binary = File.open(TEST_ASSETS + "/dsl_render.pdf").read.bytes.to_a + asset_binary = File.open(asset_path("dsl_render")).read.bytes.to_a body_binary = response.body.bytes.to_a body_binary.should == asset_binary end end -end \ No newline at end of file +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d3c3f10..e09e9cd 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -27,3 +27,11 @@ # This code will be run each time you run your specs. end + +# Helper to provide asset path given the "base name" of the file. +# For example, if +file+ is "default_render", asset_path returns +# "/path/to/prawnto/spec/assets/default_render-#{prawn version}.pdf" +def asset_path(file) + prawn_version = Gem.loaded_specs["prawn"].version.to_s.inspect + TEST_ASSETS + "/#{file}-#{prawn_version.gsub('"','')}.pdf" +end