librarianp 0.1.2

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.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +10 -0
  5. data/CHANGELOG.md +255 -0
  6. data/Gemfile +8 -0
  7. data/Gemfile.lock +235 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +55 -0
  10. data/Rakefile +28 -0
  11. data/VERSION +1 -0
  12. data/lib/librarian/action/base.rb +24 -0
  13. data/lib/librarian/action/clean.rb +44 -0
  14. data/lib/librarian/action/ensure.rb +24 -0
  15. data/lib/librarian/action/install.rb +95 -0
  16. data/lib/librarian/action/persist_resolution_mixin.rb +51 -0
  17. data/lib/librarian/action/resolve.rb +46 -0
  18. data/lib/librarian/action/update.rb +44 -0
  19. data/lib/librarian/action.rb +5 -0
  20. data/lib/librarian/algorithms.rb +133 -0
  21. data/lib/librarian/cli/manifest_presenter.rb +89 -0
  22. data/lib/librarian/cli.rb +225 -0
  23. data/lib/librarian/config/database.rb +205 -0
  24. data/lib/librarian/config/file_source.rb +47 -0
  25. data/lib/librarian/config/hash_source.rb +33 -0
  26. data/lib/librarian/config/source.rb +149 -0
  27. data/lib/librarian/config.rb +7 -0
  28. data/lib/librarian/dependency.rb +153 -0
  29. data/lib/librarian/dsl/receiver.rb +42 -0
  30. data/lib/librarian/dsl/target.rb +171 -0
  31. data/lib/librarian/dsl.rb +102 -0
  32. data/lib/librarian/environment/runtime_cache.rb +101 -0
  33. data/lib/librarian/environment.rb +230 -0
  34. data/lib/librarian/error.rb +4 -0
  35. data/lib/librarian/helpers.rb +29 -0
  36. data/lib/librarian/linter/source_linter.rb +55 -0
  37. data/lib/librarian/lockfile/compiler.rb +66 -0
  38. data/lib/librarian/lockfile/parser.rb +123 -0
  39. data/lib/librarian/lockfile.rb +29 -0
  40. data/lib/librarian/logger.rb +46 -0
  41. data/lib/librarian/manifest.rb +146 -0
  42. data/lib/librarian/manifest_set.rb +150 -0
  43. data/lib/librarian/mock/cli.rb +19 -0
  44. data/lib/librarian/mock/dsl.rb +15 -0
  45. data/lib/librarian/mock/environment.rb +21 -0
  46. data/lib/librarian/mock/extension.rb +9 -0
  47. data/lib/librarian/mock/source/mock/registry.rb +83 -0
  48. data/lib/librarian/mock/source/mock.rb +80 -0
  49. data/lib/librarian/mock/source.rb +1 -0
  50. data/lib/librarian/mock/version.rb +5 -0
  51. data/lib/librarian/mock.rb +1 -0
  52. data/lib/librarian/posix.rb +129 -0
  53. data/lib/librarian/resolution.rb +46 -0
  54. data/lib/librarian/resolver/implementation.rb +238 -0
  55. data/lib/librarian/resolver.rb +94 -0
  56. data/lib/librarian/rspec/support/cli_macro.rb +120 -0
  57. data/lib/librarian/source/basic_api.rb +45 -0
  58. data/lib/librarian/source/git/repository.rb +193 -0
  59. data/lib/librarian/source/git.rb +172 -0
  60. data/lib/librarian/source/local.rb +54 -0
  61. data/lib/librarian/source/path.rb +56 -0
  62. data/lib/librarian/source.rb +2 -0
  63. data/lib/librarian/spec.rb +13 -0
  64. data/lib/librarian/spec_change_set.rb +173 -0
  65. data/lib/librarian/specfile.rb +19 -0
  66. data/lib/librarian/support/abstract_method.rb +21 -0
  67. data/lib/librarian/ui.rb +64 -0
  68. data/lib/librarian/version.rb +3 -0
  69. data/lib/librarian.rb +11 -0
  70. data/librarian.gemspec +47 -0
  71. data/spec/functional/cli_spec.rb +27 -0
  72. data/spec/functional/posix_spec.rb +32 -0
  73. data/spec/functional/source/git/repository_spec.rb +199 -0
  74. data/spec/functional/source/git_spec.rb +174 -0
  75. data/spec/support/fakefs.rb +37 -0
  76. data/spec/support/method_patch_macro.rb +30 -0
  77. data/spec/support/project_path_macro.rb +14 -0
  78. data/spec/support/with_env_macro.rb +22 -0
  79. data/spec/unit/action/base_spec.rb +18 -0
  80. data/spec/unit/action/clean_spec.rb +102 -0
  81. data/spec/unit/action/ensure_spec.rb +37 -0
  82. data/spec/unit/action/install_spec.rb +111 -0
  83. data/spec/unit/algorithms_spec.rb +131 -0
  84. data/spec/unit/config/database_spec.rb +320 -0
  85. data/spec/unit/dependency/requirement_spec.rb +12 -0
  86. data/spec/unit/dependency_spec.rb +212 -0
  87. data/spec/unit/dsl_spec.rb +173 -0
  88. data/spec/unit/environment/runtime_cache_spec.rb +73 -0
  89. data/spec/unit/environment_spec.rb +209 -0
  90. data/spec/unit/lockfile/parser_spec.rb +162 -0
  91. data/spec/unit/lockfile_spec.rb +65 -0
  92. data/spec/unit/manifest/version_spec.rb +11 -0
  93. data/spec/unit/manifest_set_spec.rb +202 -0
  94. data/spec/unit/manifest_spec.rb +36 -0
  95. data/spec/unit/mock/environment_spec.rb +25 -0
  96. data/spec/unit/mock/source/mock_spec.rb +22 -0
  97. data/spec/unit/resolver_spec.rb +299 -0
  98. data/spec/unit/source/git_spec.rb +29 -0
  99. data/spec/unit/spec_change_set_spec.rb +169 -0
  100. metadata +257 -0
