appraisal 0.3.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +2 -2
 - data/README.md +9 -0
 - data/Rakefile +6 -1
 - data/features/appraisals.feature +22 -19
 - data/features/gemspec.feature +62 -62
 - data/features/step_definitions/dependency_steps.rb +27 -0
 - data/features/support/env.rb +7 -0
 - data/lib/appraisal/gemfile.rb +13 -7
 - metadata +26 -28
 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                appraisal (0. 
     | 
| 
      
 4 
     | 
    
         
            +
                appraisal (0.4.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  bundler
         
     | 
| 
       6 
6 
     | 
    
         
             
                  rake
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
         @@ -31,7 +31,7 @@ GEM 
     | 
|
| 
       31 
31 
     | 
    
         
             
                  json (>= 1.4.6)
         
     | 
| 
       32 
32 
     | 
    
         
             
                json (1.5.3)
         
     | 
| 
       33 
33 
     | 
    
         
             
                rack (1.3.2)
         
     | 
| 
       34 
     | 
    
         
            -
                rake (0.9.2)
         
     | 
| 
      
 34 
     | 
    
         
            +
                rake (0.9.2.2)
         
     | 
| 
       35 
35 
     | 
    
         
             
                rdiscount (1.6.8)
         
     | 
| 
       36 
36 
     | 
    
         
             
                rspec (2.6.0)
         
     | 
| 
       37 
37 
     | 
    
         
             
                  rspec-core (~> 2.6.0)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -85,6 +85,15 @@ control to ensure that the same versions are always used. When running rake 
     | 
|
| 
       85 
85 
     | 
    
         
             
            tasks for an appraisal, the rake task is run with the appropriate Gemfile for
         
     | 
| 
       86 
86 
     | 
    
         
             
            that appraisal, ensuring the correct dependencies are used.
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
            Version Control
         
     | 
| 
      
 89 
     | 
    
         
            +
            --------------
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            When using Appraisal, we recommend that you check your Gemfile.lock into
         
     | 
| 
      
 92 
     | 
    
         
            +
            version control, as well as the gemfiles directory generated by Appraisal. This
         
     | 
| 
      
 93 
     | 
    
         
            +
            will ensure that your tests are always green when you check out a fresh copy.
         
     | 
| 
      
 94 
     | 
    
         
            +
            It also allows you to create reproducible regression tests for version-specific
         
     | 
| 
      
 95 
     | 
    
         
            +
            bugs.
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
       88 
97 
     | 
    
         
             
            Credits
         
     | 
| 
       89 
98 
     | 
    
         
             
            -------
         
     | 
| 
       90 
99 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'bundler/setup'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'rake/gempackagetask'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require 'cucumber/rake/task'
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            eval("$specification = #{IO.read('appraisal.gemspec')}")
         
     | 
| 
         @@ -9,11 +10,15 @@ Rake::GemPackageTask.new($specification) do |package| 
     | 
|
| 
       9 
10 
     | 
    
         
             
              package.need_tar = true
         
     | 
| 
       10 
11 
     | 
    
         
             
            end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
            RSpec::Core::RakeTask.new do |t|
         
     | 
| 
      
 14 
     | 
    
         
            +
              t.pattern = 'spec/**/*_spec.rb'
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       12 
17 
     | 
    
         
             
            Cucumber::Rake::Task.new(:cucumber) do |t|
         
     | 
| 
       13 
18 
     | 
    
         
             
              t.fork = true
         
     | 
| 
       14 
19 
     | 
    
         
             
              t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'progress')]
         
     | 
| 
       15 
20 
     | 
    
         
             
            end
         
     | 
| 
       16 
21 
     | 
    
         | 
| 
       17 
22 
     | 
    
         
             
            desc "Default: run the cucumber scenarios"
         
     | 
| 
       18 
     | 
    
         
            -
            task :default => :cucumber
         
     | 
| 
      
 23 
     | 
    
         
            +
            task :default => [:spec, :cucumber]
         
     | 
| 
       19 
