molinillo 0.5.0 → 0.5.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e941ca9751ad429184a78dbb929fba03428d5630
|
4
|
+
data.tar.gz: a60bb544a0c227c078e49249848e7a93dcc654b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cfb3cbe6a1c524938933f30ad4cce2384b5ddca16632c99609721e841fb70557be98df82fa2feb0980a127dd009d026f9bd5b34edca1d7fa2e39ba6ecae0307
|
7
|
+
data.tar.gz: 952805cd2f2fc302b2ea5c11181442c3019755cd22dab63afe37e97121ba270e9b3ddebdf2443c83604578dac2f16f8d9252164c490e1dc7cb02a2694421bbe2
|
data/lib/molinillo/resolution.rb
CHANGED
@@ -184,6 +184,8 @@ module Molinillo
|
|
184
184
|
raise VersionConflict.new(c) unless state
|
185
185
|
activated.rewind_to(sliced_states.first || :initial_state) if sliced_states
|
186
186
|
state.conflicts = c
|
187
|
+
index = states.size - 1
|
188
|
+
@parent_of.reject! { |_, i| i >= index }
|
187
189
|
end
|
188
190
|
end
|
189
191
|
|
@@ -209,7 +211,10 @@ module Molinillo
|
|
209
211
|
# @return [Object] the requirement that led to `requirement` being added
|
210
212
|
# to the list of requirements.
|
211
213
|
def parent_of(requirement)
|
212
|
-
|
214
|
+
return unless requirement
|
215
|
+
return unless index = @parent_of[requirement]
|
216
|
+
return unless parent_state = @states[index]
|
217
|
+
parent_state.requirement
|
213
218
|
end
|
214
219
|
|
215
220
|
# @return [Object] the requirement that led to a version of a possibility
|
@@ -418,7 +423,8 @@ module Molinillo
|
|
418
423
|
debug(depth) { "Requiring nested dependencies (#{nested_dependencies.join(', ')})" }
|
419
424
|
nested_dependencies.each do |d|
|
420
425
|
activated.add_child_vertex(name_for(d), nil, [name_for(activated_spec)], d)
|
421
|
-
|
426
|
+
parent_index = states.size - 1
|
427
|
+
@parent_of[d] ||= parent_index
|
422
428
|
end
|
423
429
|
|
424
430
|
push_state_for_requirements(requirements + nested_dependencies, !nested_dependencies.empty?)
|
@@ -4,7 +4,7 @@ require 'json'
|
|
4
4
|
require 'open-uri'
|
5
5
|
require 'set'
|
6
6
|
|
7
|
-
GEMS = %w(
|
7
|
+
GEMS = %w(chef).freeze
|
8
8
|
|
9
9
|
VERSION_PATTERN = /\A
|
10
10
|
[0-9]+\.[0-9]+\.[0-9]+ (?# Number component)
|
@@ -28,7 +28,7 @@ def coerce_to_semver(version)
|
|
28
28
|
semver = parts[0..2].join('.')
|
29
29
|
semver.sub!(/([a-zA-Z])/, '-\1')
|
30
30
|
semver += '-' + parts[-1] if parts.size > 3
|
31
|
-
semver
|
31
|
+
semver.chomp(".")
|
32
32
|
end
|
33
33
|
|
34
34
|
def coerce_dependencies_to_semver(deps)
|
data/spec/resolver_spec.rb
CHANGED
@@ -121,6 +121,81 @@ module Molinillo
|
|
121
121
|
expect(resolved.map(&:payload).map(&:to_s)).to eq(['actionpack (1.2.3)'])
|
122
122
|
end
|
123
123
|
|
124
|
+
it 'can resolve when two specs have the same dependencies' do
|
125
|
+
bundler_index = Class.new(TestIndex) do
|
126
|
+
# The bug we want to write a regression test for only occurs when
|
127
|
+
# Molinillo processes dependencies in a specific order for the given
|
128
|
+
# index and demands. This sorting logic ensures we hit the repro case
|
129
|
+
def sort_dependencies(dependencies, activated, conflicts)
|
130
|
+
dependencies.sort_by do |dependency|
|
131
|
+
name = name_for(dependency)
|
132
|
+
[
|
133
|
+
activated.vertex_named(name).payload ? 0 : 1,
|
134
|
+
conflicts[name] ? 0 : 1,
|
135
|
+
activated.vertex_named(name).payload ? 0 : search_for(dependency).count,
|
136
|
+
]
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
index = bundler_index.new('rubygems-2016-09-11')
|
142
|
+
@resolver = described_class.new(index, TestUI.new)
|
143
|
+
demands = [
|
144
|
+
VersionKit::Dependency.new('chef', '~> 12.1.2'),
|
145
|
+
]
|
146
|
+
|
147
|
+
resolved = @resolver.resolve(demands, DependencyGraph.new)
|
148
|
+
|
149
|
+
expected = [
|
150
|
+
'rake (10.5.0)',
|
151
|
+
'builder (3.2.2)',
|
152
|
+
'ffi (1.9.14)',
|
153
|
+
'libyajl2 (1.2.0)',
|
154
|
+
'hashie (2.1.2)',
|
155
|
+
'mixlib-log (1.7.1)',
|
156
|
+
'rack (2.0.1)',
|
157
|
+
'uuidtools (2.1.5)',
|
158
|
+
'diff-lcs (1.2.5)',
|
159
|
+
'erubis (2.7.0)',
|
160
|
+
'highline (1.7.8)',
|
161
|
+
'mixlib-cli (1.7.0)',
|
162
|
+
'mixlib-config (2.2.4)',
|
163
|
+
'mixlib-shellout (2.2.7)',
|
164
|
+
'net-ssh (2.9.4)',
|
165
|
+
'ipaddress (0.8.3)',
|
166
|
+
'mime-types (2.99.3)',
|
167
|
+
'systemu (2.6.5)',
|
168
|
+
'wmi-lite (1.0.0)',
|
169
|
+
'plist (3.1.0)',
|
170
|
+
'coderay (1.1.1)',
|
171
|
+
'method_source (0.8.2)',
|
172
|
+
'slop (3.6.0)',
|
173
|
+
'rspec-support (3.5.0)',
|
174
|
+
'multi_json (1.12.1)',
|
175
|
+
'net-telnet (0.1.1)',
|
176
|
+
'sfl (2.2.0)',
|
177
|
+
'ffi-yajl (1.4.0)',
|
178
|
+
'mixlib-authentication (1.4.1)',
|
179
|
+
'net-ssh-gateway (1.2.0)',
|
180
|
+
'net-scp (1.2.1)',
|
181
|
+
'pry (0.10.4)',
|
182
|
+
'rspec-core (3.5.3)',
|
183
|
+
'rspec-expectations (3.5.0)',
|
184
|
+
'rspec-mocks (3.5.0)',
|
185
|
+
'chef-zero (4.2.3)',
|
186
|
+
'ohai (8.4.0)',
|
187
|
+
'net-ssh-multi (1.2.1)',
|
188
|
+
'specinfra (2.61.3)',
|
189
|
+
'rspec_junit_formatter (0.2.3)',
|
190
|
+
'rspec-its (1.2.0)',
|
191
|
+
'rspec (3.5.0)',
|
192
|
+
'serverspec (2.36.1)',
|
193
|
+
'chef (12.1.2)',
|
194
|
+
]
|
195
|
+
|
196
|
+
expect(resolved.map(&:payload).map(&:to_s)).to match_array(expected)
|
197
|
+
end
|
198
|
+
|
124
199
|
# Regression test. See: https://github.com/CocoaPods/Molinillo/pull/38
|
125
200
|
it 'can resolve when swapping children with successors' do
|
126
201
|
swap_child_with_successors_index = Class.new(TestIndex) do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: molinillo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel E. Giddins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
requirements: []
|
98
98
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.6.
|
99
|
+
rubygems_version: 2.6.6
|
100
100
|
signing_key:
|
101
101
|
specification_version: 4
|
102
102
|
summary: Provides support for dependency resolution
|