librarian 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/.gitignore +4 -0
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +6 -1
  4. data/lib/librarian/action/persist_resolution_mixin.rb +51 -0
  5. data/lib/librarian/action/resolve.rb +3 -38
  6. data/lib/librarian/action/update.rb +4 -38
  7. data/lib/librarian/chef/dsl.rb +1 -0
  8. data/lib/librarian/chef/source.rb +1 -0
  9. data/lib/librarian/chef/source/github.rb +27 -0
  10. data/lib/librarian/chef/source/site.rb +51 -51
  11. data/lib/librarian/cli.rb +31 -23
  12. data/lib/librarian/cli/manifest_presenter.rb +36 -22
  13. data/lib/librarian/dependency.rb +60 -0
  14. data/lib/librarian/environment.rb +13 -1
  15. data/lib/librarian/linter/source_linter.rb +55 -0
  16. data/lib/librarian/lockfile/parser.rb +39 -16
  17. data/lib/librarian/manifest.rb +8 -0
  18. data/lib/librarian/manifest_set.rb +5 -7
  19. data/lib/librarian/mock/source/mock.rb +4 -21
  20. data/lib/librarian/resolution.rb +1 -1
  21. data/lib/librarian/resolver.rb +15 -12
  22. data/lib/librarian/resolver/implementation.rb +166 -75
  23. data/lib/librarian/source/basic_api.rb +45 -0
  24. data/lib/librarian/source/git.rb +4 -22
  25. data/lib/librarian/source/git/repository.rb +1 -1
  26. data/lib/librarian/source/local.rb +0 -7
  27. data/lib/librarian/source/path.rb +4 -22
  28. data/lib/librarian/version.rb +1 -1
  29. data/librarian.gemspec +3 -3
  30. data/spec/functional/chef/source/site_spec.rb +150 -100
  31. data/spec/functional/source/git/repository_spec.rb +2 -1
  32. data/spec/{functional → integration}/chef/source/git_spec.rb +12 -3
  33. data/spec/integration/chef/source/site_spec.rb +217 -0
  34. data/spec/support/cli_macro.rb +4 -12
  35. data/spec/support/method_patch_macro.rb +30 -0
  36. data/spec/unit/config/database_spec.rb +8 -0
  37. data/spec/unit/dependency_spec.rb +176 -0
  38. data/spec/unit/environment_spec.rb +76 -7
  39. data/spec/unit/resolver_spec.rb +2 -2
  40. metadata +52 -46
@@ -63,19 +63,11 @@ module CliMacro
63
63
  end
64
64
 
65
65
  def cli!(*args)
66
- Dir.chdir(pwd) do
67
- described_class.with_environment do |environment|
68
- begin
69
- @shell = FakeShell.new
70
- @exit_status = nil
66
+ @shell = FakeShell.new
67
+ @exit_status = Dir.chdir(pwd) do
68
+ described_class.with_environment do
69
+ described_class.returning_status do
71
70
  described_class.start args, :shell => @shell
72
- @exit_status = 0
73
- rescue Librarian::Error => e
74
- environment.ui.error e.message
75
- environment.ui.debug e.backtrace.join("\n")
76
- @exit_status = e.respond_to?(:status_code) ? e.status_code : 1
77
- rescue Exception => e
78
- @exit_status = 1
79
71
  end
80
72
  end
81
73
  end
@@ -0,0 +1,30 @@
1
+ require "securerandom"
2
+
3
+ module MethodPatchMacro
4
+
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def with_module_method(mod, meth, &block)
11
+ tag = SecureRandom.hex(8)
12
+ orig_meth = "_#{tag}_#{meth}".to_sym
13
+ around do |example|
14
+ mod.module_eval do
15
+ alias_method orig_meth, meth
16
+ define_method meth, &block
17
+ end
18
+ begin
19
+ example.run
20
+ ensure
21
+ mod.module_eval do
22
+ alias_method meth, orig_meth
23
+ remove_method orig_meth
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ end
@@ -4,10 +4,18 @@ require "yaml"
4
4
 