24 
     | 
    
         | 
    
        data/features/appraisals.feature
    CHANGED
    
    | 
         @@ -1,23 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @disable-bundler
         
     | 
| 
       1 
2 
     | 
    
         
             
            Feature: run a rake task through several appraisals
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
              Background:
         
     | 
| 
       4 
5 
     | 
    
         
             
                Given a directory named "projecto"
         
     | 
| 
      
 6 
     | 
    
         
            +
                And the following installed dummy gems:
         
     | 
| 
      
 7 
     | 
    
         
            +
                  | name       | version |
         
     | 
| 
      
 8 
     | 
    
         
            +
                  | dummy_girl | 1.3.0   |
         
     | 
| 
      
 9 
     | 
    
         
            +
                  | dummy_girl | 1.3.2   |
         
     | 
| 
      
 10 
     | 
    
         
            +
                  | dummy_rake | 0.8.7   |
         
     | 
| 
      
 11 
     | 
    
         
            +
                  | dummy_rake | 0.9.0   |
         
     | 
| 
      
 12 
     | 
    
         
            +
                  | dummy_sass | 3.1.0   |
         
     | 
| 
       5 
13 
     | 
    
         
             
                When I cd to "projecto"
         
     | 
| 
       6 
14 
     | 
    
         
             
                And I write to "Gemfile" with:
         
     | 
| 
       7 
15 
     | 
    
         
             
                """
         
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
       9 
     | 
    
         
            -
                gem " 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
      
 16 
     | 
    
         
            +
                gem "dummy_rake", "0.8.7"
         
     | 
| 
      
 17 
     | 
    
         
            +
                gem "dummy_girl"
         
     | 
| 
      
 18 
     | 
    
         
            +
                group :assets do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  gem 'dummy_sass', "  ~> 3.1.0"
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
       11 
21 
     | 
    
         
             
                """
         
     | 
| 
       12 
22 
     | 
    
         
             
                When I add "appraisal" from this project as a dependency
         
     | 
| 
       13 
23 
     | 
    
         
             
                And I write to "Appraisals" with:
         
     | 
| 
       14 
24 
     | 
    
         
             
                """
         
     | 
| 
       15 
25 
     | 
    
         
             
                appraise "1.3.2" do
         
     | 
| 
       16 
     | 
    
         
            -
                  gem " 
     | 
| 
      
 26 
     | 
    
         
            +
                  gem "dummy_girl", "1.3.2"
         
     | 
| 
       17 
27 
     | 
    
         
             
                end
         
     | 
| 
       18 
28 
     | 
    
         
             
                appraise "1.3.0" do
         
     | 
| 
       19 
     | 
    
         
            -
                  gem " 
     | 
| 
       20 
     | 
    
         
            -
                  gem " 
     | 
| 
      
 29 
     | 
    
         
            +
                  gem "dummy_girl", "1.3.0"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  gem "dummy_rake", "0.9.0"
         
     | 
| 
       21 
31 
     | 
    
         
             
                end
         
     | 
| 
       22 
32 
     | 
    
         
             
                """
         
     | 
| 
       23 
33 
     | 
    
         
             
                When I write to "Rakefile" with:
         
     | 
| 
         @@ -26,59 +36,52 @@ Feature: run a rake task through several appraisals 
     | 
|
| 
       26 
36 
     | 
    
         
             
                require 'bundler/setup'
         
     | 
| 
       27 
37 
     | 
    
         
             
                require 'appraisal'
         
     | 
| 
       28 
38 
     | 
    
         
             
                task :version do
         
     | 
| 
       29 
     | 
    
         
            -
                  require ' 
     | 
| 
       30 
     | 
    
         
            -
                  puts "Loaded #{ 
     | 
| 
      
 39 
     | 
    
         
            +
                  require 'dummy_girl'
         
     | 
| 
      
 40 
     | 
    
         
            +
                  puts "Loaded #{$dummy_girl_version}"
         
     | 
| 
       31 
41 
     | 
    
         
             
                end
         
     | 
| 
       32 
42 
     | 
    
         
             
                task :fail do
         
     | 
