appraisal 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/.travis.yml +9 -8
- data/Gemfile +5 -4
- data/Gemfile-1.8 +5 -0
- data/Gemfile-2.1 +3 -0
- data/README.md +39 -15
- data/lib/appraisal/appraisal.rb +35 -21
- data/lib/appraisal/{file.rb → appraisal_file.rb} +2 -2
- data/lib/appraisal/bundler_dsl.rb +43 -25
- data/lib/appraisal/cli.rb +16 -9
- data/lib/appraisal/command.rb +6 -3
- data/lib/appraisal/gemfile.rb +4 -3
- data/lib/appraisal/{git_source.rb → git.rb} +1 -1
- data/lib/appraisal/{path_source.rb → path.rb} +1 -1
- data/lib/appraisal/task.rb +2 -2
- data/lib/appraisal/travis_ci_helper.rb +4 -4
- data/lib/appraisal/utils.rb +20 -2
- data/lib/appraisal/version.rb +1 -1
- data/spec/acceptance/appraisals_file_bundler_dsl_compatibility_spec.rb +8 -1
- data/spec/acceptance/bundle_with_custom_path_spec.rb +3 -2
- data/spec/acceptance/bundle_without_spec.rb +51 -0
- data/spec/acceptance/cli/update_spec.rb +2 -1
- data/spec/acceptance/gemspec_spec.rb +1 -0
- data/spec/appraisal/{file_spec.rb → appraisal_file_spec.rb} +4 -4
- data/spec/appraisal/appraisal_spec.rb +13 -2
- data/spec/appraisal/gemfile_spec.rb +14 -0
- data/spec/appraisal/utils_spec.rb +31 -6
- data/spec/support/acceptance_test_helpers.rb +11 -4
- data/spec/support/dependency_helpers.rb +4 -0
- metadata +12 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 398a456edb84cd58cc28ce0e4f1f48fa71fba9ec
|
4
|
+
data.tar.gz: f345bc81392798434127f0809c9038f73901822c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5828d0980b60a878098edb125dcb09582d5328315c0724e50522489e9d3bdd63f7c68b353d372d8442521e98d4dbc84fc2373f32aedf7dafabc5a88a81ecf625
|
7
|
+
data.tar.gz: a6fc78e3735ed05b871ac0ddb7f1f7dc64b0734985ace8992b0a7198a28eeb2f9dd1910b925a2fe9c2ca3f50cbe46bea4d28d93db5712a9366c2eb9e52a3a207
|
data/.travis.yml
CHANGED
@@ -3,12 +3,13 @@ sudo: false
|
|
3
3
|
before_install: gem install bundler
|
4
4
|
|
5
5
|
rvm:
|
6
|
-
- 1.8
|
7
|
-
- 1.9
|
8
|
-
- 2.0
|
9
|
-
- 2.1
|
10
|
-
- 2.2
|
11
|
-
-
|
6
|
+
- 1.8.7-head
|
7
|
+
- 1.9.3-p551
|
8
|
+
- 2.0.0-p648
|
9
|
+
- 2.1.10
|
10
|
+
- 2.2.6
|
11
|
+
- 2.3.3
|
12
|
+
- 2.4.0-preview3
|
12
13
|
- jruby-19mode
|
13
14
|
- ruby-head
|
14
15
|
- jruby-head
|
@@ -16,7 +17,7 @@ rvm:
|
|
16
17
|
matrix:
|
17
18
|
fast_finish: true
|
18
19
|
allow_failures:
|
19
|
-
- rvm: rbx-2
|
20
20
|
- rvm: jruby-19mode
|
21
|
-
- rvm: ruby-head
|
22
21
|
- rvm: jruby-head
|
22
|
+
- rvm: ruby-head
|
23
|
+
- rvm: 2.4.0-preview3
|
data/Gemfile
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
# This here to make sure appraisal works with Rails 3.0.0.
|
6
|
-
gem
|
6
|
+
gem "thor", "~> 0.14.0"
|
7
7
|
|
8
8
|
if RUBY_VERSION < "1.9"
|
9
|
-
|
10
|
-
|
9
|
+
eval File.read("Gemfile-1.8")
|
10
|
+
elsif RUBY_VERSION < "2.2"
|
11
|
+
eval File.read("Gemfile-2.1")
|
11
12
|
end
|
data/Gemfile-1.8
ADDED
data/Gemfile-2.1
ADDED
data/README.md
CHANGED
@@ -5,7 +5,7 @@ Appraisal
|
|
5
5
|
|
6
6
|
Find out what your Ruby gems are worth.
|
7
7
|
|
8
|
-
[Build Status Image]: https://secure.travis-ci.org/thoughtbot/appraisal.
|
8
|
+
[Build Status Image]: https://secure.travis-ci.org/thoughtbot/appraisal.svg?branch=master
|
9
9
|
[Build Status]: http://travis-ci.org/thoughtbot/appraisal
|
10
10
|
|
11
11
|
Synopsis
|
@@ -23,18 +23,19 @@ In your Gemfile:
|
|
23
23
|
|
24
24
|
gem "appraisal"
|
25
25
|
|
26
|
-
Note that gems must be bundled in the global namespace. Bundling gems to a
|
27
|
-
location or vendoring plugins is not supported. If you do not want to
|
28
|
-
global namespace, one alternative is
|
26
|
+
Note that gems must be bundled in the global namespace. Bundling gems to a
|
27
|
+
local location or vendoring plugins is not supported. If you do not want to
|
28
|
+
pollute the global namespace, one alternative is
|
29
|
+
[RVM's Gemsets](http://rvm.io/gemsets).
|
29
30
|
|
30
31
|
Setup
|
31
32
|
-----
|
32
33
|
|
33
|
-
Setting up appraisal requires an Appraisals file (similar to a Gemfile) in
|
34
|
-
project root, named "Appraisals" (note the case), and some slight changes
|
35
|
-
your project's Rakefile
|
34
|
+
Setting up appraisal requires an `Appraisals` file (similar to a `Gemfile`) in
|
35
|
+
your project root, named "Appraisals" (note the case), and some slight changes
|
36
|
+
to your project's `Rakefile`.
|
36
37
|
|
37
|
-
An Appraisals file consists of several appraisal definitions. An appraisal
|
38
|
+
An `Appraisals` file consists of several appraisal definitions. An appraisal
|
38
39
|
definition is simply a list of gem dependencies. For example, to test with a
|
39
40
|
few versions of Rails:
|
40
41
|
|
@@ -46,8 +47,8 @@ few versions of Rails:
|
|
46
47
|
gem "rails", "4.0.0"
|
47
48
|
end
|
48
49
|
|
49
|
-
The dependencies in your Appraisals file are combined with dependencies in
|
50
|
-
Gemfile
|
50
|
+
The dependencies in your `Appraisals` file are combined with dependencies in
|
51
|
+
your `Gemfile`, so you don't need to repeat anything that's the same for each
|
51
52
|
appraisal. If something is specified in both the Gemfile and an appraisal, the
|
52
53
|
version from the appraisal takes precedence.
|
53
54
|
|
@@ -63,18 +64,18 @@ Usage
|
|
63
64
|
Once you've configured the appraisals you want to use, you need to install the
|
64
65
|
dependencies for each appraisal:
|
65
66
|
|
66
|
-
appraisal install
|
67
|
+
$ appraisal install
|
67
68
|
|
68
69
|
This will resolve, install, and lock the dependencies for that appraisal using
|
69
70
|
bundler. Once you have your dependencies set up, you can run any command in a
|
70
71
|
single appraisal:
|
71
72
|
|
72
|
-
appraisal rails-3 rake test
|
73
|
+
$ appraisal rails-3 rake test
|
73
74
|
|
74
75
|
This will run `rake test` using the dependencies configured for Rails 3. You can
|
75
76
|
also run each appraisal in turn:
|
76
77
|
|
77
|
-
appraisal rake test
|
78
|
+
$ appraisal rake test
|
78
79
|
|
79
80
|
If you want to use only the dependencies from your Gemfile, just run `rake
|
80
81
|
test` as normal. This allows you to keep running with the latest versions of
|
@@ -139,15 +140,38 @@ all versions of its dependency, you might have to set a `script` setting:
|
|
139
140
|
That will make sure that each of the test sub-job are not getting run more than
|
140
141
|
one time.
|
141
142
|
|
142
|
-
You can also
|
143
|
+
You can also run your tests against multiple versions of Ruby locally, just
|
143
144
|
like running on Travis CI, by using [WWTD].
|
144
145
|
|
145
146
|
[WWTD]: https://github.com/grosser/wwtd
|
146
147
|
|
148
|
+
Circle CI Integration
|
149
|
+
---------------------
|
150
|
+
|
151
|
+
In Circle CI you can override the default testing behaviour to customize your
|
152
|
+
testing. Using this feature you can configure appraisal to execute your tests.
|
153
|
+
|
154
|
+
In order to this you can put the following configuration in your circle.yml file:
|
155
|
+
|
156
|
+
```yml
|
157
|
+
dependencies:
|
158
|
+
post:
|
159
|
+
- bundle exec appraisal install
|
160
|
+
test:
|
161
|
+
pre:
|
162
|
+
- bundle exec appraisal rake db:create
|
163
|
+
- bundle exec appraisal rake db:migrate
|
164
|
+
override:
|
165
|
+
- bundle exec appraisal rspec
|
166
|
+
```
|
167
|
+
|
168
|
+
Notice that we are running an rspec suite. You can customize your testing
|
169
|
+
command in the `override` section and use your favourite one.
|
170
|
+
|
147
171
|
Credits
|
148
172
|
-------
|
149
173
|
|
150
|
-

|
151
175
|
|
152
176
|
Appraisal is maintained and funded by [thoughtbot, inc][thoughtbot]
|
153
177
|
|
data/lib/appraisal/appraisal.rb
CHANGED
@@ -7,6 +7,8 @@ require 'pathname'
|
|
7
7
|
module Appraisal
|
8
8
|
# Represents one appraisal and its dependencies
|
9
9
|
class Appraisal
|
10
|
+
DEFAULT_INSTALL_OPTIONS = { "jobs" => 1 }.freeze
|
11
|
+
|
10
12
|
attr_reader :name, :gemfile
|
11
13
|
|
12
14
|
def initialize(name, source_gemfile)
|
@@ -46,19 +48,25 @@ module Appraisal
|
|
46
48
|
gemfile.gemspec(options)
|
47
49
|
end
|
48
50
|
|
51
|
+
def git_source(*args, &block)
|
52
|
+
gemfile.git_source(*args, &block)
|
53
|
+
end
|
54
|
+
|
49
55
|
def write_gemfile
|
50
|
-
|
56
|
+
File.open(gemfile_path, "w") do |file|
|
51
57
|
signature = "# This file was generated by Appraisal"
|
52
58
|
file.puts([signature, gemfile.to_s].join("\n\n"))
|
53
59
|
end
|
54
60
|
end
|
55
61
|
|
56
|
-
def install(
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
def install(options = {})
|
63
|
+
commands = [install_command(options).join(" ")]
|
64
|
+
|
65
|
+
if options["without"].nil? || options["without"].empty?
|
66
|
+
commands.unshift(check_command.join(" "))
|
67
|
+
end
|
68
|
+
|
69
|
+
command = commands.join(" || ")
|
62
70
|
|
63
71
|
if Bundler.settings[:path]
|
64
72
|
env = { 'BUNDLE_DISABLE_SHARED_GEMS' => '1' }
|
@@ -69,8 +77,7 @@ module Appraisal
|
|
69
77
|
end
|
70
78
|
|
71
79
|
def update(gems = [])
|
72
|
-
|
73
|
-
Command.new(command, :env => env).run
|
80
|
+
Command.new(update_command(gems), :gemfile => gemfile_path).run
|
74
81
|
end
|
75
82
|
|
76
83
|
def gemfile_path
|
@@ -82,15 +89,15 @@ module Appraisal
|
|
82
89
|
end
|
83
90
|
|
84
91
|
def relative_gemfile_path
|
85
|
-
|
92
|
+
File.join("gemfiles", gemfile_name)
|
86
93
|
end
|
87
94
|
|
88
95
|
def relativize
|
89
96
|
current_directory = Pathname.new(Dir.pwd)
|
90
97
|
relative_path = current_directory.relative_path_from(gemfile_root).cleanpath
|
91
|
-
lockfile_content =
|
98
|
+
lockfile_content = File.read(lockfile_path)
|
92
99
|
|
93
|
-
|
100
|
+
File.open(lockfile_path, 'w') do |file|
|
94
101
|
file.write lockfile_content.gsub(/#{current_directory}/, relative_path.to_s)
|
95
102
|
end
|
96
103
|
end
|
@@ -102,19 +109,17 @@ module Appraisal
|
|
102
109
|
['bundle', 'check', gemfile_option]
|
103
110
|
end
|
104
111
|
|
105
|
-
def install_command(
|
112
|
+
def install_command(options = {})
|
106
113
|
gemfile_option = "--gemfile='#{gemfile_path}'"
|
107
|
-
['bundle', 'install', gemfile_option,
|
114
|
+
['bundle', 'install', gemfile_option, bundle_options(options)].compact
|
108
115
|
end
|
109
116
|
|
110
117
|
def update_command(gems)
|
111
|
-
|
112
|
-
command = ['bundle', 'update', *gems].compact
|
113
|
-
[command, env]
|
118
|
+
['bundle', 'update', *gems].compact
|
114
119
|
end
|
115
120
|
|
116
121
|
def gemfile_root
|
117
|
-
Pathname.new(
|
122
|
+
Pathname.new(File.join(Dir.pwd, "gemfiles"))
|
118
123
|
end
|
119
124
|
|
120
125
|
def gemfile_name
|
@@ -129,15 +134,24 @@ module Appraisal
|
|
129
134
|
name.gsub(/[^\w\.]/, '_')
|
130
135
|
end
|
131
136
|
|
132
|
-
def
|
133
|
-
|
137
|
+
def bundle_options(options)
|
138
|
+
full_options = DEFAULT_INSTALL_OPTIONS.dup.merge(options)
|
139
|
+
options_strings = []
|
140
|
+
jobs = full_options.delete("jobs")
|
141
|
+
if jobs > 1
|
134
142
|
if Utils.support_parallel_installation?
|
135
|
-
"--jobs=#{
|
143
|
+
options_strings << "--jobs=#{jobs}"
|
136
144
|
else
|
137
145
|
warn 'Your current version of Bundler does not support parallel installation. Please ' +
|
138
146
|
'upgrade Bundler to version >= 1.4.0, or invoke `appraisal` without `--jobs` option.'
|
139
147
|
end
|
140
148
|
end
|
149
|
+
|
150
|
+
full_options.each do |flag, val|
|
151
|
+
options_strings << "--#{flag} #{val}"
|
152
|
+
end
|
153
|
+
|
154
|
+
options_strings.join(" ") if options_strings != []
|
141
155
|
end
|
142
156
|
end
|
143
157
|
end
|
@@ -4,7 +4,7 @@ require 'appraisal/gemfile'
|
|
4
4
|
|
5
5
|
module Appraisal
|
6
6
|
# Loads and parses Appraisals file
|
7
|
-
class
|
7
|
+
class AppraisalFile
|
8
8
|
attr_reader :appraisals, :gemfile
|
9
9
|
|
10
10
|
def self.each(&block)
|
@@ -16,7 +16,7 @@ module Appraisal
|
|
16
16
|
@gemfile = Gemfile.new
|
17
17
|
@gemfile.load(ENV['BUNDLE_GEMFILE'] || 'Gemfile')
|
18
18
|
|
19
|
-
if
|
19
|
+
if File.exist? path
|
20
20
|
run IO.read(path)
|
21
21
|
else
|
22
22
|
raise AppraisalsNotFound
|
@@ -5,19 +5,20 @@ module Appraisal
|
|
5
5
|
class BundlerDSL
|
6
6
|
attr_reader :dependencies
|
7
7
|
|
8
|
-
PARTS = %w(source ruby_version
|
8
|
+
PARTS = %w(source ruby_version gits paths dependencies groups
|
9
9
|
platforms source_blocks gemspec)
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
@sources = []
|
13
13
|
@ruby_version = nil
|
14
14
|
@dependencies = DependencyList.new
|
15
|
-
@
|
15
|
+
@gemspecs = []
|
16
16
|
@groups = OrderedHash.new
|
17
17
|
@platforms = OrderedHash.new
|
18
|
-
@
|
19
|
-
@
|
18
|
+
@gits = OrderedHash.new
|
19
|
+
@paths = OrderedHash.new
|
20
20
|
@source_blocks = OrderedHash.new
|
21
|
+
@git_sources = {}
|
21
22
|
end
|
22
23
|
|
23
24
|
def run(&block)
|
@@ -25,7 +26,7 @@ module Appraisal
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def gem(name, *requirements)
|
28
|
-
@dependencies.add(name, requirements)
|
29
|
+
@dependencies.add(name, substitute_git_source(requirements))
|
29
30
|
end
|
30
31
|
|
31
32
|
def group(*names, &block)
|
@@ -54,13 +55,13 @@ module Appraisal
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def git(source, options = {}, &block)
|
57
|
-
@
|
58
|
-
@
|
58
|
+
@gits[source] ||= Git.new(source, options)
|
59
|
+
@gits[source].run(&block)
|
59
60
|
end
|
60
61
|
|
61
62
|
def path(source, options = {}, &block)
|
62
|
-
@
|
63
|
-
@
|
63
|
+
@paths[source] ||= Path.new(source, options)
|
64
|
+
@paths[source].run(&block)
|
64
65
|
end
|
65
66
|
|
66
67
|
def to_s
|
@@ -72,9 +73,17 @@ module Appraisal
|
|
72
73
|
end
|
73
74
|
|
74
75
|
def gemspec(options = {})
|
75
|
-
@
|
76
|
+
@gemspecs << Gemspec.new(options)
|
76
77
|
end
|
77
78
|
|
79
|
+
def git_source(source, &block)
|
80
|
+
@git_sources[source] = block
|
81
|
+
end
|
82
|
+
|
83
|
+
protected
|
84
|
+
|
85
|
+
attr_writer :git_sources
|
86
|
+
|
78
87
|
private
|
79
88
|
|
80
89
|
def source_entry
|
@@ -91,25 +100,23 @@ module Appraisal
|
|
91
100
|
|
92
101
|
alias_method :ruby_version_entry_for_dup, :ruby_version_entry
|
93
102
|
|
94
|
-
|
95
|
-
|
96
|
-
|
103
|
+
def gemspec_entry
|
104
|
+
@gemspecs.map(&:to_s).join("\n")
|
105
|
+
end
|
97
106
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
end
|
107
|
+
def gemspec_entry_for_dup
|
108
|
+
@gemspecs.map(&:for_dup).join("\n")
|
109
|
+
end
|
103
110
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
111
|
+
def dependencies_entry
|
112
|
+
@dependencies.to_s
|
113
|
+
end
|
114
|
+
|
115
|
+
def dependencies_entry_for_dup
|
116
|
+
@dependencies.for_dup
|
110
117
|
end
|
111
118
|
|
112
|
-
[:
|
119
|
+
[:gits, :paths, :platforms, :groups, :source_blocks].
|
113
120
|
each do |method_name|
|
114
121
|
class_eval <<-METHODS, __FILE__, __LINE__
|
115
122
|
private
|
@@ -127,5 +134,16 @@ module Appraisal
|
|
127
134
|
def indent(string)
|
128
135
|
string.strip.gsub(/^(.+)$/, ' \1')
|
129
136
|
end
|
137
|
+
|
138
|
+
def substitute_git_source(requirements)
|
139
|
+
requirements.each do |requirement|
|
140
|
+
if requirement.is_a?(Hash)
|
141
|
+
(requirement.keys & @git_sources.keys).each do |matching_source|
|
142
|
+
value = requirement.delete(matching_source)
|
143
|
+
requirement[:git] = @git_sources[matching_source].call(value)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
130
148
|
end
|
131
149
|
end
|
data/lib/appraisal/cli.rb
CHANGED
@@ -19,11 +19,11 @@ module Appraisal
|
|
19
19
|
appraisal, otherwise it runs the EXTERNAL_COMMAND against all appraisals.
|
20
20
|
help
|
21
21
|
|
22
|
-
if
|
22
|
+
if File.exist?('Appraisals')
|
23
23
|
shell.say
|
24
24
|
shell.say 'Available Appraisal(s):'
|
25
25
|
|
26
|
-
|
26
|
+
AppraisalFile.each do |appraisal|
|
27
27
|
shell.say " - #{appraisal.name}"
|
28
28
|
end
|
29
29
|
end
|
@@ -41,11 +41,16 @@ module Appraisal
|
|
41
41
|
method_option 'jobs', :aliases => 'j', :type => :numeric, :default => 1,
|
42
42
|
:banner => 'SIZE',
|
43
43
|
:desc => 'Install gems in parallel using the given number of workers.'
|
44
|
+
method_option 'retry', :type => :numeric, :default => 1,
|
45
|
+
:desc => 'Retry network and git requests that have failed'
|
46
|
+
method_option "without", :banner => "GROUP_NAMES",
|
47
|
+
:desc => "A space-separated list of groups referencing gems to skip " +
|
48
|
+
"during installation. Bundler will remember this option."
|
44
49
|
def install
|
45
50
|
invoke :generate, [], {}
|
46
51
|
|
47
|
-
|
48
|
-
appraisal.install(options
|
52
|
+
AppraisalFile.each do |appraisal|
|
53
|
+
appraisal.install(options)
|
49
54
|
appraisal.relativize
|
50
55
|
end
|
51
56
|
end
|
@@ -53,7 +58,7 @@ module Appraisal
|
|
53
58
|
desc 'generate', 'Generate a gemfile for each appraisal'
|
54
59
|
method_option "travis", :type => :boolean, :default => false
|
55
60
|
def generate
|
56
|
-
|
61
|
+
AppraisalFile.each do |appraisal|
|
57
62
|
appraisal.write_gemfile
|
58
63
|
end
|
59
64
|
|
@@ -73,14 +78,14 @@ module Appraisal
|
|
73
78
|
def update(*gems)
|
74
79
|
invoke :generate, []
|
75
80
|
|
76
|
-
|
81
|
+
AppraisalFile.each do |appraisal|
|
77
82
|
appraisal.update(gems)
|
78
83
|
end
|
79
84
|
end
|
80
85
|
|
81
86
|
desc 'list', 'List the names of the defined appraisals'
|
82
87
|
def list
|
83
|
-
|
88
|
+
AppraisalFile.new.appraisals.each { |appraisal| puts appraisal.name }
|
84
89
|
end
|
85
90
|
|
86
91
|
desc "version", "Display the version and exit"
|
@@ -91,12 +96,14 @@ module Appraisal
|
|
91
96
|
private
|
92
97
|
|
93
98
|
def method_missing(name, *args, &block)
|
94
|
-
matching_appraisal =
|
99
|
+
matching_appraisal = AppraisalFile.new.appraisals.detect do |appraisal|
|
100
|
+
appraisal.name == name.to_s
|
101
|
+
end
|
95
102
|
|
96
103
|
if matching_appraisal
|
97
104
|
Command.new(args, :gemfile => matching_appraisal.gemfile_path).run
|
98
105
|
else
|
99
|
-
|
106
|
+
AppraisalFile.each do |appraisal|
|
100
107
|
Command.new(ARGV, :gemfile => appraisal.gemfile_path).run
|
101
108
|
end
|
102
109
|
end
|
data/lib/appraisal/command.rb
CHANGED
@@ -43,12 +43,15 @@ module Appraisal
|
|
43
43
|
def ensure_bundler_is_available
|
44
44
|
unless system %(gem list -q "^bundler$" | grep -q bundler)
|
45
45
|
puts ">> Reinstall Bundler into #{ENV["GEM_HOME"]}"
|
46
|
+
version = Utils.bundler_version
|
46
47
|
|
47
|
-
unless system "gem install bundler"
|
48
|
+
unless system "gem install bundler --version #{version}"
|
48
49
|
puts
|
49
50
|
puts <<-ERROR.strip.gsub(/\s+/, " ")
|
50
|
-
Bundler installation failed.
|
51
|
-
|
51
|
+
Bundler installation failed.
|
52
|
+
Please try running:
|
53
|
+
`GEM_HOME="#{ENV["GEM_HOME"]}" gem install bundler --version #{version}`
|
54
|
+
manually.
|
52
55
|
ERROR
|
53
56
|
exit(1)
|
54
57
|
end
|
data/lib/appraisal/gemfile.rb
CHANGED
@@ -2,16 +2,16 @@ require "appraisal/bundler_dsl"
|
|
2
2
|
|
3
3
|
module Appraisal
|
4
4
|
autoload :Gemspec, "appraisal/gemspec"
|
5
|
-
autoload :
|
5
|
+
autoload :Git, "appraisal/git"
|
6
6
|
autoload :Group, "appraisal/group"
|
7
|
-
autoload :
|
7
|
+
autoload :Path, "appraisal/path"
|
8
8
|
autoload :Platform, "appraisal/platform"
|
9
9
|
autoload :Source, "appraisal/source"
|
10
10
|
|
11
11
|
# Load bundler Gemfiles and merge dependencies
|
12
12
|
class Gemfile < BundlerDSL
|
13
13
|
def load(path)
|
14
|
-
if
|
14
|
+
if File.exist?(path)
|
15
15
|
run(IO.read(path))
|
16
16
|
end
|
17
17
|
end
|
@@ -22,6 +22,7 @@ module Appraisal
|
|
22
22
|
|
23
23
|
def dup
|
24
24
|
Gemfile.new.tap do |gemfile|
|
25
|
+
gemfile.git_sources = @git_sources
|
25
26
|
gemfile.run(for_dup)
|
26
27
|
end
|
27
28
|
end
|
data/lib/appraisal/task.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'appraisal/
|
1
|
+
require 'appraisal/appraisal_file'
|
2
2
|
require 'rake/tasklib'
|
3
3
|
|
4
4
|
module Appraisal
|
@@ -29,7 +29,7 @@ module Appraisal
|
|
29
29
|
end
|
30
30
|
|
31
31
|
begin
|
32
|
-
|
32
|
+
AppraisalFile.each do |appraisal|
|
33
33
|
desc "DEPRECATED: Run the given task for appraisal #{appraisal.name}"
|
34
34
|
task appraisal.name do
|
35
35
|
ARGV.shift
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require "appraisal/
|
1
|
+
require "appraisal/appraisal_file"
|
2
2
|
require "yaml"
|
3
3
|
|
4
4
|
module Appraisal
|
@@ -20,7 +20,7 @@ module Appraisal
|
|
20
20
|
puts "# Put this in your .travis.yml"
|
21
21
|
puts "#{GEMFILES_CONFIGURATION_KEY}:"
|
22
22
|
|
23
|
-
|
23
|
+
AppraisalFile.each do |appraisal|
|
24
24
|
puts " - #{appraisal.relative_gemfile_path}"
|
25
25
|
end
|
26
26
|
end
|
@@ -45,7 +45,7 @@ module Appraisal
|
|
45
45
|
private
|
46
46
|
|
47
47
|
def has_configuration_file?
|
48
|
-
|
48
|
+
File.exist?(CONFIGURATION_FILE)
|
49
49
|
end
|
50
50
|
|
51
51
|
def has_no_gemfiles_configuration?
|
@@ -55,7 +55,7 @@ module Appraisal
|
|
55
55
|
def has_invalid_gemfiles_configuration?
|
56
56
|
if configuration && configuration[GEMFILES_CONFIGURATION_KEY]
|
57
57
|
appraisal_paths =
|
58
|
-
|
58
|
+
AppraisalFile.new.appraisals.map(&:relative_gemfile_path).sort
|
59
59
|
travis_gemfile_paths = configuration[GEMFILES_CONFIGURATION_KEY].sort
|
60
60
|
appraisal_paths != travis_gemfile_paths
|
61
61
|
end
|
data/lib/appraisal/utils.rb
CHANGED
@@ -9,7 +9,7 @@ module Appraisal
|
|
9
9
|
case object
|
10
10
|
when Hash
|
11
11
|
items = object.map do |key, value|
|
12
|
-
|
12
|
+
format_hash_value(key, value)
|
13
13
|
end
|
14
14
|
|
15
15
|
if enclosing_object
|
@@ -22,6 +22,17 @@ module Appraisal
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def self.format_hash_value(key, value)
|
26
|
+
key = format_string(key, true)
|
27
|
+
value = format_string(value, true)
|
28
|
+
|
29
|
+
if RUBY_VERSION >= "1.9" && key.start_with?(":")
|
30
|
+
"#{key.sub(/^:/, "")}: #{value}"
|
31
|
+
else
|
32
|
+
"#{key} => #{value}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
25
36
|
def self.format_arguments(arguments)
|
26
37
|
unless arguments.empty?
|
27
38
|
arguments.map { |object| format_string(object, false) }.join(', ')
|
@@ -35,10 +46,17 @@ module Appraisal
|
|
35
46
|
def self.prefix_path(path)
|
36
47
|
if path !~ /^(?:\/|\S:)/ && path !~ /^\S+:\/\// && path !~ /^\S+@\S+:/
|
37
48
|
cleaned_path = path.gsub(/(^|\/)\.(?:\/|$)/, "\\1")
|
38
|
-
|
49
|
+
File.join("..", cleaned_path)
|
39
50
|
else
|
40
51
|
path
|
41
52
|
end
|
42
53
|
end
|
54
|
+
|
55
|
+
def self.bundler_version
|
56
|
+
Gem::Specification.
|
57
|
+
detect { |spec| spec.name == "bundler" }.
|
58
|
+
version.
|
59
|
+
to_s
|
60
|
+
end
|
43
61
|
end
|
44
62
|
end
|
data/lib/appraisal/version.rb
CHANGED
@@ -3,13 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe 'Appraisals file Bundler DSL compatibility' do
|
4
4
|
it 'supports all Bundler DSL in Appraisals file' do
|
5
5
|
build_gems %w(bagel orange_juice milk waffle coffee ham sausage pancake)
|
6
|
-
|
6
|
+
build_git_gems %w(egg croissant pain_au_chocolat)
|
7
7
|
|
8
8
|
build_gemfile <<-Gemfile
|
9
9
|
source 'https://rubygems.org'
|
10
|
+
git_source(:custom_git_source) { |repo| "../gems/\#{repo}" }
|
10
11
|
ruby RUBY_VERSION
|
11
12
|
|
12
13
|
gem 'bagel'
|
14
|
+
gem "croissant", :custom_git_source => "croissant"
|
13
15
|
|
14
16
|
git '../gems/egg' do
|
15
17
|
gem 'egg'
|
@@ -44,6 +46,7 @@ describe 'Appraisals file Bundler DSL compatibility' do
|
|
44
46
|
ruby "1.8.7"
|
45
47
|
|
46
48
|
gem 'bread'
|
49
|
+
gem "pain_au_chocolat", :custom_git_source => "pain_au_chocolat"
|
47
50
|
|
48
51
|
git '../gems/egg' do
|
49
52
|
gem 'porched_egg'
|
@@ -70,6 +73,7 @@ describe 'Appraisals file Bundler DSL compatibility' do
|
|
70
73
|
end
|
71
74
|
|
72
75
|
gemspec
|
76
|
+
gemspec :path => "sitepress"
|
73
77
|
end
|
74
78
|
Appraisals
|
75
79
|
|
@@ -95,8 +99,10 @@ describe 'Appraisals file Bundler DSL compatibility' do
|
|
95
99
|
end
|
96
100
|
|
97
101
|
gem "bagel"
|
102
|
+
gem "croissant", :git => "../../gems/croissant"
|
98
103
|
gem "appraisal", :path => #{PROJECT_ROOT.inspect}
|
99
104
|
gem "bread"
|
105
|
+
gem "pain_au_chocolat", :git => "../../gems/pain_au_chocolat"
|
100
106
|
|
101
107
|
group :breakfast do
|
102
108
|
gem "orange_juice"
|
@@ -122,6 +128,7 @@ describe 'Appraisals file Bundler DSL compatibility' do
|
|
122
128
|
end
|
123
129
|
|
124
130
|
gemspec :path => "../"
|
131
|
+
gemspec :path => "../sitepress"
|
125
132
|
Gemfile
|
126
133
|
end
|
127
134
|
end
|
@@ -41,8 +41,9 @@ describe "Bundle with custom path" do
|
|
41
41
|
gem 'appraisal', :path => #{PROJECT_ROOT.inspect}
|
42
42
|
|
43
43
|
if RUBY_VERSION < "1.9"
|
44
|
-
|
45
|
-
|
44
|
+
#{File.read(File.join(PROJECT_ROOT, "Gemfile-1.8"))}
|
45
|
+
elsif RUBY_VERSION < "2.2"
|
46
|
+
#{File.read(File.join(PROJECT_ROOT, "Gemfile-2.1"))}
|
46
47
|
end
|
47
48
|
Gemfile
|
48
49
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Bundler without flag" do
|
4
|
+
it "passes --without flag to Bundler on install" do
|
5
|
+
build_gems %w(pancake orange_juice waffle coffee sausage soda)
|
6
|
+
|
7
|
+
build_gemfile <<-Gemfile
|
8
|
+
source "https://rubygems.org"
|
9
|
+
|
10
|
+
gem "pancake"
|
11
|
+
gem "rake", "~> 10.5", :platform => :ruby_18
|
12
|
+
|
13
|
+
group :drinks do
|
14
|
+
gem "orange_juice"
|
15
|
+
end
|
16
|
+
|
17
|
+
gem "appraisal", :path => #{PROJECT_ROOT.inspect}
|
18
|
+
Gemfile
|
19
|
+
|
20
|
+
build_appraisal_file <<-Appraisals
|
21
|
+
appraise "breakfast" do
|
22
|
+
gem "waffle"
|
23
|
+
|
24
|
+
group :drinks do
|
25
|
+
gem "coffee"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
appraise "lunch" do
|
30
|
+
gem "sausage"
|
31
|
+
|
32
|
+
group :drinks do
|
33
|
+
gem "soda"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
Appraisals
|
37
|
+
|
38
|
+
run "bundle install --local"
|
39
|
+
output = run "appraisal install --without drinks"
|
40
|
+
|
41
|
+
expect(output).to include("Bundle complete")
|
42
|
+
expect(output).to include("Gems in the group drinks were not installed.")
|
43
|
+
expect(output).not_to include("orange_juice")
|
44
|
+
expect(output).not_to include("coffee")
|
45
|
+
expect(output).not_to include("soda")
|
46
|
+
|
47
|
+
output = run "appraisal install"
|
48
|
+
|
49
|
+
expect(output).to include("The Gemfile's dependencies are satisfied")
|
50
|
+
end
|
51
|
+
end
|
@@ -25,8 +25,9 @@ describe 'CLI', 'appraisal update' do
|
|
25
25
|
|
26
26
|
context 'with no arguments' do
|
27
27
|
it 'updates all the gems' do
|
28
|
-
run 'appraisal update'
|
28
|
+
output = run 'appraisal update'
|
29
29
|
|
30
|
+
expect(output).to include("gemfiles/dummy.gemfile bundle update")
|
30
31
|
expect(content_of 'gemfiles/dummy.gemfile.lock').to include 'dummy (1.0.1)'
|
31
32
|
expect(content_of 'gemfiles/dummy.gemfile.lock').to include 'dummy2 (1.0.1)'
|
32
33
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'appraisal/
|
2
|
+
require 'appraisal/appraisal_file'
|
3
3
|
|
4
4
|
# Requiring this to make the test pass on Rubinius 2.2.5
|
5
5
|
# https://github.com/rubinius/rubinius/issues/2934
|
6
6
|
require 'rspec/matchers/built_in/raise_error'
|
7
7
|
|
8
|
-
describe Appraisal::
|
8
|
+
describe Appraisal::AppraisalFile do
|
9
9
|
it "complains when no Appraisals file is found" do
|
10
|
-
allow(
|
11
|
-
allow(
|
10
|
+
allow(File).to receive(:exist?).with(/Gemfile/).and_return(true)
|
11
|
+
allow(File).to receive(:exist?).with("Appraisals").and_return(false)
|
12
12
|
expect { described_class.new }.to raise_error(Appraisal::AppraisalsNotFound)
|
13
13
|
end
|
14
14
|
end
|
@@ -41,7 +41,7 @@ describe Appraisal::Appraisal do
|
|
41
41
|
stub_const('Bundler::VERSION', '1.3.0')
|
42
42
|
|
43
43
|
warning = capture(:stderr) do
|
44
|
-
@appraisal.install(42)
|
44
|
+
@appraisal.install("jobs" => 42)
|
45
45
|
end
|
46
46
|
|
47
47
|
expect(Appraisal::Command).to have_received(:new).
|
@@ -52,12 +52,19 @@ describe Appraisal::Appraisal do
|
|
52
52
|
it 'runs parallel install command on Bundler >= 1.4.0' do
|
53
53
|
stub_const('Bundler::VERSION', '1.4.0')
|
54
54
|
|
55
|
-
@appraisal.install(42)
|
55
|
+
@appraisal.install("jobs" => 42)
|
56
56
|
|
57
57
|
expect(Appraisal::Command).to have_received(:new).
|
58
58
|
with("#{bundle_check_command} || #{bundle_parallel_install_command}")
|
59
59
|
end
|
60
60
|
|
61
|
+
it 'runs install command with retries on Bundler' do
|
62
|
+
@appraisal.install("retry" => 3)
|
63
|
+
|
64
|
+
expect(Appraisal::Command).to have_received(:new).
|
65
|
+
with("#{bundle_check_command} || #{bundle_install_command_with_retries}")
|
66
|
+
end
|
67
|
+
|
61
68
|
def bundle_check_command
|
62
69
|
"bundle check --gemfile='/home/test/test directory'"
|
63
70
|
end
|
@@ -69,5 +76,9 @@ describe Appraisal::Appraisal do
|
|
69
76
|
def bundle_parallel_install_command
|
70
77
|
"bundle install --gemfile='/home/test/test directory' --jobs=42"
|
71
78
|
end
|
79
|
+
|
80
|
+
def bundle_install_command_with_retries
|
81
|
+
"bundle install --gemfile='/home/test/test directory' --retry 3"
|
82
|
+
end
|
72
83
|
end
|
73
84
|
end
|
@@ -251,6 +251,8 @@ describe Appraisal::Gemfile do
|
|
251
251
|
end
|
252
252
|
|
253
253
|
context "relative path handling" do
|
254
|
+
before { stub_const('RUBY_VERSION', '1.8.7') }
|
255
|
+
|
254
256
|
context "in :path option" do
|
255
257
|
it "handles dot path" do
|
256
258
|
gemfile = Appraisal::Gemfile.new
|
@@ -416,4 +418,16 @@ describe Appraisal::Gemfile do
|
|
416
418
|
end
|
417
419
|
end
|
418
420
|
end
|
421
|
+
|
422
|
+
context "git_source support" do
|
423
|
+
before { stub_const('RUBY_VERSION', '1.8.7') }
|
424
|
+
|
425
|
+
it "stores git_source declaration and apply it as git option" do
|
426
|
+
gemfile = Appraisal::Gemfile.new
|
427
|
+
gemfile.git_source(:custom_source) { |repo| "path/#{repo}" }
|
428
|
+
gemfile.gem "bacon", :custom_source => "bacon_pancake"
|
429
|
+
|
430
|
+
expect(gemfile.to_s).to eq %(gem "bacon", :git => "../path/bacon_pancake")
|
431
|
+
end
|
432
|
+
end
|
419
433
|
end
|
@@ -3,17 +3,30 @@ require 'appraisal/utils'
|
|
3
3
|
|
4
4
|
describe Appraisal::Utils do
|
5
5
|
describe '.format_string' do
|
6
|
-
|
7
|
-
hash
|
8
|
-
|
6
|
+
if RUBY_VERSION > "1.9"
|
7
|
+
it "prints out a nice looking hash without brackets with new syntax" do
|
8
|
+
hash = { :foo => 'bar' }
|
9
|
+
expect(Appraisal::Utils.format_string(hash)).to eq('foo: "bar"')
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
hash = { 'baz' => { :ball => 'boo' }}
|
12
|
+
expect(Appraisal::Utils.format_string(hash)).
|
13
|
+
to eq('"baz" => { ball: "boo" }')
|
14
|
+
end
|
15
|
+
else
|
16
|
+
it "prints out a nice looking hash without brackets with old syntax" do
|
17
|
+
hash = { :foo => 'bar' }
|
18
|
+
expect(Appraisal::Utils.format_string(hash)).to eq(':foo => "bar"')
|
19
|
+
|
20
|
+
hash = { 'baz' => { :ball => 'boo' }}
|
21
|
+
expect(Appraisal::Utils.format_string(hash)).
|
22
|
+
to eq('"baz" => { :ball => "boo" }')
|
23
|
+
end
|
13
24
|
end
|
14
25
|
end
|
15
26
|
|
16
27
|
describe '.format_arguments' do
|
28
|
+
before { stub_const('RUBY_VERSION', '1.8.7') }
|
29
|
+
|
17
30
|
it 'prints out arguments without enclosing square brackets' do
|
18
31
|
arguments = [:foo, { :bar => { :baz => 'ball' }}]
|
19
32
|
|
@@ -58,4 +71,16 @@ describe Appraisal::Utils do
|
|
58
71
|
).to eq("https://github.com/bacon/bacon.git")
|
59
72
|
end
|
60
73
|
end
|
74
|
+
|
75
|
+
describe ".bundler_version" do
|
76
|
+
it "returns the bundler version" do
|
77
|
+
bundler = double("Bundler", :name => "bundler", :version => "a.b.c")
|
78
|
+
allow(Gem::Specification).to receive(:detect).and_return(bundler)
|
79
|
+
|
80
|
+
version = Appraisal::Utils.bundler_version
|
81
|
+
|
82
|
+
expect(version).to eq "a.b.c"
|
83
|
+
expect(Gem::Specification).to have_received(:detect)
|
84
|
+
end
|
85
|
+
end
|
61
86
|
end
|
@@ -80,12 +80,17 @@ module AcceptanceTestHelpers
|
|
80
80
|
s.name = 'stage'
|
81
81
|
s.version = '0.1'
|
82
82
|
s.summary = 'Awesome Gem!'
|
83
|
+
s.authors = "Appraisal"
|
83
84
|
end
|
84
85
|
gemspec
|
85
86
|
end
|
86
87
|
|
87
88
|
def content_of(path)
|
88
|
-
file(path).read
|
89
|
+
file(path).read.tap do |content|
|
90
|
+
if RUBY_VERSION >= "1.9"
|
91
|
+
content.gsub!(/(\S+): /, ":\\1 => ")
|
92
|
+
end
|
93
|
+
end
|
89
94
|
end
|
90
95
|
|
91
96
|
def file(path)
|
@@ -125,8 +130,9 @@ module AcceptanceTestHelpers
|
|
125
130
|
Reinstall Bundler to #{TMP_GEM_ROOT} as `BUNDLE_DISABLE_SHARED_GEMS`
|
126
131
|
is enabled.
|
127
132
|
WARNING
|
133
|
+
version = Utils.bundler_version
|
128
134
|
|
129
|
-
run "gem install bundler --install-dir '#{TMP_GEM_ROOT}'"
|
135
|
+
run "gem install bundler --version #{version} --install-dir '#{TMP_GEM_ROOT}'"
|
130
136
|
end
|
131
137
|
end
|
132
138
|
|
@@ -137,8 +143,9 @@ module AcceptanceTestHelpers
|
|
137
143
|
gem 'appraisal', :path => '#{PROJECT_ROOT}'
|
138
144
|
|
139
145
|
if RUBY_VERSION < "1.9"
|
140
|
-
|
141
|
-
|
146
|
+
#{File.read(File.join(PROJECT_ROOT, "Gemfile-1.8"))}
|
147
|
+
elsif RUBY_VERSION < "2.2"
|
148
|
+
#{File.read(File.join(PROJECT_ROOT, "Gemfile-2.1"))}
|
142
149
|
end
|
143
150
|
Gemfile
|
144
151
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appraisal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Ferris
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -96,6 +96,8 @@ files:
|
|
96
96
|
- ".travis.yml"
|
97
97
|
- CONTRIBUTING.md
|
98
98
|
- Gemfile
|
99
|
+
- Gemfile-1.8
|
100
|
+
- Gemfile-2.1
|
99
101
|
- MIT-LICENSE
|
100
102
|
- README.md
|
101
103
|
- Rakefile
|
@@ -103,19 +105,19 @@ files:
|
|
103
105
|
- bin/appraisal
|
104
106
|
- lib/appraisal.rb
|
105
107
|
- lib/appraisal/appraisal.rb
|
108
|
+
- lib/appraisal/appraisal_file.rb
|
106
109
|
- lib/appraisal/bundler_dsl.rb
|
107
110
|
- lib/appraisal/cli.rb
|
108
111
|
- lib/appraisal/command.rb
|
109
112
|
- lib/appraisal/dependency.rb
|
110
113
|
- lib/appraisal/dependency_list.rb
|
111
114
|
- lib/appraisal/errors.rb
|
112
|
-
- lib/appraisal/file.rb
|
113
115
|
- lib/appraisal/gemfile.rb
|
114
116
|
- lib/appraisal/gemspec.rb
|
115
|
-
- lib/appraisal/
|
117
|
+
- lib/appraisal/git.rb
|
116
118
|
- lib/appraisal/group.rb
|
117
119
|
- lib/appraisal/ordered_hash.rb
|
118
|
-
- lib/appraisal/
|
120
|
+
- lib/appraisal/path.rb
|
119
121
|
- lib/appraisal/platform.rb
|
120
122
|
- lib/appraisal/source.rb
|
121
123
|
- lib/appraisal/task.rb
|
@@ -124,6 +126,7 @@ files:
|
|
124
126
|
- lib/appraisal/version.rb
|
125
127
|
- spec/acceptance/appraisals_file_bundler_dsl_compatibility_spec.rb
|
126
128
|
- spec/acceptance/bundle_with_custom_path_spec.rb
|
129
|
+
- spec/acceptance/bundle_without_spec.rb
|
127
130
|
- spec/acceptance/cli/clean_spec.rb
|
128
131
|
- spec/acceptance/cli/generate_spec.rb
|
129
132
|
- spec/acceptance/cli/help_spec.rb
|
@@ -136,9 +139,9 @@ files:
|
|
136
139
|
- spec/acceptance/gemfile_dsl_compatibility_spec.rb
|
137
140
|
- spec/acceptance/gemspec_spec.rb
|
138
141
|
- spec/acceptance/travis_ci_integration_spec.rb
|
142
|
+
- spec/appraisal/appraisal_file_spec.rb
|
139
143
|
- spec/appraisal/appraisal_spec.rb
|
140
144
|
- spec/appraisal/dependency_list_spec.rb
|
141
|
-
- spec/appraisal/file_spec.rb
|
142
145
|
- spec/appraisal/gemfile_spec.rb
|
143
146
|
- spec/appraisal/utils_spec.rb
|
144
147
|
- spec/spec_helper.rb
|
@@ -165,13 +168,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
168
|
version: '0'
|
166
169
|
requirements: []
|
167
170
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.6.8
|
169
172
|
signing_key:
|
170
173
|
specification_version: 4
|
171
174
|
summary: Find out what your Ruby gems are worth
|
172
175
|
test_files:
|
173
176
|
- spec/acceptance/appraisals_file_bundler_dsl_compatibility_spec.rb
|
174
177
|
- spec/acceptance/bundle_with_custom_path_spec.rb
|
178
|
+
- spec/acceptance/bundle_without_spec.rb
|
175
179
|
- spec/acceptance/cli/clean_spec.rb
|
176
180
|
- spec/acceptance/cli/generate_spec.rb
|
177
181
|
- spec/acceptance/cli/help_spec.rb
|
@@ -184,9 +188,9 @@ test_files:
|
|
184
188
|
- spec/acceptance/gemfile_dsl_compatibility_spec.rb
|
185
189
|
- spec/acceptance/gemspec_spec.rb
|
186
190
|
- spec/acceptance/travis_ci_integration_spec.rb
|
191
|
+
- spec/appraisal/appraisal_file_spec.rb
|
187
192
|
- spec/appraisal/appraisal_spec.rb
|
188
193
|
- spec/appraisal/dependency_list_spec.rb
|
189
|
-
- spec/appraisal/file_spec.rb
|
190
194
|
- spec/appraisal/gemfile_spec.rb
|
191
195
|
- spec/appraisal/utils_spec.rb
|
192
196
|
- spec/spec_helper.rb
|