5
5
  require "fakefs/spec_helpers"
6
6
 
7
+ require "support/method_patch_macro"
8
+
7
9
  require "librarian/config/database"
8
10
 
9
11
  describe Librarian::Config::Database do
10
12
  include FakeFS::SpecHelpers
13
+ include MethodPatchMacro
14
+
15
+ # FakeFS seems to need this because Kernel#Pathname was changed in 1.9.3-p286.
16
+ # It used to indicate the Pathname class by name, but now it references the
17
+ # Pathname class directly by object. FakeFS relies on the old behavior.
18
+ with_module_method(Kernel, :Pathname){|s| Pathname.new(s)}
11
19
 
12
20
  def write_yaml!(path, *yamlables)
13
21
  path = Pathname(path)
@@ -33,4 +33,180 @@ describe Librarian::Dependency do
33
33
 
34
34
  end
35
35
 
36
+ describe "#consistent_with?" do
37
+ def req(s) described_class::Requirement.new(s) end
38
+ def self.assert_consistent(a, b)
39
+ /^(.+):(\d+):in `(.+)'$/ =~ caller.first
40
+ line = $2.to_i
41
+
42
+ title = "is consistent with #{a.inspect} and #{b.inspect}"
43
+ module_eval <<-CODE, __FILE__, line
44
+ it #{title.inspect} do
45
+ a, b = req(#{a.inspect}), req(#{b.inspect})
46
+ expect(a).to be_consistent_with(b)
47
+ expect(a).to_not be_inconsistent_with(b)
48
+ expect(b).to be_consistent_with(a)
49
+ expect(b).to_not be_inconsistent_with(a)
50
+ end
51
+ CODE
52
+ end
53
+ def self.refute_consistent(a, b)
54
+ /^(.+):(\d+):in `(.+)'$/ =~ caller.first
55
+ line = $2.to_i
56
+
57
+ title = "is inconsistent with #{a.inspect} and #{b.inspect}"
58
+ module_eval <<-CODE, __FILE__, line
59
+ it #{title.inspect} do
60
+ a, b = req(#{a.inspect}), req(#{b.inspect})
61
+ expect(a).to_not be_consistent_with(b)
62
+ expect(a).to be_inconsistent_with(b)
63
+ expect(b).to_not be_consistent_with(a)
64
+ expect(b).to be_inconsistent_with(a)
65
+ end
66
+ CODE
67
+ end
68
+
69
+ # = =
70
+ assert_consistent "3", "3"
71
+ refute_consistent "3", "4"
72
+ refute_consistent "3", "0"
73
+ refute_consistent "0", "3"
74
+
75
+ # = !=
76
+ assert_consistent "3", "!= 4"
77
+ assert_consistent "3", "!= 0"
78
+ refute_consistent "3", "!= 3"
79
+
80
+ # = >
81
+ assert_consistent "3", "> 2"
82
+ refute_consistent "3", "> 3"
83
+ refute_consistent "3", "> 4"
84
+
85
+ # = <
86
+ assert_consistent "3", "< 4"
87
+ refute_consistent "3", "< 3"
88
+ refute_consistent "3", "< 2"
89
+
90
+ # = >=
91
+ assert_consistent "3", ">= 2"
92
+ assert_consistent "3", ">= 3"
93
+ refute_consistent "3", ">= 4"
94
+
95
+ # = <=
96
+ assert_consistent "3", "<= 4"
97
+ assert_consistent "3", "<= 3"
98
+ refute_consistent "3", "<= 2"
99
+
100
+ # = ~>
101
+ assert_consistent "3.4.1", "~> 3.4.1"
102
+ assert_consistent "3.4.2", "~> 3.4.1"
103
+ refute_consistent "3.4", "~> 3.4.1"
104
+ refute_consistent "3.5", "~> 3.4.1"
105
+
106
+ # != !=
107
+ assert_consistent "!= 3", "!= 3"
108
+ assert_consistent "!= 3", "!= 4"
109
+
110
+ # != >
111
+ assert_consistent "!= 3", "> 2"
112
+ assert_consistent "!= 3", "> 3"
113
+ assert_consistent "!= 3", "> 4"
114
+
115
+ # != <
116
+ assert_consistent "!= 3", "< 2"
117
+ assert_consistent "!= 3", "< 3"
118
+ assert_consistent "!= 3", "< 4"
119
+
120
+ # != >=
121
+ assert_consistent "!= 3", ">= 2"
122
+ assert_consistent "!= 3", ">= 3"
123
+ assert_consistent "!= 3", ">= 4"
124
+
125
+ # != <=
126
+ assert_consistent "!= 3", "<= 2"
127
+ assert_consistent "!= 3", "<= 3"
128
+ assert_consistent "!= 3", "<= 4"
129
+
130
+ # != ~>
131
+ assert_consistent "!= 3.4.1", "~> 3.4.1"
132
+ assert_consistent "!= 3.4.2", "~> 3.4.1"
133
+ assert_consistent "!= 3.5", "~> 3.4.1"
134
+
135
+ # > >
136
+ assert_consistent "> 3", "> 2"
137
+ assert_consistent "> 3", "> 3"
138
+ assert_consistent "> 3", "> 4"
139
+
140
+ # > <
141
+ assert_consistent "> 3", "< 4"
142
+ refute_consistent "> 3", "< 3"
143
+ refute_consistent "> 3", "< 2"
144
+
145
+ # > >=
146
+ assert_consistent "> 3", ">= 2"
147
+ assert_consistent "> 3", ">= 3"
148
+ assert_consistent "> 3", ">= 4"
149
+
150
+ # > <=
151
+ assert_consistent "> 3", "<= 4"
152
+ refute_consistent "> 3", "<= 3"
153
+ refute_consistent "> 3", "<= 2"
154
+
155
+ # > ~>
156
+ assert_consistent "> 3.3", "~> 3.4.1"
157
+ assert_consistent "> 3.4.1", "~> 3.4.1"
158
+ assert_consistent "> 3.4.2", "~> 3.4.1"
159
+ refute_consistent "> 3.5", "~> 3.4.1"
160
+
161
+ # < <
162
+ assert_consistent "< 3", "< 2"
163
+ assert_consistent "< 3", "< 3"
164
+ assert_consistent "< 3", "< 4"
165
+
166
+ # < >=
167
+ assert_consistent "< 3", ">= 2"
168
+ refute_consistent "< 3", ">= 3"
169
+ refute_consistent "< 3", ">= 4"
170
+
171
+ # < <=
172
+ assert_consistent "< 3", "<= 2"
173
+ assert_consistent "< 3", "<= 3"
174
+ assert_consistent "< 3", "<= 4"
175
+
176
+ # >= >=
177
+ assert_consistent ">= 3", ">= 2"
178
+ assert_consistent ">= 3", ">= 3"
179
+ assert_consistent ">= 3", ">= 4"
180
+
181
+ # >= <=
182
+ assert_consistent ">= 3", "<= 4"
183
+ assert_consistent ">= 3", "<= 3"
184
+ refute_consistent ">= 3", "<= 2"
185
+
186
+ # >= ~>
187
+ assert_consistent ">= 3.3", "~> 3.4.1"
188
+ assert_consistent ">= 3.4.1", "~> 3.4.1"
189
+ assert_consistent ">= 3.4.2", "~> 3.4.1"
190
+ refute_consistent ">= 3.5", "~> 3.4.1"
191
+
192
+ # <= <=
193
+ assert_consistent "<= 3", "<= 2"
194
+ assert_consistent "<= 3", "<= 3"
195
+ assert_consistent "<= 3", "<= 4"
196
+
197
+ # <= ~>
198
+ assert_consistent "<= 3.5", "~> 3.4.1"
199
+ assert_consistent "<= 3.4.1", "~> 3.4.1"
200
+ assert_consistent "<= 3.4.2", "~> 3.4.1"
201
+ refute_consistent "<= 3.3", "~> 3.4.1"
202
+
203
+ # ~> ~>
204
+ assert_consistent "~> 3.4.1", "~> 3.4.1"
205
+ assert_consistent "~> 3.4.2", "~> 3.4.1"
206
+ assert_consistent "~> 3.3", "~> 3.4.1"
207
+ refute_consistent "~> 3.3.3", "~> 3.4.1"
208
+ refute_consistent "~> 3.5", "~> 3.4.1"
209
+ refute_consistent "~> 3.5.4", "~> 3.4.1"
210
+ end
211
+
36
212
  end
@@ -51,36 +51,39 @@ module Librarian
51
51
  end
52
52
 
53
53
  describe "#net_http_class" do
54
-
54
+ let(:proxied_host) { "www.example.com" }
55
55
  context "sanity" do
56
56
  with_env "http_proxy" => nil
57
57
 
58
58
  it "should have the normal class" do
59
- env.net_http_class.should be Net::HTTP
59
+ env.net_http_class(proxied_host).should be Net::HTTP
60
60
  end
61
61
 
62
62
  it "should not be marked as a proxy class" do
63
- env.net_http_class.should_not be_proxy_class
63
+ env.net_http_class(proxied_host).should_not be_proxy_class
64
64
  end
65
65
  end
66
66
 
67
67
  context "with a complex proxy" do
68
68
  with_env "http_proxy" => "admin:secret@example.com"
69
69
 
70
+ it "should not by marked as a proxy class for localhost" do
71
+ env.net_http_class('localhost').should_not be_proxy_class
72
+ end
70
73
  it "should not have the normal class" do
71
- env.net_http_class.should_not be Net::HTTP
74
+ env.net_http_class(proxied_host).should_not be Net::HTTP
72
75
  end
73
76
 
74
77
  it "should have a subclass the normal class" do
75
- env.net_http_class.should < Net::HTTP
78
+ env.net_http_class(proxied_host).should < Net::HTTP
76
79
  end
77
80
 
78
81
  it "should be marked as a proxy class" do
79
- env.net_http_class.should be_proxy_class
82
+ env.net_http_class(proxied_host).should be_proxy_class
80
83
  end
81
84
 
82
85
  it "should have the expected proxy attributes" do
83
- http = env.net_http_class.new("www.kernel.org")
86
+ http = env.net_http_class(proxied_host).new("www.kernel.org")
84
87
  expected_attributes = {
85
88
  "host" => env.http_proxy_uri.host,
86
89
  "port" => env.http_proxy_uri.port,
@@ -96,6 +99,72 @@ module Librarian
96
99
 
97
100
  actual_attributes.should == expected_attributes
98
101
  end
102
+
103
+ end
104
+
105
+ context "with an excluded host" do
106
+ with_env "http_proxy" => "admin:secret@example.com",
107
+ "no_proxy" => "no.proxy.com, noproxy.com"
108
+
109
+ context "with an exact match" do
110
+ let(:proxied_host) { "noproxy.com" }
111
+
112
+ it "should have the normal class" do
113
+ env.net_http_class(proxied_host).should be Net::HTTP
114
+ end
115
+
116
+ it "should not be marked as a proxy class" do
117
+ env.net_http_class(proxied_host).should_not be_proxy_class
118
+ end
119
+ end
120
+
121
+ context "with a subdomain match" do
122
+ let(:proxied_host) { "www.noproxy.com" }
123
+
124
+ it "should have the normal class" do
125
+ env.net_http_class(proxied_host).should be Net::HTTP
126
+ end
127
+
128
+ it "should not be marked as a proxy class" do
129
+ env.net_http_class(proxied_host).should_not be_proxy_class
130
+ end
131
+ end
132
+
133
+ context "with localhost" do
134
+ let(:proxied_host) { "localhost" }
135
+
136
+ it "should have the normal class" do
137
+ env.net_http_class(proxied_host).should be Net::HTTP
138
+ end
139
+
140
+ it "should not be marked as a proxy class" do
141
+ env.net_http_class(proxied_host).should_not be_proxy_class
142
+ end
143
+ end
144
+
145
+ context "with 127.0.0.1" do
146
+ let(:proxied_host) { "127.0.0.1" }
147
+
148
+ it "should have the normal class" do
149
+ env.net_http_class(proxied_host).should be Net::HTTP
150
+ end
151
+
152
+ it "should not be marked as a proxy class" do
153
+ env.net_http_class(proxied_host).should_not be_proxy_class
154
+ end
155
+ end
156
+
157
+ context "with a mismatch" do
158
+ let(:proxied_host) { "www.example.com" }
159
+
160
+ it "should have a subclass the normal class" do
161
+ env.net_http_class(proxied_host).should < Net::HTTP
162
+ end
163
+
164
+ it "should be marked as a proxy class" do
165
+ env.net_http_class(proxied_host).should be_proxy_class
166
+ end
167
+ end
99
168
  end
100
169
 
101
170
  end
@@ -123,7 +123,7 @@ module Librarian
123
123
 
124
124
  let(:resolution) { resolver.resolve(spec) }
125
125
 
126
- specify { resolution.should_not be_correct }
126
+ specify { resolution.should be_nil }
127
127
 
128
128
  end
129
129
 
@@ -151,7 +151,7 @@ module Librarian
151
151
 
152
152
  let(:resolution) { resolver.resolve(spec) }
153
153
 
154
- specify { resolution.should_not be_correct }
154
+ specify { resolution.should be_nil }
155
155
 
156
156
  end
157
157
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.25
4
+ version: 0.0.26
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,136 +9,136 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-12 00:00:00.000000000 Z
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ prerelease: false
15
16
  name: thor
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
17
+ version_requirements: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0.15'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
22
  none: false
23
+ requirement: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
29
27
  version: '0.15'
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
28
  none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
39
31
  prerelease: false
32
+ name: rake
40
33
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
34
  requirements:
43
35
  - - ! '>='
44
36
  - !ruby/object:Gem::Version
45
37
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
38
  none: false
39
+ requirement: !ruby/object:Gem::Requirement
50
40
  requirements:
51
41
  - - ! '>='
52
42
  - !ruby/object:Gem::Version
53
43
  version: '0'
44
+ none: false
54
45
  type: :development
46
+ - !ruby/object:Gem::Dependency
55
47
  prerelease: false
48
+ name: rspec
56
49
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
50
  requirements:
59
51
  - - ! '>='
60
52
  - !ruby/object:Gem::Version
61
53
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: webmock
64
- requirement: !ruby/object:Gem::Requirement
65
54
  none: false
55
+ requirement: !ruby/object:Gem::Requirement
66
56
  requirements:
67
57
  - - ! '>='
68
58
  - !ruby/object:Gem::Version
69
59
  version: '0'
60
+ none: false
70
61
  type: :development
62
+ - !ruby/object:Gem::Dependency
71
63
  prerelease: false
64
+ name: webmock
72
65
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
67
  - - ! '>='
76
68
  - !ruby/object:Gem::Version
77
69
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: fakefs
80
- requirement: !ruby/object:Gem::Requirement
81
70
  none: false
71
+ requirement: !ruby/object:Gem::Requirement
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
76
+ none: false
86
77
  type: :development
78
+ - !ruby/object:Gem::Dependency
87
79
  prerelease: false
80
+ name: fakefs
88
81
  version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
89
86
  none: false
87
+ requirement: !ruby/object:Gem::Requirement
90
88
  requirements:
91
89
  - - ! '>='
92
90
  - !ruby/object:Gem::Version
93
91
  version: '0'
92
+ none: false
93
+ type: :development
94
94
  - !ruby/object:Gem::Dependency
95
+ prerelease: false
95
96
  name: chef
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0.10'
102
- type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
102
  none: false
103
+ requirement: !ruby/object:Gem::Requirement
106
104
  requirements:
107
105
  - - ! '>='
108
106
  - !ruby/object:Gem::Version
109
107
  version: '0.10'
108
+ none: false
109
+ type: :runtime
110
110
  - !ruby/object:Gem::Dependency
111
+ prerelease: false
111
112
  name: highline
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
118
  none: false
119
+ requirement: !ruby/object:Gem::Requirement
122
120
  requirements:
123
121
  - - ! '>='
124
122
  - !ruby/object:Gem::Version
125
123
  version: '0'
124
+ none: false
125
+ type: :runtime
126
126
  - !ruby/object:Gem::Dependency
127
+ prerelease: false
127
128
  name: archive-tar-minitar
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
133
  version: 0.5.2
134
- type: :runtime
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
134
  none: false
135
+ requirement: !ruby/object:Gem::Requirement
138
136
  requirements:
139
137
  - - ! '>='
140
138
  - !ruby/object:Gem::Version
141
139
  version: 0.5.2
140
+ none: false
141
+ type: :runtime
142
142
  description: Librarian
143
143
  email:
144
144
  - y_feldblum@yahoo.com
@@ -164,6 +164,7 @@ files:
164
164
  - lib/librarian/action/clean.rb
165
165
  - lib/librarian/action/ensure.rb
166
166
  - lib/librarian/action/install.rb
167
+ - lib/librarian/action/persist_resolution_mixin.rb
167
168
  - lib/librarian/action/resolve.rb
168
169
  - lib/librarian/action/update.rb
169
170
  - lib/librarian/chef.rb
@@ -175,6 +176,7 @@ files:
175
176
  - lib/librarian/chef/manifest_reader.rb
176
177
  - lib/librarian/chef/source.rb
177
178
  - lib/librarian/chef/source/git.rb
179
+ - lib/librarian/chef/source/github.rb
178
180
  - lib/librarian/chef/source/local.rb
179
181
  - lib/librarian/chef/source/path.rb
180
182
  - lib/librarian/chef/source/site.rb
@@ -193,6 +195,7 @@ files:
193
195
  - lib/librarian/environment.rb
194
196
  - lib/librarian/error.rb
195
197
  - lib/librarian/helpers.rb
198
+ - lib/librarian/linter/source_linter.rb
196
199
  - lib/librarian/lockfile.rb
197
200
  - lib/librarian/lockfile/compiler.rb
198
201
  - lib/librarian/lockfile/parser.rb
@@ -211,6 +214,7 @@ files:
211
214
  - lib/librarian/resolver.rb
212
215
  - lib/librarian/resolver/implementation.rb
213
216
  - lib/librarian/source.rb
217
+ - lib/librarian/source/basic_api.rb
214
218
  - lib/librarian/source/git.rb
215
219
  - lib/librarian/source/git/repository.rb
216
220
  - lib/librarian/source/local.rb
@@ -223,10 +227,12 @@ files:
223
227
  - lib/librarian/version.rb
224
228
  - librarian.gemspec
225
229
  - spec/functional/chef/cli_spec.rb
226
- - spec/functional/chef/source/git_spec.rb
227
230
  - spec/functional/chef/source/site_spec.rb
228
231
  - spec/functional/source/git/repository_spec.rb
232
+ - spec/integration/chef/source/git_spec.rb
233
+ - spec/integration/chef/source/site_spec.rb
229
234
  - spec/support/cli_macro.rb
235
+ - spec/support/method_patch_macro.rb
230
236
  - spec/support/with_env_macro.rb
231
237
  - spec/unit/action/base_spec.rb
232
238
  - spec/unit/action/clean_spec.rb
@@ -251,20 +257,20 @@ rdoc_options: []
251
257
  require_paths:
252
258
  - lib
253
259
  required_ruby_version: !ruby/object:Gem::Requirement
254
- none: false
255
260
  requirements:
256
261
  - - ! '>='
257
262
  - !ruby/object:Gem::Version
258
263
  version: '0'
259
264
  segments:
260
265
  - 0
261
- hash: 3137632899221484598
262
- required_rubygems_version: !ruby/object:Gem::Requirement
266
+ hash: -1210253581070009250
263
267
  none: false
268
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
269
  requirements:
265
270
  - - ! '>='
266
271
  - !ruby/object:Gem::Version
267
272
  version: '0'
273
+ none: false
268
274
  requirements: []
269
275
  rubyforge_project: librarian
270
276
  rubygems_version: 1.8.24