| 
       33 
     | 
    
         
            -
                  require ' 
     | 
| 
       34 
     | 
    
         
            -
                  puts "Fail #{ 
     | 
| 
      
 43 
     | 
    
         
            +
                  require 'dummy_girl'
         
     | 
| 
      
 44 
     | 
    
         
            +
                  puts "Fail #{$dummy_girl_version}"
         
     | 
| 
       35 
45 
     | 
    
         
             
                  raise
         
     | 
| 
       36 
46 
     | 
    
         
             
                end
         
     | 
| 
       37 
47 
     | 
    
         
             
                task :default => :version
         
     | 
| 
       38 
48 
     | 
    
         
             
                """
         
     | 
| 
       39 
     | 
    
         
            -
                When I successfully run `bundle  
     | 
| 
      
 49 
     | 
    
         
            +
                When I successfully run `bundle install --local`
         
     | 
| 
      
 50 
     | 
    
         
            +
                And I successfully run `bundle exec rake appraisal:install --trace`
         
     | 
| 
       40 
51 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       42 
52 
     | 
    
         
             
              Scenario: run a specific task with one appraisal
         
     | 
| 
       43 
53 
     | 
    
         
             
                When I successfully run `bundle exec rake appraisal:1.3.0 version --trace`
         
     | 
| 
       44 
54 
     | 
    
         
             
                Then the output should contain "Loaded 1.3.0"
         
     | 
| 
       45 
55 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       47 
56 
     | 
    
         
             
              Scenario: run a specific task with all appraisals
         
     | 
| 
       48 
57 
     | 
    
         
             
                When I successfully run `bundle exec rake appraisal version --trace`
         
     | 
| 
       49 
58 
     | 
    
         
             
                Then the output should contain "Loaded 1.3.0"
         
     | 
| 
       50 
59 
     | 
    
         
             
                And the output should contain "Loaded 1.3.2"
         
     | 
| 
       51 
60 
     | 
    
         
             
                And the output should not contain "Invoke version"
         
     | 
| 
       52 
61 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       54 
62 
     | 
    
         
             
              Scenario: run the default task with one appraisal
         
     | 
| 
       55 
63 
     | 
    
         
             
                When I successfully run `bundle exec rake appraisal:1.3.0 --trace`
         
     | 
| 
       56 
64 
     | 
    
         
             
                Then the output should contain "Loaded 1.3.0"
         
     | 
| 
       57 
65 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       59 
66 
     | 
    
         
             
              Scenario: run the default task with all appraisals
         
     | 
| 
       60 
67 
     | 
    
         
             
                When I successfully run `bundle exec rake appraisal --trace`
         
     | 
| 
       61 
68 
     | 
    
         
             
                Then the output should contain "Loaded 1.3.0"
         
     | 
| 
       62 
69 
     | 
    
         
             
                And the output should contain "Loaded 1.3.2"
         
     | 
| 
       63 
70 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       65 
71 
     | 
    
         
             
              Scenario: run a failing task with one appraisal
         
     | 
| 
       66 
72 
     | 
    
         
             
                When I run `bundle exec rake appraisal:1.3.0 fail --trace`
         
     | 
| 
       67 
73 
     | 
    
         
             
                Then the output should contain "Fail 1.3.0"
         
     | 
| 
       68 
74 
     | 
    
         
             
                And the exit status should be 1
         
     | 
| 
       69 
75 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       71 
76 
     | 
    
         
             
              Scenario: run a failing task with all appraisals
         
     | 
| 
       72 
77 
     | 
    
         
             
                When I run `bundle exec rake appraisal fail --trace`
         
     | 
| 
       73 
78 
     | 
    
         
             
                Then the output should contain "Fail 1.3.2"
         
     | 
| 
       74 
79 
     | 
    
         
             
                But the output should not contain "Fail 1.3.0"
         
     | 
| 
       75 
80 
     | 
    
         
             
                And the exit status should be 1
         
     | 
| 
       76 
81 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
              @disable-bundler
         
     | 
| 
       78 
82 
     | 
    
         
             
              Scenario: run a cleanup task
         
     | 
| 
       79 
83 
     | 
    
         
             
                When I run `bundle exec rake appraisal:cleanup --trace`
         
     | 
| 
       80 
84 
     | 
    
         
             
                Then a file named "gemfiles/1.3.0.gemfile" should not exist
         
     | 
| 
       81 
85 
     | 
    
         
             
                And a file named "gemfiles/1.3.0.gemfile.lock" should not exist
         
     | 
| 
       82 
86 
     | 
    
         
             
                And a file named "gemfiles/1.3.2.gemfile" should not exist
         
     | 
| 
       83 
87 
     | 
    
         
             
                And a file named "gemfiles/1.3.2.gemfile.lock" should not exist
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
    
        data/features/gemspec.feature
    CHANGED
    
    | 
         @@ -1,70 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @disable-bundler
         
     | 
| 
       1 
2 
     | 
    
         
             
            Feature: appraisals using an existing gemspec
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            Background:
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
              Background:
         
     | 
| 
      
 5 
     | 
    
         
            +
                Given a directory named "gemspecced"
         
     | 
| 
      
 6 
     | 
    
         
            +
                And the following installed dummy gems:
         
     | 
| 
      
 7 
     | 
    
         
            +
                  | name       | version |
         
     | 
| 
      
 8 
     | 
    
         
            +
                  | dummy_girl | 1.3.0   |
         
     | 
| 
      
 9 
     | 
    
         
            +
                  | dummy_girl | 1.3.2   |
         
     | 
| 
      
 10 
     | 
    
         
            +
                When I cd to "gemspecced"
         
     | 
| 
      
 11 
     | 
    
         
            +
                And I write to "gemspecced.gemspec" with:
         
     | 
| 
      
 12 
     | 
    
         
            +
                """
         
     | 
