librarian-ansible 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48ef9396b91aaa1b246bb8bbff0394c8cbdb7f6e
4
- data.tar.gz: ab246ccc9577923cadd06afaaaa77956fced0365
3
+ metadata.gz: 72c8d1017901562889ad9a7037f3fc503cadf518
4
+ data.tar.gz: 640bcfe4416e2cc3ff0bab763c7da9fb72a73b05
5
5
  SHA512:
6
- metadata.gz: 1e5a957983aef21392a361f12a4dacde0cfc3be09bc9e1530ae342ebfaef12d0009db8e50749361af295964605b3f2ba7247c1182ffabef7a82d3ccfc7395262
7
- data.tar.gz: ca57fb28ad31e698286372e014f7ed324a7e53a8ea362af28bed868f8913c4dc447bac91a222d70169a4feec209d0bf7e5adcc1807059caa46ddc0cd6ad52eaa
6
+ metadata.gz: 5d799b4e7a4cae5deddd9379c70ee53c28b6e709d9c32d2f8d87816cbc5ed23e241afc013cbd8dcccbca1df842f7b9456eefc006dfcef146802aa9e6cbb73e41
7
+ data.tar.gz: 6970dac352e1426e85c1a516e0196486fbe6eb9a52a3742fceb6584912102c4dfb1d3c831383d8af619e3031c1feced49f20df4df37fe925fed4c04d730d14cd
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ script: rspec spec
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.1
7
+ - jruby-19mode
8
+ - ruby-head
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  Librarian-Ansible
2
2
  =================
3
3
 