@@ -0,0 +1,169 @@
1
+ require 'librarian'
2
+ require 'librarian/spec_change_set'
3
+ require 'librarian/mock'
4
+
5
+ module Librarian
6
+ describe SpecChangeSet do
7
+
8
+ let(:env) { Mock::Environment.new }
9
+ let(:resolver) { env.resolver }
10
+
11
+ context "a simple root removal" do
12
+
13
+ it "should work" do
14
+ env.registry :clear => true do
15
+ source 'source-1' do
16
+ spec 'butter', '1.0'
17
+ spec 'jam', '1.0'
18
+ end
19
+ end
20
+ spec = env.dsl do
21
+ src 'source-1'
22
+ dep 'butter'
23
+ dep 'jam'
24
+ end
25
+ lock = resolver.resolve(spec)
26
+ expect(lock).to be_correct
27
+
28
+ spec = env.dsl do
29
+ src 'source-1'
30
+ dep 'jam'
31
+ end
32
+ changes = described_class.new(env, spec, lock)
33
+ expect(changes).to_not be_same
34
+
35
+ manifests = ManifestSet.new(changes.analyze).to_hash
36
+ expect(manifests).to have_key('jam')
37
+ expect(manifests).to_not have_key('butter')
38
+ end
39
+
40
+ end
41
+
42
+ context "a simple root add" do
43
+
44
+ it "should work" do
45
+ env.registry :clear => true do
46
+ source 'source-1' do
47
+ spec 'butter', '1.0'
48
+ spec 'jam', '1.0'
49
+ end
50
+ end
51
+ spec = env.dsl do
52
+ src 'source-1'
53
+ dep 'jam'
54
+ end
55
+ lock = resolver.resolve(spec)
56
+ expect(lock).to be_correct
57
+
58
+ spec = env.dsl do
59
+ src 'source-1'
60
+ dep 'butter'
61
+ dep 'jam'
62
+ end
63
+ changes = described_class.new(env, spec, lock)
64
+ expect(changes).to_not be_same
65
+ manifests = ManifestSet.new(changes.analyze).to_hash
66
+ expect(manifests).to have_key('jam')
67
+ expect(manifests).to_not have_key('butter')
68
+ end
69
+
70
+ end
71
+
72
+ context "a simple root change" do
73
+
74
+ context "when the change is consistent" do
75
+
76
+ it "should work" do
77
+ env.registry :clear => true do
78
+ source 'source-1' do
79
+ spec 'butter', '1.0'
80
+ spec 'jam', '1.0'
81
+ spec 'jam', '1.1'
82
+ end
83
+ end
84
+ spec = env.dsl do
85
+ src 'source-1'
86
+ dep 'butter'
87
+ dep 'jam', '= 1.1'
88
+ end
89
+ lock = resolver.resolve(spec)
90
+ expect(lock).to be_correct
91
+
92
+ spec = env.dsl do
93
+ src 'source-1'
94
+ dep 'butter'
95
+ dep 'jam', '>= 1.0'
96
+ end
97
+ changes = described_class.new(env, spec, lock)
98
+ expect(changes).to_not be_same
99
+ manifests = ManifestSet.new(changes.analyze).to_hash
100
+ expect(manifests).to have_key('butter')
101
+ expect(manifests).to have_key('jam')
102
+ end
103
+
104
+ end
105
+
106
+ context "when the change is inconsistent" do
107
+
108
+ it "should work" do
109
+ env.registry :clear => true do
110
+ source 'source-1' do
111
+ spec 'butter', '1.0'
112
+ spec 'jam', '1.0'
113
+ spec 'jam', '1.1'
114
+ end
115
+ end
116
+ spec = env.dsl do
117
+ src 'source-1'
118
+ dep 'butter'
119
+ dep 'jam', '= 1.0'
120
+ end
121
+ lock = resolver.resolve(spec)
122
+ expect(lock).to be_correct
123
+
124
+ spec = env.dsl do
125
+ src 'source-1'
126
+ dep 'butter'
127
+ dep 'jam', '>= 1.1'
128
+ end
129
+ changes = described_class.new(env, spec, lock)
130
+ expect(changes).to_not be_same
131
+ manifests = ManifestSet.new(changes.analyze).to_hash
132
+ expect(manifests).to have_key('butter')
133
+ expect(manifests).to_not have_key('jam')
134
+ end
135
+
136
+ end
137
+
138
+ end
139
+
140
+ context "a simple root source change" do
141
+ it "should work" do
142
+ env.registry :clear => true do
143
+ source 'source-1' do
144
+ spec 'butter', '1.0'
145
+ end
146
+ source 'source-2' do
147
+ spec 'butter', '1.0'
148
+ end
149
+ end
150
+ spec = env.dsl do
151
+ src 'source-1'
152
+ dep 'butter'
153
+ end
154
+ lock = resolver.resolve(spec)
155
+ expect(lock).to be_correct
156
+
157
+ spec = env.dsl do
158
+ src 'source-1'
159
+ dep 'butter', :src => 'source-2'
160
+ end
161
+ changes = described_class.new(env, spec, lock)
162
+ expect(changes).to_not be_same
163
+ manifests = ManifestSet.new(changes.analyze).to_hash
164
+ expect(manifests).to_not have_key('butter')
165
+ end
166
+ end
167
+
168
+ end
169
+ end
metadata ADDED
@@ -0,0 +1,257 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: librarianp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Jay Feldblum
8
+ - Carlos Sanchez
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-02-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.15'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.15'
28
+ - !ruby/object:Gem::Dependency
29
+ name: highline
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.14'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.14'
70
+ - !ruby/object:Gem::Dependency
71
+ name: json
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: fakefs
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 0.4.2
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 0.4.2
98
+ description: A Framework for Bundlers, used by librarian-puppet.
99
+ email:
100
+ - y_feldblum@yahoo.com
101
+ - carlos@apache.org
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".travis.yml"
109
+ - CHANGELOG.md
110
+ - Gemfile
111
+ - Gemfile.lock
112
+ - LICENSE.txt
113
+ - README.md
114
+ - Rakefile
115
+ - VERSION
116
+ - lib/librarian.rb
117
+ - lib/librarian/action.rb
118
+ - lib/librarian/action/base.rb
119
+ - lib/librarian/action/clean.rb
120
+ - lib/librarian/action/ensure.rb
121
+ - lib/librarian/action/install.rb
122
+ - lib/librarian/action/persist_resolution_mixin.rb
123
+ - lib/librarian/action/resolve.rb
124
+ - lib/librarian/action/update.rb
125
+ - lib/librarian/algorithms.rb
126
+ - lib/librarian/cli.rb
127
+ - lib/librarian/cli/manifest_presenter.rb
128
+ - lib/librarian/config.rb
129
+ - lib/librarian/config/database.rb
130
+ - lib/librarian/config/file_source.rb
131
+ - lib/librarian/config/hash_source.rb
132
+ - lib/librarian/config/source.rb
133
+ - lib/librarian/dependency.rb
134
+ - lib/librarian/dsl.rb
135
+ - lib/librarian/dsl/receiver.rb
136
+ - lib/librarian/dsl/target.rb
137
+ - lib/librarian/environment.rb
138
+ - lib/librarian/environment/runtime_cache.rb
139
+ - lib/librarian/error.rb
140
+ - lib/librarian/helpers.rb
141
+ - lib/librarian/linter/source_linter.rb
142
+ - lib/librarian/lockfile.rb
143
+ - lib/librarian/lockfile/compiler.rb
144
+ - lib/librarian/lockfile/parser.rb
145
+ - lib/librarian/logger.rb
146
+ - lib/librarian/manifest.rb
147
+ - lib/librarian/manifest_set.rb
148
+ - lib/librarian/mock.rb
149
+ - lib/librarian/mock/cli.rb
150
+ - lib/librarian/mock/dsl.rb
151
+ - lib/librarian/mock/environment.rb
152
+ - lib/librarian/mock/extension.rb
153
+ - lib/librarian/mock/source.rb
154
+ - lib/librarian/mock/source/mock.rb
155
+ - lib/librarian/mock/source/mock/registry.rb
156
+ - lib/librarian/mock/version.rb
157
+ - lib/librarian/posix.rb
158
+ - lib/librarian/resolution.rb
159
+ - lib/librarian/resolver.rb
160
+ - lib/librarian/resolver/implementation.rb
161
+ - lib/librarian/rspec/support/cli_macro.rb
162
+ - lib/librarian/source.rb
163
+ - lib/librarian/source/basic_api.rb
164
+ - lib/librarian/source/git.rb
165
+ - lib/librarian/source/git/repository.rb
166
+ - lib/librarian/source/local.rb
167
+ - lib/librarian/source/path.rb
168
+ - lib/librarian/spec.rb
169
+ - lib/librarian/spec_change_set.rb
170
+ - lib/librarian/specfile.rb
171
+ - lib/librarian/support/abstract_method.rb
172
+ - lib/librarian/ui.rb
173
+ - lib/librarian/version.rb
174
+ - librarian.gemspec
175
+ - spec/functional/cli_spec.rb
176
+ - spec/functional/posix_spec.rb
177
+ - spec/functional/source/git/repository_spec.rb
178
+ - spec/functional/source/git_spec.rb
179
+ - spec/support/fakefs.rb
180
+ - spec/support/method_patch_macro.rb
181
+ - spec/support/project_path_macro.rb
182
+ - spec/support/with_env_macro.rb
183
+ - spec/unit/action/base_spec.rb
184
+ - spec/unit/action/clean_spec.rb
185
+ - spec/unit/action/ensure_spec.rb
186
+ - spec/unit/action/install_spec.rb
187
+ - spec/unit/algorithms_spec.rb
188
+ - spec/unit/config/database_spec.rb
189
+ - spec/unit/dependency/requirement_spec.rb
190
+ - spec/unit/dependency_spec.rb
191
+ - spec/unit/dsl_spec.rb
192
+ - spec/unit/environment/runtime_cache_spec.rb
193
+ - spec/unit/environment_spec.rb
194
+ - spec/unit/lockfile/parser_spec.rb
195
+ - spec/unit/lockfile_spec.rb
196
+ - spec/unit/manifest/version_spec.rb
197
+ - spec/unit/manifest_set_spec.rb
198
+ - spec/unit/manifest_spec.rb
199
+ - spec/unit/mock/environment_spec.rb
200
+ - spec/unit/mock/source/mock_spec.rb
201
+ - spec/unit/resolver_spec.rb
202
+ - spec/unit/source/git_spec.rb
203
+ - spec/unit/spec_change_set_spec.rb
204
+ homepage: https://github.com/carlossg/librarian
205
+ licenses:
206
+ - MIT
207
+ metadata: {}
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ requirements: []
223
+ rubyforge_project:
224
+ rubygems_version: 2.4.3
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: A Framework for Bundlers.
228
+ test_files:
229
+ - spec/functional/cli_spec.rb
230
+ - spec/functional/posix_spec.rb
231
+ - spec/functional/source/git/repository_spec.rb
232
+ - spec/functional/source/git_spec.rb
233
+ - spec/support/fakefs.rb
234
+ - spec/support/method_patch_macro.rb
235
+ - spec/support/project_path_macro.rb
236
+ - spec/support/with_env_macro.rb
237
+ - spec/unit/action/base_spec.rb
238
+ - spec/unit/action/clean_spec.rb
239
+ - spec/unit/action/ensure_spec.rb
240
+ - spec/unit/action/install_spec.rb
241
+ - spec/unit/algorithms_spec.rb
242
+ - spec/unit/config/database_spec.rb
243
+ - spec/unit/dependency/requirement_spec.rb
244
+ - spec/unit/dependency_spec.rb
245
+ - spec/unit/dsl_spec.rb
246
+ - spec/unit/environment/runtime_cache_spec.rb
247
+ - spec/unit/environment_spec.rb
248
+ - spec/unit/lockfile/parser_spec.rb
249
+ - spec/unit/lockfile_spec.rb
250
+ - spec/unit/manifest/version_spec.rb
251
+ - spec/unit/manifest_set_spec.rb
252
+ - spec/unit/manifest_spec.rb
253
+ - spec/unit/mock/environment_spec.rb
254
+ - spec/unit/mock/source/mock_spec.rb
255
+ - spec/unit/resolver_spec.rb
256
+ - spec/unit/source/git_spec.rb
257
+ - spec/unit/spec_change_set_spec.rb