| 
      
 13 
     | 
    
         
            +
                Gem::Specification.new do |s|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    s.name        = %q{gemspecced}
         
     | 
| 
      
 15 
     | 
    
         
            +
                    s.version     = '0.1'
         
     | 
| 
      
 16 
     | 
    
         
            +
                    s.summary     = %q{featureful!}
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  s.summary     = %q{featureful!}
         
     | 
| 
      
 18 
     | 
    
         
            +
                    s.add_development_dependency('dummy_girl', '1.3.2')
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                """
         
     | 
| 
      
 21 
     | 
    
         
            +
                And a directory named "specdir"
         
     | 
| 
      
 22 
     | 
    
         
            +
                And I write to "specdir/gemspecced.gemspec" with:
         
     | 
| 
      
 23 
     | 
    
         
            +
                """
         
     | 
| 
      
 24 
     | 
    
         
            +
                Gem::Specification.new do |s|
         
     | 
| 
      
 25 
     | 
    
         
            +
                    s.name        = %q{gemspecced}
         
     | 
| 
      
 26 
     | 
    
         
            +
                    s.version     = '0.1'
         
     | 
| 
      
 27 
     | 
    
         
            +
                    s.summary     = %q{featureful!}
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                 
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
              """
         
     | 
| 
      
 29 
     | 
    
         
            +
                    s.add_development_dependency('dummy_girl', '1.3.0')
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                """
         
     | 
| 
      
 32 
     | 
    
         
            +
                And I write to "Appraisals" with:
         
     | 
| 
      
 33 
     | 
    
         
            +
                """
         
     | 
| 
      
 34 
     | 
    
         
            +
                appraise "stock" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  gem "shoulda", "2.11.3"
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
                """
         
     | 
| 
      
 38 
     | 
    
         
            +
                When I write to "Rakefile" with:
         
     | 
| 
      
 39 
     | 
    
         
            +
                """
         
     | 
| 
      
 40 
     | 
    
         
            +
                require 'rubygems'
         
     | 
| 
      
 41 
     | 
    
         
            +
                require 'bundler/setup'
         
     | 
| 
      
 42 
     | 
    
         
            +
                require 'appraisal'
         
     | 
| 
      
 43 
     | 
    
         
            +
                task :version do
         
     | 
| 
      
 44 
     | 
    
         
            +
                  require 'dummy_girl'
         
     | 
| 
      
 45 
     | 
    
         
            +
                  puts "Loaded #{$dummy_girl_version}"
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
                """
         
     | 
