librarian 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/CHANGELOG.md +15 -0
- data/Gemfile +2 -0
- data/VERSION +1 -0
- data/lib/librarian/algorithms.rb +133 -0
- data/lib/librarian/cli/manifest_presenter.rb +1 -5
- data/lib/librarian/dependency.rb +7 -1
- data/lib/librarian/environment.rb +20 -2
- data/lib/librarian/environment/runtime_cache.rb +101 -0
- data/lib/librarian/manifest.rb +7 -1
- data/lib/librarian/manifest_set.rb +11 -12
- data/lib/librarian/posix.rb +14 -5
- data/lib/librarian/resolver.rb +22 -9
- data/lib/librarian/resolver/implementation.rb +64 -49
- data/lib/librarian/source/git.rb +47 -11
- data/lib/librarian/source/git/repository.rb +33 -3
- data/lib/librarian/version.rb +1 -1
- data/librarian.gemspec +8 -6
- data/spec/functional/cli_spec.rb +1 -1
- data/spec/functional/posix_spec.rb +6 -8
- data/spec/functional/source/git/repository_spec.rb +55 -27
- data/spec/functional/source/git_spec.rb +152 -8
- data/spec/support/project_path_macro.rb +14 -0
- data/spec/unit/action/base_spec.rb +1 -1
- data/spec/unit/action/clean_spec.rb +6 -6
- data/spec/unit/action/install_spec.rb +5 -5
- data/spec/unit/algorithms_spec.rb +131 -0
- data/spec/unit/config/database_spec.rb +38 -38
- data/spec/unit/dependency/requirement_spec.rb +12 -0
- data/spec/unit/dsl_spec.rb +49 -49
- data/spec/unit/environment/runtime_cache_spec.rb +73 -0
- data/spec/unit/environment_spec.rb +28 -28
- data/spec/unit/lockfile/parser_spec.rb +18 -18
- data/spec/unit/lockfile_spec.rb +3 -3
- data/spec/unit/manifest/version_spec.rb +11 -0
- data/spec/unit/manifest_set_spec.rb +20 -20
- data/spec/unit/mock/environment_spec.rb +4 -4
- data/spec/unit/resolver_spec.rb +61 -20
- data/spec/unit/spec_change_set_spec.rb +19 -19
- metadata +19 -5
@@ -6,19 +6,19 @@ module Librarian::Mock
|
|
6
6
|
let(:env) { described_class.new }
|
7
7
|
|
8
8
|
describe "#version" do
|
9
|
-
specify { env.version.
|
9
|
+
specify { expect(env.version).to eq Librarian::VERSION }
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "#adapter_module" do
|
13
|
-
specify { env.adapter_module.
|
13
|
+
specify { expect(env.adapter_module).to eq Librarian::Mock }
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "#adapter_name" do
|
17
|
-
specify { env.adapter_name.
|
17
|
+
specify { expect(env.adapter_name).to eq "mock" }
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "#adapter_version" do
|
21
|
-
specify { env.adapter_version.
|
21
|
+
specify { expect(env.adapter_version).to eq Librarian::Mock::VERSION }
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
data/spec/unit/resolver_spec.rb
CHANGED
@@ -33,7 +33,7 @@ module Librarian
|
|
33
33
|
|
34
34
|
let(:resolution) { resolver.resolve(spec) }
|
35
35
|
|
36
|
-
specify { resolution.
|
36
|
+
specify { expect(resolution).to be_correct }
|
37
37
|
|
38
38
|
end
|
39
39
|
|
@@ -63,7 +63,7 @@ module Librarian
|
|
63
63
|
|
64
64
|
let(:resolution) { resolver.resolve(spec) }
|
65
65
|
|
66
|
-
specify { resolution.
|
66
|
+
specify { expect(resolution).to be_correct }
|
67
67
|
|
68
68
|
end
|
69
69
|
|
@@ -94,16 +94,16 @@ module Librarian
|
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should have the expected number of sources" do
|
97
|
-
spec.
|
97
|
+
expect(spec).to have(2).sources
|
98
98
|
end
|
99
99
|
|
100
100
|
let(:resolution) { resolver.resolve(spec) }
|
101
101
|
|
102
|
-
specify { resolution.
|
102
|
+
specify { expect(resolution).to be_correct }
|
103
103
|
|
104
104
|
it "should have the manifest from the final source with a matching manifest" do
|
105
105
|
manifest = resolution.manifests.find{|m| m.name == "butter"}
|
106
|
-
manifest.source.name.
|
106
|
+
expect(manifest.source.name).to eq "source-2"
|
107
107
|
end
|
108
108
|
|
109
109
|
end
|
@@ -129,7 +129,7 @@ module Librarian
|
|
129
129
|
|
130
130
|
let(:resolution) { resolver.resolve(spec) }
|
131
131
|
|
132
|
-
specify { resolution.
|
132
|
+
specify { expect(resolution).to be_nil }
|
133
133
|
|
134
134
|
end
|
135
135
|
|
@@ -157,7 +157,48 @@ module Librarian
|
|
157
157
|
|
158
158
|
let(:resolution) { resolver.resolve(spec) }
|
159
159
|
|
160
|
-
specify { resolution.
|
160
|
+
specify { expect(resolution).to be_nil }
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
context "a specfile with cyclic constraints" do
|
165
|
+
|
166
|
+
before do
|
167
|
+
env.registry :clear => true do
|
168
|
+
source 'source-1' do
|
169
|
+
spec 'butter', '1.0' do
|
170
|
+
dependency 'jam', '2.0'
|
171
|
+
end
|
172
|
+
spec 'jam', '2.0' do
|
173
|
+
dependency 'butter', '1.0'
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
let(:spec) do
|
180
|
+
env.dsl do
|
181
|
+
src 'source-1'
|
182
|
+
dep 'butter'
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
let(:resolution) { resolver.resolve(spec) }
|
187
|
+
|
188
|
+
context "when cyclic resolutions are forbidden" do
|
189
|
+
let(:resolver) { env.resolver(:cyclic => false) }
|
190
|
+
|
191
|
+
specify { expect(resolution).to be_nil }
|
192
|
+
end
|
193
|
+
|
194
|
+
context "when cyclic resolutions are permitted" do
|
195
|
+
let(:resolver) { env.resolver(:cyclic => true) }
|
196
|
+
|
197
|
+
it "should have all the manifests" do
|
198
|
+
manifest_names = resolution.manifests.map(&:name).sort
|
199
|
+
expect(manifest_names).to be == %w[butter jam]
|
200
|
+
end
|
201
|
+
end
|
161
202
|
|
162
203
|
end
|
163
204
|
|
@@ -179,10 +220,10 @@ module Librarian
|
|
179
220
|
dep 'jam'
|
180
221
|
end
|
181
222
|
first_resolution = resolver.resolve(first_spec)
|
182
|
-
first_resolution.
|
223
|
+
expect(first_resolution).to be_correct
|
183
224
|
first_manifests = first_resolution.manifests
|
184
225
|
first_manifests_index = Hash[first_manifests.map{|m| [m.name, m]}]
|
185
|
-
first_manifests_index['butter'].version.to_s.
|
226
|
+
expect(first_manifests_index['butter'].version.to_s).to eq '1.1'
|
186
227
|
|
187
228
|
second_spec = env.dsl do
|
188
229
|
src 'source-1'
|
@@ -191,10 +232,10 @@ module Librarian
|
|
191
232
|
end
|
192
233
|
locked_manifests = ManifestSet.deep_strip(first_manifests, ['butter'])
|
193
234
|
second_resolution =resolver.resolve(second_spec, locked_manifests)
|
194
|
-
second_resolution.
|
235
|
+
expect(second_resolution).to be_correct
|
195
236
|
second_manifests = second_resolution.manifests
|
196
237
|
second_manifests_index = Hash[second_manifests.map{|m| [m.name, m]}]
|
197
|
-
second_manifests_index['butter'].version.to_s.
|
238
|
+
expect(second_manifests_index['butter'].version.to_s).to eq '1.0'
|
198
239
|
end
|
199
240
|
|
200
241
|
end
|
@@ -215,22 +256,22 @@ module Librarian
|
|
215
256
|
dep 'butter'
|
216
257
|
end
|
217
258
|
lock = resolver.resolve(spec)
|
218
|
-
lock.
|
259
|
+
expect(lock).to be_correct
|
219
260
|
|
220
261
|
spec = env.dsl do
|
221
262
|
src 'source-1'
|
222
263
|
dep 'butter', :src => 'source-2'
|
223
264
|
end
|
224
265
|
changes = SpecChangeSet.new(env, spec, lock)
|
225
|
-
changes.
|
266
|
+
expect(changes).to_not be_same
|
226
267
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
227
|
-
manifests.
|
268
|
+
expect(manifests).to_not have_key('butter')
|
228
269
|
lock = resolver.resolve(spec, changes.analyze)
|
229
|
-
lock.
|
230
|
-
lock.manifests.map{|m| m.name}.
|
270
|
+
expect(lock).to be_correct
|
271
|
+
expect(lock.manifests.map{|m| m.name}).to include('butter')
|
231
272
|
manifest = lock.manifests.find{|m| m.name == 'butter'}
|
232
|
-
manifest.
|
233
|
-
manifest.source.name.
|
273
|
+
expect(manifest).to_not be_nil
|
274
|
+
expect(manifest.source.name).to eq 'source-2'
|
234
275
|
end
|
235
276
|
|
236
277
|
end
|
@@ -247,9 +288,9 @@ module Librarian
|
|
247
288
|
it "loads the specfile with the __FILE__" do
|
248
289
|
write! specfile_path, "src __FILE__"
|
249
290
|
spec = env.dsl(specfile_path)
|
250
|
-
spec.sources.
|
291
|
+
expect(spec.sources).to have(1).item
|
251
292
|
source = spec.sources.first
|
252
|
-
source.name.
|
293
|
+
expect(source.name).to eq specfile_path.to_s
|
253
294
|
end
|
254
295
|
|
255
296
|
end
|
@@ -23,18 +23,18 @@ module Librarian
|
|
23
23
|
dep 'jam'
|
24
24
|
end
|
25
25
|
lock = resolver.resolve(spec)
|
26
|
-
lock.
|
26
|
+
expect(lock).to be_correct
|
27
27
|
|
28
28
|
spec = env.dsl do
|
29
29
|
src 'source-1'
|
30
30
|
dep 'jam'
|
31
31
|
end
|
32
32
|
changes = described_class.new(env, spec, lock)
|
33
|
-
changes.
|
33
|
+
expect(changes).to_not be_same
|
34
34
|
|
35
35
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
36
|
-
manifests.
|
37
|
-
manifests.
|
36
|
+
expect(manifests).to have_key('jam')
|
37
|
+
expect(manifests).to_not have_key('butter')
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
@@ -53,7 +53,7 @@ module Librarian
|
|
53
53
|
dep 'jam'
|
54
54
|
end
|
55
55
|
lock = resolver.resolve(spec)
|
56
|
-
lock.
|
56
|
+
expect(lock).to be_correct
|
57
57
|
|
58
58
|
spec = env.dsl do
|
59
59
|
src 'source-1'
|
@@ -61,10 +61,10 @@ module Librarian
|
|
61
61
|
dep 'jam'
|
62
62
|
end
|
63
63
|
changes = described_class.new(env, spec, lock)
|
64
|
-
changes.
|
64
|
+
expect(changes).to_not be_same
|
65
65
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
66
|
-
manifests.
|
67
|
-
manifests.
|
66
|
+
expect(manifests).to have_key('jam')
|
67
|
+
expect(manifests).to_not have_key('butter')
|
68
68
|
end
|
69
69
|
|
70
70
|
end
|
@@ -87,7 +87,7 @@ module Librarian
|
|
87
87
|
dep 'jam', '= 1.1'
|
88
88
|
end
|
89
89
|
lock = resolver.resolve(spec)
|
90
|
-
lock.
|
90
|
+
expect(lock).to be_correct
|
91
91
|
|
92
92
|
spec = env.dsl do
|
93
93
|
src 'source-1'
|
@@ -95,10 +95,10 @@ module Librarian
|
|
95
95
|
dep 'jam', '>= 1.0'
|
96
96
|
end
|
97
97
|
changes = described_class.new(env, spec, lock)
|
98
|
-
changes.
|
98
|
+
expect(changes).to_not be_same
|
99
99
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
100
|
-
manifests.
|
101
|
-
manifests.
|
100
|
+
expect(manifests).to have_key('butter')
|
101
|
+
expect(manifests).to have_key('jam')
|
102
102
|
end
|
103
103
|
|
104
104
|
end
|
@@ -119,7 +119,7 @@ module Librarian
|
|
119
119
|
dep 'jam', '= 1.0'
|
120
120
|
end
|
121
121
|
lock = resolver.resolve(spec)
|
122
|
-
lock.
|
122
|
+
expect(lock).to be_correct
|
123
123
|
|
124
124
|
spec = env.dsl do
|
125
125
|
src 'source-1'
|
@@ -127,10 +127,10 @@ module Librarian
|
|
127
127
|
dep 'jam', '>= 1.1'
|
128
128
|
end
|
129
129
|
changes = described_class.new(env, spec, lock)
|
130
|
-
changes.
|
130
|
+
expect(changes).to_not be_same
|
131
131
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
132
|
-
manifests.
|
133
|
-
manifests.
|
132
|
+
expect(manifests).to have_key('butter')
|
133
|
+
expect(manifests).to_not have_key('jam')
|
134
134
|
end
|
135
135
|
|
136
136
|
end
|
@@ -152,16 +152,16 @@ module Librarian
|
|
152
152
|
dep 'butter'
|
153
153
|
end
|
154
154
|
lock = resolver.resolve(spec)
|
155
|
-
lock.
|
155
|
+
expect(lock).to be_correct
|
156
156
|
|
157
157
|
spec = env.dsl do
|
158
158
|
src 'source-1'
|
159
159
|
dep 'butter', :src => 'source-2'
|
160
160
|
end
|
161
161
|
changes = described_class.new(env, spec, lock)
|
162
|
-
changes.
|
162
|
+
expect(changes).to_not be_same
|
163
163
|
manifests = ManifestSet.new(changes.analyze).to_hash
|
164
|
-
manifests.
|
164
|
+
expect(manifests).to_not have_key('butter')
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librarian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay Feldblum
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- LICENSE.txt
|
110
110
|
- README.md
|
111
111
|
- Rakefile
|
112
|
+
- VERSION
|
112
113
|
- lib/librarian.rb
|
113
114
|
- lib/librarian/action.rb
|
114
115
|
- lib/librarian/action/base.rb
|
@@ -118,6 +119,7 @@ files:
|
|
118
119
|
- lib/librarian/action/persist_resolution_mixin.rb
|
119
120
|
- lib/librarian/action/resolve.rb
|
120
121
|
- lib/librarian/action/update.rb
|
122
|
+
- lib/librarian/algorithms.rb
|
121
123
|
- lib/librarian/cli.rb
|
122
124
|
- lib/librarian/cli/manifest_presenter.rb
|
123
125
|
- lib/librarian/config.rb
|
@@ -130,6 +132,7 @@ files:
|
|
130
132
|
- lib/librarian/dsl/receiver.rb
|
131
133
|
- lib/librarian/dsl/target.rb
|
132
134
|
- lib/librarian/environment.rb
|
135
|
+
- lib/librarian/environment/runtime_cache.rb
|
133
136
|
- lib/librarian/error.rb
|
134
137
|
- lib/librarian/helpers.rb
|
135
138
|
- lib/librarian/linter/source_linter.rb
|
@@ -172,17 +175,22 @@ files:
|
|
172
175
|
- spec/functional/source/git_spec.rb
|
173
176
|
- spec/support/fakefs.rb
|
174
177
|
- spec/support/method_patch_macro.rb
|
178
|
+
- spec/support/project_path_macro.rb
|
175
179
|
- spec/support/with_env_macro.rb
|
176
180
|
- spec/unit/action/base_spec.rb
|
177
181
|
- spec/unit/action/clean_spec.rb
|
178
182
|
- spec/unit/action/ensure_spec.rb
|
179
183
|
- spec/unit/action/install_spec.rb
|
184
|
+
- spec/unit/algorithms_spec.rb
|
180
185
|
- spec/unit/config/database_spec.rb
|
186
|
+
- spec/unit/dependency/requirement_spec.rb
|
181
187
|
- spec/unit/dependency_spec.rb
|
182
188
|
- spec/unit/dsl_spec.rb
|
189
|
+
- spec/unit/environment/runtime_cache_spec.rb
|
183
190
|
- spec/unit/environment_spec.rb
|
184
191
|
- spec/unit/lockfile/parser_spec.rb
|
185
192
|
- spec/unit/lockfile_spec.rb
|
193
|
+
- spec/unit/manifest/version_spec.rb
|
186
194
|
- spec/unit/manifest_set_spec.rb
|
187
195
|
- spec/unit/manifest_spec.rb
|
188
196
|
- spec/unit/mock/environment_spec.rb
|
@@ -190,8 +198,9 @@ files:
|
|
190
198
|
- spec/unit/resolver_spec.rb
|
191
199
|
- spec/unit/source/git_spec.rb
|
192
200
|
- spec/unit/spec_change_set_spec.rb
|
193
|
-
homepage:
|
194
|
-
licenses:
|
201
|
+
homepage: https://github.com/applicationsonline/librarian
|
202
|
+
licenses:
|
203
|
+
- MIT
|
195
204
|
metadata: {}
|
196
205
|
post_install_message:
|
197
206
|
rdoc_options: []
|
@@ -209,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
218
|
version: '0'
|
210
219
|
requirements: []
|
211
220
|
rubyforge_project:
|
212
|
-
rubygems_version: 2.
|
221
|
+
rubygems_version: 2.1.3
|
213
222
|
signing_key:
|
214
223
|
specification_version: 4
|
215
224
|
summary: A Framework for Bundlers.
|
@@ -220,17 +229,22 @@ test_files:
|
|
220
229
|
- spec/functional/source/git_spec.rb
|
221
230
|
- spec/support/fakefs.rb
|
222
231
|
- spec/support/method_patch_macro.rb
|
232
|
+
- spec/support/project_path_macro.rb
|
223
233
|
- spec/support/with_env_macro.rb
|
224
234
|
- spec/unit/action/base_spec.rb
|
225
235
|
- spec/unit/action/clean_spec.rb
|
226
236
|
- spec/unit/action/ensure_spec.rb
|
227
237
|
- spec/unit/action/install_spec.rb
|
238
|
+
- spec/unit/algorithms_spec.rb
|
228
239
|
- spec/unit/config/database_spec.rb
|
240
|
+
- spec/unit/dependency/requirement_spec.rb
|
229
241
|
- spec/unit/dependency_spec.rb
|
230
242
|
- spec/unit/dsl_spec.rb
|
243
|
+
- spec/unit/environment/runtime_cache_spec.rb
|
231
244
|
- spec/unit/environment_spec.rb
|
232
245
|
- spec/unit/lockfile/parser_spec.rb
|
233
246
|
- spec/unit/lockfile_spec.rb
|
247
|
+
- spec/unit/manifest/version_spec.rb
|
234
248
|
- spec/unit/manifest_set_spec.rb
|
235
249
|
- spec/unit/manifest_spec.rb
|
236
250
|
- spec/unit/mock/environment_spec.rb
|