ansible_spec 0.2.5 → 0.2.6

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: 4e5c10ea9ab4741a2c8f99e20261cbbad47af7fe
4
- data.tar.gz: 572f3ddf20328f19eccd4e1107162b00cf881c3b
3
+ metadata.gz: 5f3f3fdce96a604720925a233a0b2cf0f11caf0b
4
+ data.tar.gz: aa92bf9f29d175293cb755145fb8e4b6123e6f63
5
5
  SHA512:
6
- metadata.gz: b266c6100fac87326945d7c1c6c0f49a9dd45092b5bb6d6d02e619088a6f278d29a43078250c9a998393a94b5a644b8f4f8ac9f5e183660fdda70816bbe87d99
7
- data.tar.gz: 34fc3ec00c8d71de98c10eb6328d0cac4607c2fa82782c612d0e115e873584ae722aa0d4c68a1a7b878eef6a02e782572e79d117a5759ef1d3b595833aa1f43e
6
+ metadata.gz: 39a6ec70aaf382a4bd991536b02a56d767401477ce9def30cf71ec3320fb857880a7b9386f15f661e0300a1796b827f54cb0b2dc5dfafc8022d50799bc8dd819
7
+ data.tar.gz: 9b78e44c7fcad0d64324465311a6126ff911e931dd0b8e0af599d23a66d150dace9a4a16a76ff4287cfd8bb5263c305f89611daa6bbef1e99314fe5ad2186843
@@ -1,5 +1,8 @@
1
+ # v0.2.6
2
+ - Merge [#53 Execute tests for dependent roles](https://github.com/volanja/ansible_spec/pull/53) by [Gerrrr](https://github.com/Gerrrr)
3
+
1
4
  # v0.2.5
2
- - Fix [#51 Handle hosts which are not assigned to any group] by [Gerrrr](https://github.com/Gerrrr)
5
+ - Merge [#51 Handle hosts which are not assigned to any group](https://github.com/volanja/ansible_spec/pull/51) by [Gerrrr](https://github.com/Gerrrr)
3
6
 
4
7
  # v0.2.4
5
8
  - Fix [#50 do not fail on no hosts matched](https://github.com/volanja/ansible_spec/pull/50) by [phiche](https://github.com/phiche)
@@ -175,6 +175,26 @@ module AnsibleSpec
175
175
  return playbook, inventoryfile
176
176
  end
177
177
 
178
+ # param: role
179
+ # return: ["role1", "role2"]
180
+ def self.load_dependencies(role)
181
+ role_queue = [role]
182
+ deps = []
183
+ until role_queue.empty?
184
+ role = role_queue.pop()
185
+ path = File.join("./", "roles", role, "meta", "main.yml")
186
+
187
+ if File.exist?(path)
188
+ new_deps = YAML.load_file(path).fetch("dependencies", []).map { |h|
189
+ h["role"]
190
+ }
191
+ role_queue.concat(new_deps)
192
+ deps.concat(new_deps)
193
+ end
194
+ end
195
+ return deps
196
+ end
197
+
178
198
  # param: playbook
179
199
  # return: json
180
200
  # {"name"=>"Ansible-Sample-TDD", "hosts"=>"server", "user"=>"root", "roles"=>["nginx", "mariadb"]}
@@ -1,3 +1,3 @@
1
1
  module AnsibleSpec
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
@@ -21,9 +21,14 @@ namespace :serverspec do
21
21
  else
22
22
  ENV['TARGET_USER'] = property["user"]
23
23
  end
24
- t.pattern = 'roles/{' + property["roles"].join(',') + '}/spec/*_spec.rb'
24
+
25
+ roles = property["roles"]
26
+ for role in property["roles"]
27
+ deps = AnsibleSpec.load_dependencies(role)
28
+ roles += deps
29
+ end
30
+ t.pattern = 'roles/{' + roles.join(',') + '}/spec/*_spec.rb'
25
31
  end
26
32
  end
27
33
  end
28
34
  end
29
-
@@ -0,0 +1,67 @@
1
+ # coding: utf-8
2
+ require 'ansible_spec'
3
+
4
+
5
+ describe "load_dependencies" do
6
+ tmp_hosts = 'hosts'
7
+ tmp_ansiblespec = '.ansiblespec'
8
+ tmp_playbook = 'site.yml'
9
+ tmp_webapp_meta = 'roles/webapp/meta/main.yml'
10
+ tmp_dep1_meta = 'roles/dep1/meta/main.yml'
11
+
12
+ spec_content = <<'EOF'
13
+ ---
14
+ -
15
+ playbook: site.yml
16
+ inventory: hosts
17
+ EOF
18
+
19
+ hosts_content = <<'EOF'
20
+ [normal]
21
+ 192.168.0.1
22
+ 192.168.0.2
23
+ 192.168.0.3
24
+ EOF
25
+
26
+ playbook_content = <<'EOF'
27
+ - name: Ansible-Sample-TDD
28
+ hosts: normal
29
+ user: root
30
+ roles:
31
+ - webapp
32
+ EOF
33
+
34
+ webapp_meta_content = <<'EOF'
35
+ ---
36
+ dependencies:
37
+ - { role: dep1 }
38
+ - { role: dep2 }
39
+ EOF
40
+
41
+ dep1_meta_content = <<'EOF'
42
+ ---
43
+ dependencies:
44
+ - { role: dep3 }
45
+ EOF
46
+
47
+ before do
48
+ create_file(tmp_hosts, hosts_content)
49
+ create_file(tmp_ansiblespec, spec_content)
50
+ create_file(tmp_playbook, playbook_content)
51
+ create_file(tmp_webapp_meta, webapp_meta_content)
52
+ create_file(tmp_dep1_meta, dep1_meta_content)
53
+ @deps = AnsibleSpec.load_dependencies("webapp")
54
+ end
55
+
56
+ it 'should correctly resolve nested dependencies' do
57
+ expect(@deps).to eq ["dep1", "dep2", "dep3"]
58
+ end
59
+
60
+ after do
61
+ File.delete(tmp_hosts)
62
+ File.delete(tmp_ansiblespec)
63
+ File.delete(tmp_playbook)
64
+ File.delete(tmp_webapp_meta)
65
+ File.delete(tmp_dep1_meta)
66
+ end
67
+ end
@@ -1,7 +1,12 @@
1
1
  # coding: utf-8
2
+ require 'fileutils'
2
3
  require 'ansible_spec'
3
4
 
4
5
  def create_file(name,content)
6
+ dir = File.dirname(name)
7
+ unless File.directory?(dir)
8
+ FileUtils.mkdir_p(dir)
9
+ end
5
10
  File.open(name, 'w') do |f|
6
11
  f.puts content
7
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ansible_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - volanja
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-19 00:00:00.000000000 Z
11
+ date: 2015-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -134,6 +134,7 @@ files:
134
134
  - lib/src/Rakefile
135
135
  - lib/src/spec/spec_helper.rb
136
136
  - spec/commands_spec.rb
137
+ - spec/dependency_spec.rb
137
138
  - spec/dynamic_inventory_spec.rb
138
139
  - spec/ec2_dynamic_inventory_spec.rb
139
140
  - spec/inventory_parameters_spec.rb
@@ -167,6 +168,7 @@ summary: Ansible Config Parser for Serverspec. Run test Multi Role and Multi Hos
167
168
  by Ansible Configuration
168
169
  test_files:
169
170
  - spec/commands_spec.rb
171
+ - spec/dependency_spec.rb
170
172
  - spec/dynamic_inventory_spec.rb
171
173
  - spec/ec2_dynamic_inventory_spec.rb
172
174
  - spec/inventory_parameters_spec.rb