| 
       45 
48 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
              Then the output should contain "Loaded 1.3.2"
         
     | 
| 
      
 49 
     | 
    
         
            +
              Scenario: run a gem in the gemspec
         
     | 
| 
      
 50 
     | 
    
         
            +
                And I write to "Gemfile" with:
         
     | 
| 
      
 51 
     | 
    
         
            +
                """
         
     | 
| 
      
 52 
     | 
    
         
            +
                gemspec
         
     | 
| 
      
 53 
     | 
    
         
            +
                """
         
     | 
| 
      
 54 
     | 
    
         
            +
                When I add "appraisal" from this project as a dependency
         
     | 
| 
      
 55 
     | 
    
         
            +
                And I successfully run `bundle install --local`
         
     | 
| 
      
 56 
     | 
    
         
            +
                And I successfully run `bundle exec rake appraisal:install --trace`
         
     | 
| 
      
 57 
     | 
    
         
            +
                And I run `bundle exec rake appraisal version --trace`
         
     | 
| 
      
 58 
     | 
    
         
            +
                Then the output should contain "Loaded 1.3.2"
         
     | 
| 
       57 
59 
     | 
    
         | 
| 
       58 
60 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
              When I run `bundle exec rake appraisal version --trace`
         
     | 
| 
       69 
     | 
    
         
            -
              Then the output should contain "Loaded 1.3.0"
         
     | 
| 
      
 61 
     | 
    
         
            +
              Scenario: run a gem in the gemspec via path
         
     | 
| 
      
 62 
     | 
    
         
            +
                And I write to "Gemfile" with:
         
     | 
| 
      
 63 
     | 
    
         
            +
                """
         
     | 
| 
      
 64 
     | 
    
         
            +
                gemspec :path => './specdir'
         
     | 
| 
      
 65 
     | 
    
         
            +
                """
         
     | 
| 
      
 66 
     | 
    
         
            +
                When I add "appraisal" from this project as a dependency
         
     | 
| 
      
 67 
     | 
    
         
            +
                When I successfully run `bundle exec rake appraisal:install --trace`
         
     | 
| 
      
 68 
     | 
    
         
            +
                When I run `bundle exec rake appraisal version --trace`
         
     | 
| 
      
 69 
     | 
    
         
            +
                Then the output should contain "Loaded 1.3.0"
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
         @@ -2,3 +2,30 @@ When /^I add "([^"]*)" from this project as a dependency$/ do |gem_name| 
     | 
|
| 
       2 
2 
     | 
    
         
             
              append_to_file('Gemfile', %{\ngem "#{gem_name}", :path => "#{PROJECT_ROOT}"})
         
     | 
| 
       3 
3 
     | 
    
         
             
            end
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            Given /^the following installed dummy gems:$/ do |table|
         
     | 
| 
      
 6 
     | 
    
         
            +
              table.hashes.each do |hash|
         
     | 
| 
      
 7 
     | 
    
         
            +
                name = hash["name"]
         
     | 
| 
      
 8 
     | 
    
         
            +
                version = hash["version"]
         
     | 
| 
      
 9 
     | 
    
         
            +
                create_dir(name)
         
     | 
| 
      
 10 
     | 
    
         
            +
                cd(name)
         
     | 
| 
      
 11 
     | 
    
         
            +
                create_dir("lib")
         
     | 
| 
      
 12 
     | 
    
         
            +
                gem_path = "#{name}.gemspec"
         
     | 
| 
      
 13 
     | 
    
         
            +
                version_path = "lib/#{name}.rb"
         
     | 
| 
      
 14 
     | 
    
         
            +
                spec = <<-SPEC
         
     | 
| 
      
 15 
     | 
    
         
            +
                  Gem::Specification.new do |s|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    s.name    = '#{name}'
         
     | 