4
+ [![Code Climate](https://codeclimate.com/github/bcoe/librarian-ansible.png)](https://codeclimate.com/github/bcoe/librarian-ansible)
5
+ [![Build Status](https://travis-ci.org/bcoe/librarian-ansible.png)](https://travis-ci.org/bcoe/librarian-ansible)
6
+
4
7
  Provides bundler-inspired functionality for Ansible roles:
5
8
 
6
9
  http://bundler.io/v1.3/rationale.html
@@ -104,9 +107,82 @@ And update your Ansiblefile accordingly:
104
107
  role "kunik.deploy-upstart-scripts", "1.0.0"
105
108
  ```
106
109
 
110
+ ### Configuration
111
+
112
+ Configuration comes from three sources with the following highest-to-lowest
113
+ precedence:
114
+
115
+ * The local config (`./.librarian/ansible/config`)
116
+ * The environment
117
+ * The global config (`~/.librarian/ansible/config`)
118
+
119
+ You can inspect the final configuration with:
120
+
121
+ $ librarian-ansible config
122
+
123
+ You can find out where a particular key is set with:
124
+
125
+ $ librarian-ansible config KEY
126
+
127
+ You can set a key at the global level with:
128
+
129
+ $ librarian-ansible config KEY VALUE --global
130
+
131
+ And remove it with:
132
+
133
+ $ librarian-ansible config KEY --global --delete
134
+
135
+ You can set a key at the local level with:
136
+
137
+ $ librarian-ansible config KEY VALUE --local
138
+
139
+ And remove it with:
140
+
141
+ $ librarian-ansible config KEY --local --delete
142
+
143
+ You cannot set or delete environment-level config keys with the CLI.
144
+
145
+ Configuration set at either the global or local level will affect subsequent
146
+ invocations of `librarian-ansible`. Configurations set at the environment level are
147
+ not saved and will not affect subsequent invocations of `librarian-ansible`.
148
+
149
+ You can pass a config at the environment level by taking the original config key
150
+ and transforming it: replace hyphens (`-`) with underscores (`_`) and periods
151
+ (`.`) with doubled underscores (`__`), uppercase, and finally prefix with
152
+ `LIBRARIAN_ANSIBLE_`. For example, to pass a config in the environment for the key
153
+ `part-one.part-two`, set the environment variable
154
+ `LIBRARIAN_ANSIBLE_PART_ONE__PART_TWO`.
155
+
156
+ Configuration affects how various commands operate.
157
+
158
+ * The `path` config sets the roles directory to install to. If a relative
159
+ path, it is relative to the directory containing the `Ansiblefile`. The
160
+ equivalent environment variable is `LIBRARIAN_ANSIBLE_PATH`.
161
+
162
+ * The `tmp` config sets the cache directory for librarian. If a relative
163
+ path, it is relative to the directory containing the `Ansiblefile`. The
164
+ equivalent environment variable is `LIBRARIAN_ANSIBLE_TMP`.
165
+
166
+ * The `install.strip-dot-git` config causes the `.git/` directory to be stripped
167
+ out when installing roles from a git source. This must be set to exactly
168
+ "1" to cause this behavior. The equivalent environment variable is
169
+ `LIBRARIAN_ANSIBLE_INSTALL__STRIP_DOT_GIT`.
170
+
171
+ Configuration can be set by passing specific options to other commands.
172
+
173
+ * The `path` config can be set at the local level by passing the `--path` option
174
+ to the `install` command. It can be unset at the local level by passing the
175
+ `--no-path` option to the `install` command. Note that if this is set at the
176
+ environment or global level then, even if `--no-path` is given as an option,
177
+ the environment or global config will be used.
178
+
179
+ * The `install.strip-dot-git` config can be set at the local level by passing
180
+ the `--strip-dot-git` option to the `install` command. It can be unset at the
181
+ local level by passing the `--no-strip-dot-git` option.
182
+
107
183
  ## Contributing
108
184
 
109
- 1. Fork it ( http://github.com/<my-github-username>/librarian-ansible/fork )
185
+ 1. Fork it ( http://github.com/bcoe/librarian-ansible/fork )
110
186
  2. Create your feature branch (`git checkout -b my-new-feature`)
111
187
  3. Commit your changes (`git commit -am 'Add some feature'`)
112
188
  4. Push to the branch (`git push origin my-new-feature`)
@@ -31,26 +31,40 @@ module Librarian
31
31
  private
32
32
 
33
33
  def github_url(uri)
34
- username, name = uri.split(".")
34
+ package = nil
35
+ # because both name and username can contain dots, we have
36
+ # to check every combination until package will be found
37
+ segments = uri.split('.')
38
+ (0..segments.size - 2).each do |pivot|
39
+ username = segments[0..pivot].join('.')
40
+ name = segments[pivot + 1..-1].join('.')
41
+ package = lookup_package(username, name)
42
+ end
43
+ raise Error, "Could not find package: #{uri}" if package.nil?
44
+ "https://github.com/#{package['github_user']}/#{package['github_repo']}"
45
+ end
35
46
 
47
+ def lookup_package(username, name)
36
48
  conn = Faraday.new(:url => @@galaxy_api)
37
49
 
38
- response = conn.get("#{@@galaxy_api}/roles/?name=#{name}&format=json")
39
-
40
- if response.status != 200
41
- raise Error, "Could not read package from galaxy API."
42
- else
43
- package = JSON.parse(response.body)['results'].find do |r|
44
- r['summary_fields']['owner']['username'] == username &&
45
- r['name'] == name
50
+ url = "#{@@galaxy_api}/roles/?name=#{name}&format=json"
51
+ loop do
52
+ response = conn.get(url)
53
+ if response.status != 200
54
+ raise Error, 'Could not read package from galaxy API.'
55
+ else
56
+ json = JSON.parse(response.body)
57
+ package = json['results'].find do |r|
58
+ r['summary_fields']['owner']['username'] == username &&
59
+ r['name'] == name
60
+ end
61
+ return package if package
62
+ url = json['next']
63
+ break unless url
46
64
  end
47
65
  end
48
-
49
- "https://github.com/#{package['github_user']}/#{package['github_repo']}"
50
66
  end
51
-
52
67
  end
53
-
54
68
  end
55
69
  end
56
70
  end
@@ -1,5 +1,5 @@
1
1
  module Librarian
2
2
  module Ansible
3
- VERSION = "1.0.5"
3
+ VERSION = "1.0.6"
4
4
  end
5
5
  end
@@ -0,0 +1,63 @@
1
+ require_relative "../../support/spec_helper"
2
+ require "librarian/ansible/cli"
3
+
4
+ module Librarian
5
+ module Ansible
6
+ describe Cli do
7
+ include Librarian::RSpec::Support::CliMacro
8
+
9
+ describe "init" do
10
+ before do
11
+ cli! "init"
12
+ end
13
+
14
+ it "should create a file named Ansiblefile" do
15
+ pwd.should have_file "Ansiblefile"
16
+ end
17
+ end
18
+
19
+ describe "version" do
20
+ before do
21
+ cli! "version"
22
+ end
23
+
24
+ it "should print the version" do
25
+ stdout.should == strip_heredoc(<<-STDOUT)
26
+ librarian-#{Librarian::VERSION}
27
+ librarian-ansible-#{Librarian::Ansible::VERSION}
28
+ STDOUT
29
+ end
30
+ end
31
+
32
+ describe "install" do
33
+
34
+ context "a simple Ansiblefile with one role" do
35
+ let(:metadata) do
36
+ { "name" => "apt",
37
+ "version" => "1.0.0" }
38
+ end
39
+
40
+ before do
41
+ write_yaml_file! "role-sources/apt/meta/main.yml", metadata
42
+ write_file! "Ansiblefile", strip_heredoc(<<-ANSIBLEFILE)
43
+ role 'apt',
44
+ :path => 'role-sources/apt'
45
+ ANSIBLEFILE
46
+
47
+ cli! "install"
48
+ end
49
+
50
+ it "should write a lockfile" do
51
+ pwd.should have_file "Ansiblefile.lock"
52
+ end
53
+
54
+ it "should install the role" do
55
+ pwd.should have_yaml_file "librarian_roles/apt/meta/main.yml", metadata
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,363 @@
1
+ require 'librarian'
2
+ require 'librarian/helpers'
3
+ require 'librarian/error'
4
+ require 'librarian/action/resolve'
5
+ require 'librarian/action/install'
6
+ require 'librarian/action/update'
7
+ require 'librarian/ansible'
8
+
9
+ require 'support/project_path'
10
+
11
+ module Librarian
12
+ module Ansible
13
+ module Source
14
+ describe Git do
15
+
16
+ let(:project_path) { ::Support::ProjectPath.project_path }
17
+ let(:tmp_path) { project_path.join("tmp/spec/integration/ansible/source/git") }
18
+ after { tmp_path.rmtree if tmp_path && tmp_path.exist? }
19
+
20
+ let(:roles_path) { tmp_path.join("librarian_roles") }
21
+
22
+ # depends on repo_path being defined in each context
23
+ let(:env) { Environment.new(:project_path => repo_path) }
24
+
25
+ context "a single dependency with a git source" do
26
+
27
+ let(:sample_path) { tmp_path.join("sample") }
28
+ let(:sample_metadata) do
29
+ { version: "0.6.5" }
30
+ end
31
+
32
+ let(:first_sample_path) { roles_path.join("first-sample") }
33
+ let(:first_sample_metadata) do
34
+ { version: "3.2.1" }
35
+ end
36
+
37
+ let(:second_sample_path) { roles_path.join("second-sample") }
38
+ let(:second_sample_metadata) do
39
+ { version: "4.3.2" }
40
+ end
41
+
42
+ before do
43
+ sample_path.rmtree if sample_path.exist?
44
+ sample_path.join('meta').mkpath
45
+ sample_path.join("meta/main.yml").open("wb") { |f| f.write(YAML.dump(sample_metadata)) }
46
+ Dir.chdir(sample_path) do
47
+ `git init`
48
+ `git config user.name "Simba"`
49
+ `git config user.email "simba@savannah-pride.gov"`
50
+ `git add meta/main.yml`
51
+ `git commit -m "Initial commit."`
52
+ end
53
+
54
+ roles_path.rmtree if roles_path.exist?
55
+ roles_path.mkpath
56
+ first_sample_path.join('meta').mkpath
57
+ first_sample_path.join("meta/main.yml").open("wb") { |f| f.write(YAML.dump(first_sample_metadata)) }
58
+ second_sample_path.join('meta').mkpath
59
+ second_sample_path.join("meta/main.yml").open("wb") { |f| f.write(YAML.dump(second_sample_metadata)) }
60
+ Dir.chdir(roles_path) do
61
+ `git init`
62
+ `git config user.name "Simba"`
63
+ `git config user.email "simba@savannah-pride.gov"`
64
+ `git add .`
65
+ `git commit -m "Initial commit."`
66
+ end
67
+ end
68
+
69
+ context "resolving" do
70
+ let(:repo_path) { tmp_path.join("repo/resolve") }
71
+ before do
72
+ repo_path.rmtree if repo_path.exist?
73
+ repo_path.mkpath
74
+ repo_path.join("librarian_roles").mkpath
75
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
76
+ #!/usr/bin/env ruby
77
+ role "sample", :git => #{sample_path.to_s.inspect}
78
+ ANSIBLEFILE
79
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
80
+ end
81
+
82
+ context "the resolve" do
83
+ it "should not raise an exception" do
84
+ expect { Action::Resolve.new(env).run }.to_not raise_error
85
+ end
86
+ end
87
+
88
+ context "the results" do
89
+ before { Action::Resolve.new(env).run }
90
+
91
+ it "should create the lockfile" do
92
+ repo_path.join("Ansiblefile.lock").should exist
93
+ end
94
+
95
+ it "should not attempt to install the sample cookbok" do
96
+ repo_path.join("librarian_roles/sample").should_not exist
97
+ end
98
+ end
99
+ end
100
+
101
+ context "installing" do
102
+ let(:repo_path) { tmp_path.join("repo/install") }
103
+ before do
104
+ repo_path.rmtree if repo_path.exist?
105
+ repo_path.mkpath
106
+ repo_path.join(roles_path).mkpath
107
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
108
+ #!/usr/bin/env ruby
109
+ role "sample", :git => #{sample_path.to_s.inspect}
110
+ ANSIBLEFILE
111
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
112
+
113
+ Action::Resolve.new(env).run
114
+ end
115
+
116
+ context "the install" do
117
+ it "should not raise an exception" do
118
+ expect { Action::Install.new(env).run }.to_not raise_error
119
+ end
120
+ end
121
+
122
+ context "the results" do
123
+ before { Action::Install.new(env).run }
124
+
125
+ it "should create the lockfile" do
126
+ repo_path.join("Ansiblefile.lock").should exist
127
+ end
128
+
129
+ it "should create the directory for the role" do
130
+ repo_path.join("librarian_roles/sample").should exist
131
+ end
132
+
133
+ it "should copy the role files into the role directory" do
134
+ repo_path.join("librarian_roles/sample/meta/main.yml").should exist
135
+ end
136
+ end
137
+ end
138
+
139
+ context "resolving and and separately installing" do
140
+ let(:repo_path) { tmp_path.join("repo/resolve-install") }
141
+ before do
142
+ repo_path.rmtree if repo_path.exist?
143
+ repo_path.mkpath
144
+ repo_path.join("librarian_roles").mkpath
145
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
146
+ #!/usr/bin/env ruby
147
+ role "sample", :git => #{sample_path.to_s.inspect}
148
+ ANSIBLEFILE
149
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
150
+
151
+ Action::Resolve.new(env).run
152
+ repo_path.join("tmp").rmtree if repo_path.join("tmp").exist?
153
+ end
154
+
155
+ context "the install" do
156
+ it "should not raise an exception" do
157
+ expect { Action::Install.new(env).run }.to_not raise_error
158
+ end
159
+ end
160
+
161
+ context "the results" do
162
+ before { Action::Install.new(env).run }
163
+
164
+ it "should create the directory for the role" do
165
+ repo_path.join("librarian_roles/sample").should exist
166
+ end
167
+
168
+ it "should copy the role files into the role directory" do
169
+ repo_path.join("librarian_roles/sample/meta/main.yml").should exist
170
+ end
171
+ end
172
+ end
173
+
174
+ end
175
+
176
+ context "with a path" do
177
+
178
+ let(:git_path) { tmp_path.join("big-git-repo") }
179
+ let(:sample_path) { git_path.join("buttercup") }
180
+ let(:sample_metadata) do
181
+ { version: "0.6.5" }
182
+ end
183
+
184
+ before do
185
+ git_path.rmtree if git_path.exist?
186
+ git_path.mkpath
187
+ sample_path.join('meta').mkpath
188
+ sample_path.join("meta/main.yml").open("wb") { |f| f.write(YAML.dump(sample_metadata)) }
189
+ Dir.chdir(git_path) do
190
+ `git init`
191
+ `git config user.name "Simba"`
192
+ `git config user.email "simba@savannah-pride.gov"`
193
+ `git add .`
194
+ `git commit -m "Initial commit."`
195
+ end
196
+ end
197
+
198
+ context "if no path option is given" do
199
+ let(:repo_path) { tmp_path.join("repo/resolve") }
200
+ before do
201
+ repo_path.rmtree if repo_path.exist?
202
+ repo_path.mkpath
203
+ repo_path.join("librarian_roles").mkpath
204
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
205
+ #!/usr/bin/env ruby
206
+ role "sample",
207
+ :git => #{git_path.to_s.inspect}
208
+ ANSIBLEFILE
209
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
210
+ end
211
+
212
+ it "should not resolve" do
213
+ expect{ Action::Resolve.new(env).run }.to raise_error
214
+ end
215
+ end
216
+
217
+ context "if the path option is wrong" do
218
+ let(:repo_path) { tmp_path.join("repo/resolve") }
219
+ before do
220
+ repo_path.rmtree if repo_path.exist?
221
+ repo_path.mkpath
222
+ repo_path.join("librarian_roles").mkpath
223
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
224
+ #!/usr/bin/env ruby
225
+ role "sample",
226
+ :git => #{git_path.to_s.inspect},
227
+ :path => "jelly"
228
+ ANSIBLEFILE
229
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
230
+ end
231
+
232
+ it "should not resolve" do
233
+ expect{ Action::Resolve.new(env).run }.to raise_error
234
+ end
235
+ end
236
+
237
+ context "if the path option is right" do
238
+ let(:repo_path) { tmp_path.join("repo/resolve") }
239
+ before do
240
+ repo_path.rmtree if repo_path.exist?
241
+ repo_path.mkpath
242
+ repo_path.join("librarian_roles").mkpath
243
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
244
+ #!/usr/bin/env ruby
245
+ role "sample",
246
+ :git => #{git_path.to_s.inspect},
247
+ :path => "buttercup"
248
+ ANSIBLEFILE
249
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
250
+ end
251
+
252
+ context "the resolve" do
253
+ it "should not raise an exception" do
254
+ expect { Action::Resolve.new(env).run }.to_not raise_error
255
+ end
256
+ end
257
+
258
+ context "the results" do
259
+ before { Action::Resolve.new(env).run }
260
+
261
+ it "should create the lockfile" do
262
+ repo_path.join("Ansiblefile.lock").should exist
263
+ end
264
+ end
265
+ end
266
+
267
+ end
268
+
269
+ context "when upstream updates" do
270
+ let(:git_path) { tmp_path.join("upstream-updates-repo") }
271
+ let(:repo_path) { tmp_path.join("repo/resolve-with-upstream-updates") }
272
+
273
+ let(:sample_metadata) do
274
+ { version: "0.6.5" }
275
+ end
276
+
277
+ before do
278
+
279
+ # set up the git repo as normal, but let's also set up a release-stable branch
280
+ # from which our Ansiblefile will only pull stable releases
281
+ git_path.rmtree if git_path.exist?
282
+ git_path.join('meta').mkpath
283
+ git_path.join("meta/main.yml").open("wb") { |f| f.write(YAML.dump(sample_metadata)) }
284
+
285
+ Dir.chdir(git_path) do
286
+ `git init`
287
+ `git config user.name "Simba"`
288
+ `git config user.email "simba@savannah-pride.gov"`
289
+ `git add meta/main.yml`
290
+ `git commit -m "Initial Commit."`
291
+ `git checkout -b some-branch --quiet`
292
+ `echo 'hi' > some-file`
293
+ `git add some-file`
294
+ `git commit -m 'Some File.'`
295
+ `git checkout master --quiet`
296
+ end
297
+
298
+ # set up the ansible repo as normal, except the Ansiblefile points to the release-stable
299
+ # branch - we expect when the upstream copy of that branch is changed, then we can
300
+ # fetch & merge those changes when we update
301
+ repo_path.rmtree if repo_path.exist?
302
+ repo_path.mkpath
303
+ repo_path.join("librarian_roles").mkpath
304
+ ansiblefile = Helpers.strip_heredoc(<<-ANSIBLEFILE)
305
+ role "sample",
306
+ :git => #{git_path.to_s.inspect},
307
+ :ref => "some-branch"
308
+ ANSIBLEFILE
309
+ repo_path.join("Ansiblefile").open("wb") { |f| f.write(ansiblefile) }
310
+ Action::Resolve.new(env).run
311
+
312
+ # change the upstream copy of that branch: we expect to be able to pull the latest
313
+ # when we re-resolve
314
+ Dir.chdir(git_path) do
315
+ `git checkout some-branch --quiet`
316
+ `echo 'ho' > some-other-file`
317
+ `git add some-other-file`
318
+ `git commit -m 'Some Other File.'`
319
+ `git checkout master --quiet`
320
+ end
321
+ end
322
+
323
+ let(:metadata_file) { repo_path.join("librarian_roles/sample/meta/main.yml") }
324
+ let(:old_code_file) { repo_path.join("librarian_roles/sample/some-file") }
325
+ let(:new_code_file) { repo_path.join("librarian_roles/sample/some-other-file") }
326
+
327
+ context "when updating not a role from that source" do
328
+ before do
329
+ Action::Update.new(env).run
330
+ end
331
+
332
+ it "should pull the tip from upstream" do
333
+ Action::Install.new(env).run
334
+
335
+ metadata_file.should exist #sanity
336
+ old_code_file.should exist #sanity
337
+
338
+ new_code_file.should_not exist # the assertion
339
+ end
340
+ end
341
+
342
+ context "when updating a role from that source" do
343
+ before do
344
+ Action::Update.new(env, :names => %w(sample)).run
345
+ end
346
+
347
+ it "should pull the tip from upstream" do
348
+ pending('debug "should pull the tip from upstream"')
349
+
350
+ Action::Install.new(env).run
351
+
352
+ metadata_file.should exist #sanity
353
+ old_code_file.should exist #sanity
354
+
355
+ new_code_file.should exist # the assertion
356
+ end
357
+ end
358
+ end
359
+
360
+ end
361
+ end
362
+ end
363
+ end
@@ -0,0 +1,27 @@
1
+ module Support
2
+ module ProjectPath
3
+
4
+ project_path = Pathname.new(__FILE__).expand_path
5
+ project_path = project_path.dirname until project_path.join("Rakefile").exist?
6
+ project_path
7
+
8
+ PROJECT_PATH = project_path
9
+
10
+ def project_path
11
+ PROJECT_PATH
12
+ end
13
+
14
+ module ClassMethods
15
+ def project_path
16
+ PROJECT_PATH
17
+ end
18
+ end
19
+
20
+ def self.included(base)
21
+ base.extend ClassMethods
22
+ end
23
+
24
+ extend self
25
+
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ require "librarian/rspec/support/cli_macro"
2
+
3
+ class FileMatcher < Librarian::RSpec::Support::CliMacro::FileMatcher
4
+ def actual_content
5
+ @actual_content ||= begin
6
+ content = full_path.read
7
+ content = JSON.parse(content) if type == :json
8
+ content = YAML.load(content) if type == :yaml
9
+ content
10
+ end
11
+ end
12
+
13
+ def failure_message
14
+ if full_path.file?
15
+ "file content does not match"
16
+ else
17
+ "no file matches path #{rel_path}"
18
+ end
19
+ end
20
+ end
21
+
22
+ def write_yaml_file!(path, content)
23
+ write_file! path, YAML.dump(content)
24
+ end
25
+
26
+ def have_yaml_file(rel_path, content)
27
+ FileMatcher.new(rel_path, content, :type => :yaml)
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarian-ansible
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Coe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-14 00:00:00.000000000 Z
11
+ date: 2014-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: librarian
@@ -75,6 +75,7 @@ extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
77
  - .gitignore
78
+ - .travis.yml
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md
@@ -99,6 +100,10 @@ files:
99
100
  - lib/librarian/ansible/templates/Ansiblefile
100
101
  - lib/librarian/ansible/version.rb
101
102
  - librarian-ansible.gemspec
103
+ - spec/functional/ansible/cli_spec.rb
104
+ - spec/integration/ansible/source/git_spec.rb
105
+ - spec/support/project_path.rb
106
+ - spec/support/spec_helper.rb
102
107
  homepage: ''
103
108
  licenses:
104
109
  - MIT
@@ -123,4 +128,8 @@ rubygems_version: 2.2.2
123
128
  signing_key:
124
129
  specification_version: 4
125
130
  summary: A Bundler for your Ansible roles.
126
- test_files: []
131
+ test_files:
132
+ - spec/functional/ansible/cli_spec.rb
133
+ - spec/integration/ansible/source/git_spec.rb
134
+ - spec/support/project_path.rb
135
+ - spec/support/spec_helper.rb