| 
      
 17 
     | 
    
         
            +
                    s.version = '#{version}'
         
     | 
| 
      
 18 
     | 
    
         
            +
                    s.authors = 'Mr. Smith'
         
     | 
| 
      
 19 
     | 
    
         
            +
                    s.summary = 'summary'
         
     | 
| 
      
 20 
     | 
    
         
            +
                    s.files   = '#{version_path}'
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                SPEC
         
     | 
| 
      
 23 
     | 
    
         
            +
                write_file(gem_path, spec)
         
     | 
| 
      
 24 
     | 
    
         
            +
                write_file(version_path, "$#{name}_version = '#{version}'")
         
     | 
| 
      
 25 
     | 
    
         
            +
                in_current_dir { `gem build #{gem_path} 2>&1` }
         
     | 
| 
      
 26 
     | 
    
         
            +
                set_env("GEM_HOME", TMP_GEM_ROOT)
         
     | 
| 
      
 27 
     | 
    
         
            +
                in_current_dir { `gem install #{name}-#{version}.gem 2>&1` }
         
     | 
| 
      
 28 
     | 
    
         
            +
                FileUtils.rm_rf(File.join(current_dir, name))
         
     | 
| 
      
 29 
     | 
    
         
            +
                dirs.pop
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/features/support/env.rb
    CHANGED
    
    | 
         @@ -1,4 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'aruba/cucumber'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze
         
     | 
| 
      
 4 
     | 
    
         
            +
            TMP_GEM_ROOT = File.join(PROJECT_ROOT, "tmp", "gems")
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            Before do
         
     | 
| 
      
 7 
     | 
    
         
            +
              FileUtils.rm_rf(TMP_GEM_ROOT)
         
     | 
| 
      
 8 
     | 
    
         
            +
              FileUtils.mkdir_p(TMP_GEM_ROOT)
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ENV["GEM_PATH"] = [TMP_GEM_ROOT, ENV["GEM_PATH"]].join(":")
         
     | 
    
        data/lib/appraisal/gemfile.rb
    CHANGED
    
    | 
         @@ -7,7 +7,8 @@ module Appraisal 
     | 
|
| 
       7 
7 
     | 
    
         
             
                attr_reader :dependencies
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def initialize
         
     | 
| 
       10 
     | 
    
         
            -
                  @ 
     | 
| 
      
 10 
     | 
    
         
            +
                  @sources = []
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @dependencies = []
         
     | 
| 
       11 
12 
     | 
    
         
             
                end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
                def load(path)
         
     | 
| 
         @@ -19,11 +20,16 @@ module Appraisal 
     | 
|
| 
       19 
20 
     | 
    
         
             
                end
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                def gem(name, *requirements)
         
     | 
| 
       22 
     | 
    
         
            -
                  @dependencies 
     | 
| 
      
 23 
     | 
    
         
            +
                  @dependencies.reject! { |dependency| dependency.name == name }
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @dependencies << Dependency.new(name, requirements)
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def group(name)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  # ignore the group
         
     | 
| 
       23 
29 
     | 
    
         
             
                end
         
     | 
| 
       24 
30 
     | 
    
         | 
| 
       25 
31 
     | 
    
         
             
                def source(source)
         
     | 
| 
       26 
     | 
    
         
            -
                  @ 
     | 
| 
      
 32 
     | 
    
         
            +
                  @sources << source
         
     | 
| 
       27 
33 
     | 
    
         
             
                end
         
     | 
| 
       28 
34 
     | 
    
         | 
| 
       29 
35 
     | 
    
         
             
                def to_s
         
     | 
| 
         @@ -32,8 +38,8 @@ module Appraisal 
     | 
|
| 
       32 
38 
     | 
    
         | 
| 
       33 
39 
     | 
    
         
             
                def dup
         
     | 
| 
       34 
40 
     | 
    
         
             
                  gemfile = Gemfile.new
         
     | 
| 
       35 
     | 
    
         
            -
                  gemfile.source  
     | 
| 
       36 
     | 
    
         
            -
                  dependencies. 
     | 
| 
      
 41 
     | 
    
         
            +
                  @sources.each { |source| gemfile.source source }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  dependencies.each do |dependency|
         
     | 
| 
       37 
43 
     | 
    
         
             
                    gemfile.gem(dependency.name, *dependency.requirements)
         
     | 
| 
       38 
44 
     | 
    
         
             
                  end
         
     | 
| 
       39 
45 
     | 
    
         
             
                  gemfile.gemspec(@gemspec.options) if @gemspec
         
     | 
| 
         @@ -47,11 +53,11 @@ module Appraisal 
     | 
|
| 
       47 
53 
     | 
    
         
             
                protected
         
     | 
| 
       48 
54 
     | 
    
         | 
| 
       49 
55 
     | 
    
         
             
                def source_entry
         
     | 
| 
       50 
     | 
    
         
            -
                   
     | 
| 
      
 56 
     | 
    
         
            +
                  @sources.map { |source| "source #{source.inspect}" }.join("\n")
         
     | 
| 
       51 
57 
     | 
    
         
             
                end
         
     | 
| 
       52 
58 
     | 
    
         | 
| 
       53 
59 
     | 
    
         
             
                def dependencies_entry
         
     | 
| 
       54 
     | 
    
         
            -
                  dependencies. 
     | 
| 
      
 60 
     | 
    
         
            +
                  dependencies.map { |dependency| dependency.to_s }.join("\n")
         
     | 
| 
       55 
61 
     | 
    
         
             
                end
         
     | 
| 
       56 
62 
     | 
    
         | 
| 
       57 
63 
     | 
    
         
             
                def gemspec_entry
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: appraisal
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 15
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 4
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.4.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Joe Ferris
         
     | 
| 
         @@ -15,12 +15,10 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011- 
     | 
| 
       19 
     | 
    
         
            -
            default_executable: 
         
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-11-11 00:00:00 Z
         
     | 
| 
       20 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 21 
     | 
    
         
            +
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
       24 
22 
     | 
    
         
             
                none: false
         
     | 
| 
       25 
23 
     | 
    
         
             
                requirements: 
         
     | 
| 
       26 
24 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -30,12 +28,12 @@ dependencies: 
     | 
|
| 
       30 
28 
     | 
    
         
             
                    - 1
         
     | 
| 
       31 
29 
     | 
    
         
             
                    - 0
         
     | 
| 
       32 
30 
     | 
    
         
             
                    version: "1.0"
         
     | 
| 
       33 
     | 
    
         
            -
               
     | 
| 
       34 
     | 
    
         
            -
               
     | 
| 
      
 31 
     | 
    
         
            +
              requirement: *id001
         
     | 
| 
      
 32 
     | 
    
         
            +
              type: :development
         
     | 
| 
       35 
33 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 34 
     | 
    
         
            +
              name: cucumber
         
     | 
| 
       36 
35 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       37 
     | 
    
         
            -
               
     | 
| 
       38 
     | 
    
         
            -
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
       39 
37 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
38 
     | 
    
         
             
                requirements: 
         
     | 
| 
       41 
39 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -45,12 +43,12 @@ dependencies: 
     | 
|
| 
       45 
43 
     | 
    
         
             
                    - 2
         
     | 
| 
       46 
44 
     | 
    
         
             
                    - 6
         
     | 
| 
       47 
45 
     | 
    
         
             
                    version: "2.6"
         
     | 
| 
       48 
     | 
    
         
            -
               
     | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
      
 46 
     | 
    
         
            +
              requirement: *id002
         
     | 
| 
      
 47 
     | 
    
         
            +
              type: :development
         
     | 
| 
       50 
48 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 49 
     | 
    
         
            +
              name: rspec
         
     | 
| 
       51 
50 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       52 
     | 
    
         
            -
               
     | 
| 
       53 
     | 
    
         
            -
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 51 
     | 
    
         
            +
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
       54 
52 
     | 
    
         
             
                none: false
         
     | 
| 
       55 
53 
     | 
    
         
             
                requirements: 
         
     | 
| 
       56 
54 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -61,12 +59,12 @@ dependencies: 
     | 
|
| 
       61 
59 
     | 
    
         
             
                    - 4
         
     | 
| 
       62 
60 
     | 
    
         
             
                    - 2
         
     | 
| 
       63 
61 
     | 
    
         
             
                    version: 0.4.2
         
     | 
| 
       64 
     | 
    
         
            -
               
     | 
| 
       65 
     | 
    
         
            -
               
     | 
| 
      
 62 
     | 
    
         
            +
              requirement: *id003
         
     | 
| 
      
 63 
     | 
    
         
            +
              type: :development
         
     | 
| 
       66 
64 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 65 
     | 
    
         
            +
              name: aruba
         
     | 
| 
       67 
66 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       68 
     | 
    
         
            -
               
     | 
| 
       69 
     | 
    
         
            -
              requirement: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 67 
     | 
    
         
            +
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
       70 
68 
     | 
    
         
             
                none: false
         
     | 
| 
       71 
69 
     | 
    
         
             
                requirements: 
         
     | 
| 
       72 
70 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -75,12 +73,12 @@ dependencies: 
     | 
|
| 
       75 
73 
     | 
    
         
             
                    segments: 
         
     | 
| 
       76 
74 
     | 
    
         
             
                    - 0
         
     | 
| 
       77 
75 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       78 
     | 
    
         
            -
               
     | 
| 
       79 
     | 
    
         
            -
               
     | 
| 
      
 76 
     | 
    
         
            +
              requirement: *id004
         
     | 
| 
      
 77 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
       80 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 79 
     | 
    
         
            +
              name: rake
         
     | 
| 
       81 
80 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       82 
     | 
    
         
            -
               
     | 
| 
       83 
     | 
    
         
            -
              requirement: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 81 
     | 
    
         
            +
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
       84 
82 
     | 
    
         
             
                none: false
         
     | 
| 
       85 
83 
     | 
    
         
             
                requirements: 
         
     | 
| 
       86 
84 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -89,9 +87,10 @@ dependencies: 
     | 
|
| 
       89 
87 
     | 
    
         
             
                    segments: 
         
     | 
| 
       90 
88 
     | 
    
         
             
                    - 0
         
     | 
| 
       91 
89 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       92 
     | 
    
         
            -
               
     | 
| 
       93 
     | 
    
         
            -
               
     | 
| 
      
 90 
     | 
    
         
            +
              requirement: *id005
         
     | 
| 
      
 91 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
       94 
92 
     | 
    
         
             
              prerelease: false
         
     | 
| 
      
 93 
     | 
    
         
            +
              name: bundler
         
     | 
| 
       95 
94 
     | 
    
         
             
            description: Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals."
         
     | 
| 
       96 
95 
     | 
    
         
             
            email: jferris@thoughtbot.com
         
     | 
| 
       97 
96 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -119,7 +118,6 @@ files: 
     | 
|
| 
       119 
118 
     | 
    
         
             
            - features/step_definitions/dependency_steps.rb
         
     | 
| 
       120 
119 
     | 
    
         
             
            - features/support/aruba.rb
         
     | 
| 
       121 
120 
     | 
    
         
             
            - features/support/env.rb
         
     | 
| 
       122 
     | 
    
         
            -
            has_rdoc: true
         
     | 
| 
       123 
121 
     | 
    
         
             
            homepage: http://github.com/thoughtbot/appraisal
         
     | 
| 
       124 
122 
     | 
    
         
             
            licenses: []
         
     | 
| 
       125 
123 
     | 
    
         | 
| 
         @@ -149,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       149 
147 
     | 
    
         
             
            requirements: []
         
     | 
| 
       150 
148 
     | 
    
         | 
| 
       151 
149 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       152 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 150 
     | 
    
         
            +
            rubygems_version: 1.8.11
         
     | 
| 
       153 
151 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       154 
152 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       155 
153 
     | 
    
         
             
            summary: Find out what your Ruby gems are worth
         
     |