vanagon 0.16.0 → 0.19.0

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -23
  3. data/bin/build +3 -1
  4. data/bin/build_host_info +3 -1
  5. data/bin/build_requirements +3 -1
  6. data/bin/inspect +3 -1
  7. data/bin/render +3 -1
  8. data/bin/repo +3 -1
  9. data/bin/ship +3 -1
  10. data/bin/sign +3 -1
  11. data/extras/completions/vanagon.bash +38 -0
  12. data/extras/completions/vanagon.zsh +41 -0
  13. data/lib/vanagon/cli.rb +12 -2
  14. data/lib/vanagon/cli/build.rb +12 -3
  15. data/lib/vanagon/cli/build_host_info.rb +12 -3
  16. data/lib/vanagon/cli/build_requirements.rb +13 -5
  17. data/lib/vanagon/cli/completion.rb +44 -0
  18. data/lib/vanagon/cli/inspect.rb +12 -3
  19. data/lib/vanagon/cli/list.rb +74 -0
  20. data/lib/vanagon/cli/render.rb +11 -2
  21. data/lib/vanagon/cli/ship.rb +6 -5
  22. data/lib/vanagon/cli/sign.rb +3 -2
  23. data/lib/vanagon/component.rb +11 -9
  24. data/lib/vanagon/component/dsl.rb +6 -5
  25. data/lib/vanagon/component/source.rb +2 -1
  26. data/lib/vanagon/component/source/git.rb +7 -6
  27. data/lib/vanagon/component/source/http.rb +3 -2
  28. data/lib/vanagon/component/source/local.rb +2 -1
  29. data/lib/vanagon/component/source/rewrite.rb +3 -2
  30. data/lib/vanagon/driver.rb +35 -34
  31. data/lib/vanagon/engine/always_be_scheduling.rb +272 -1
  32. data/lib/vanagon/engine/docker.rb +2 -1
  33. data/lib/vanagon/engine/ec2.rb +5 -4
  34. data/lib/vanagon/engine/hardware.rb +4 -3
  35. data/lib/vanagon/engine/pooler.rb +13 -8
  36. data/lib/vanagon/environment.rb +3 -2
  37. data/lib/vanagon/logger.rb +31 -0
  38. data/lib/vanagon/platform.rb +6 -5
  39. data/lib/vanagon/platform/deb.rb +2 -0
  40. data/lib/vanagon/platform/dsl.rb +5 -4
  41. data/lib/vanagon/platform/windows.rb +3 -1
  42. data/lib/vanagon/project.rb +20 -14
  43. data/lib/vanagon/project/dsl.rb +6 -5
  44. data/lib/vanagon/utilities.rb +35 -12
  45. data/resources/deb/control.erb +1 -1
  46. data/resources/osx/postinstall.erb +5 -1
  47. data/resources/rpm/project.spec.erb +1 -1
  48. data/resources/solaris/10/depend.erb +2 -2
  49. data/resources/solaris/10/postinstall.erb +10 -2
  50. data/resources/solaris/11/p5m.erb +2 -2
  51. data/spec/lib/vanagon/cli_spec.rb +143 -0
  52. data/spec/lib/vanagon/component/dsl_spec.rb +9 -2
  53. data/spec/lib/vanagon/component_spec.rb +3 -2
  54. data/spec/lib/vanagon/driver_spec.rb +1 -1
  55. data/spec/lib/vanagon/engine/always_be_scheduling_spec.rb +113 -1
  56. data/spec/lib/vanagon/engine/ec2_spec.rb +2 -0
  57. data/spec/lib/vanagon/engine/pooler_spec.rb +1 -1
  58. data/spec/spec_helper.rb +1 -0
  59. metadata +32 -27
@@ -18,7 +18,7 @@ Breaks: <%= get_replaces.map { |replace| "#{replace.replacement} #{replace.versi
18
18
  Conflicts: <%= get_conflicts.map { |conflict| "#{conflict.pkgname} #{conflict.version ? "(#{conflict.version})" : ""}" }.join(", ") %>
19
19
  <%- end -%>
20
20
  <%- unless get_requires.empty? -%>
21
- Depends: <%= get_requires.join(", ") %>
21
+ Depends: <%= get_requires.map { |req| "#{req.requirement} #{req.version ? "(#{req.version})" : ""}" }.join(", ") %>
22
22
  <%- end -%>
23
23
  <%- unless get_provides.empty? -%>
24
24
  Provides: <%= get_provides.map { |prov| prov.provide }.join(", ") %>
@@ -6,7 +6,11 @@
6
6
  dest_file = config.path.gsub(/\.pristine$/, '') -%>
7
7
 
8
8
  if [ -f "<%= dest_file %>" ]; then
9
- echo "Detected file at '<%= dest_file %>'; updated file at '<%= config.path %>'."
9
+ if diff "<%= config.path %>" "<%= dest_file %>" > /dev/null; then
10
+ rm -f "<%= config.path %>"
11
+ else
12
+ echo "Detected file at '<%= dest_file %>'; updated file at '<%= config.path %>'."
13
+ fi
10
14
  else
11
15
  mv '<%= config.path %>' '<%= dest_file %>'
12
16
  fi
@@ -77,7 +77,7 @@ Source1: file-list-for-rpm
77
77
  Autoprov: 0
78
78
  Autoreq: 0
79
79
  <%- get_requires.each do |requires| -%>
80
- Requires: <%= requires %>
80
+ Requires: <%= requires.requirement %><%= requires.version ? " #{requires.version}" : "" %>
81
81
  <%- end -%>
82
82
 
83
83
  # All rpm packages built by vanagon have the pre-/post-install script
@@ -1,3 +1,3 @@
1
- <%- get_requires.each do |requirement| -%>
2
- P <%= requirement %>
1
+ <%- get_requires.each do |requires| -%>
2
+ P <%= requires.requirement %>
3
3
  <%- end -%>
@@ -10,7 +10,11 @@
10
10
  dest_file = config.path.gsub(/\.pristine$/, '') -%>
11
11
 
12
12
  if [ -f "<%= dest_file %>" ]; then
13
- echo "Detected file at '<%= dest_file %>'; updated file at '<%= config.path %>'."
13
+ if diff "<%= config.path %>" "<%= dest_file %>" > /dev/null; then
14
+ rm -f "<%= config.path %>"
15
+ else
16
+ echo "Detected file at '<%= dest_file %>'; updated file at '<%= config.path %>'."
17
+ fi
14
18
  else
15
19
  cp -pr '<%= config.path %>' '<%= dest_file %>'
16
20
  fi
@@ -19,7 +23,11 @@ fi
19
23
 
20
24
  # Set up any specific permissions needed...
21
25
  <%- (get_directories + get_configfiles + get_files).select { |pathname| pathname.has_overrides? }.uniq.each do |file_or_directory| -%>
22
- <%= "chmod '#{file_or_directory.mode}' '#{file_or_directory.path}'" if file_or_directory.mode %>
26
+ <%- if file_or_directory.mode -%>
27
+ if [ -f "<%= file_or_directory.path %>" ] || [ -d "<%= file_or_directory.path %>" ]; then
28
+ chmod '<%= file_or_directory.mode %>' '<%= file_or_directory.path %>'
29
+ fi
30
+ <%- end -%>
23
31
  <%- if file_or_directory.owner -%>
24
32
  if getent passwd '<%= file_or_directory.owner %>' &> /dev/null; then
25
33
  chown '<%= file_or_directory.owner %>' '<%= file_or_directory.path %>'
@@ -17,8 +17,8 @@ set name=variant.opensolaris.zone value=global value=nonglobal
17
17
  %>
18
18
 
19
19
  # Add any needed dependencies
20
- <%- get_requires.each do |requirement| -%>
21
- depend fmri=pkg:/<%= requirement %> type=require
20
+ <%- get_requires.each do |requires| -%>
21
+ depend fmri=pkg:/<%= requires.requirement %> type=require
22
22
  <%- end -%>
23
23
 
24
24
  # Always drop /etc, /usr, and /var, it will cause conflicts with other system packages
@@ -78,3 +78,146 @@ describe Vanagon::CLI do
78
78
  end
79
79
  end
80
80
  end
81
+
82
+ describe Vanagon::CLI::List do
83
+ let(:cli) { Vanagon::CLI::List.new }
84
+
85
+ describe "#output" do
86
+ let(:list) { ['a', 'b', 'c']}
87
+ it "returns an array if space is false" do
88
+ expect(cli.output(list, false)).to eq(list)
89
+ end
90
+ it "returns space separated if space is true" do
91
+ expect(cli.output(list, true)).to eq('a b c')
92
+ end
93
+ end
94
+
95
+ describe "#run" do
96
+ let(:projects){ ['foo', 'bar', 'baz'] }
97
+ let(:platforms){ ['1', '2', '3'] }
98
+ let(:output_both){
99
+ "- Projects
100
+ foo
101
+ bar
102
+ baz
103
+
104
+ - Platforms
105
+ 1
106
+ 2
107
+ 3
108
+ "
109
+ }
110
+ context "specs with standard config path" do
111
+ before(:each) do
112
+ expect(Dir).to receive(:exist?)
113
+ .with("#{File.join(Dir.pwd, 'configs', 'platforms')}")
114
+ .and_return(true)
115
+ expect(Dir).to receive(:exist?)
116
+ .with("#{File.join(Dir.pwd, 'configs', 'projects')}")
117
+ .and_return(true)
118
+ expect(Dir).to receive(:children)
119
+ .with("#{File.join(Dir.pwd, 'configs', 'projects')}")
120
+ .and_return(projects)
121
+ expect(Dir).to receive(:children)
122
+ .with("#{File.join(Dir.pwd, 'configs', 'platforms')}")
123
+ .and_return(platforms)
124
+ end
125
+ let(:options_empty) { {
126
+ nil=>false,
127
+ :configdir=>"#{Dir.pwd}/configs",
128
+ :platforms=>false,
129
+ :projects=>false,
130
+ :use_spaces=>false
131
+ } }
132
+ let(:options_platforms_only) { {
133
+ nil=>false,
134
+ :configdir=>"#{Dir.pwd}/configs",
135
+ :platforms=>true,
136
+ :projects=>false,
137
+ :use_spaces=>false
138
+ } }
139
+ let(:options_projects_only) { {
140
+ nil=>false,
141
+ :configdir=>"#{Dir.pwd}/configs",
142
+ :platforms=>false,
143
+ :projects=>true,
144
+ :use_spaces=>false
145
+ } }
146
+ let(:options_space_only) { {
147
+ nil=>false,
148
+ :configdir=>"#{Dir.pwd}/configs",
149
+ :platforms=>false,
150
+ :projects=>false,
151
+ :use_spaces=>true
152
+ } }
153
+
154
+ it "outputs projects and platforms with no options passed" do
155
+ expect do
156
+ cli.run(options_empty)
157
+ end.to output(output_both).to_stdout
158
+ end
159
+
160
+ let(:output_both_space){
161
+ "- Projects
162
+ foo bar baz
163
+
164
+ - Platforms
165
+ 1 2 3
166
+ "
167
+ }
168
+ it "outputs projects and platforms space separated" do
169
+ expect do
170
+ cli.run(options_space_only)
171
+ end.to output(output_both_space).to_stdout
172
+ end
173
+
174
+ let(:output_platforms){
175
+ "- Platforms
176
+ 1
177
+ 2
178
+ 3
179
+ "
180
+ }
181
+ it "outputs only platforms when platforms is passed" do
182
+ expect do
183
+ cli.run(options_platforms_only)
184
+ end.to output(output_platforms).to_stdout
185
+ end
186
+
187
+ let(:output_projects){
188
+ "- Projects
189
+ foo
190
+ bar
191
+ baz
192
+ "
193
+ }
194
+ it "outputs only projects when projects is passed" do
195
+ expect do
196
+ cli.run(options_projects_only)
197
+ end.to output(output_projects).to_stdout
198
+ end
199
+ end
200
+
201
+ context "spec with a configdir specified" do
202
+ let(:options_configdir) { {
203
+ nil=>false,
204
+ :configdir=> '/configs',
205
+ :platforms=>false,
206
+ :projects=>false,
207
+ :use_spaces=>false} }
208
+ it "it successfully takes the configs directory" do
209
+ expect(Dir).to receive(:exist?).with('/configs' + '/platforms')
210
+ .and_return(true)
211
+ expect(Dir).to receive(:exist?).with('/configs' + '/projects')
212
+ .and_return(true)
213
+ expect(Dir).to receive(:children).with('/configs' + '/projects')
214
+ .and_return(projects)
215
+ expect(Dir).to receive(:children).with('/configs' + '/platforms')
216
+ .and_return(platforms)
217
+ expect do
218
+ cli.run(options_configdir)
219
+ end.to output(output_both).to_stdout
220
+ end
221
+ end
222
+ end
223
+ end
@@ -313,11 +313,18 @@ end" }
313
313
  comp = Vanagon::Component::DSL.new('requires-test', {}, {})
314
314
  comp.requires('library1')
315
315
  comp.requires('library2')
316
- expect(comp._component.requires).to include('library1')
317
- expect(comp._component.requires).to include('library2')
316
+ expect(comp._component.requires.first.requirement).to include('library1')
317
+ expect(comp._component.requires.last.requirement).to include('library2')
318
318
  end
319
319
  end
320
320
 
321
+ it 'supports versioned requires' do
322
+ comp = Vanagon::Component::DSL.new('requires-test', {}, {})
323
+ comp.requires('library1', '1.2.3')
324
+ expect(comp._component.requires.first.requirement).to eq('library1')
325
+ expect(comp._component.requires.first.version).to eq('1.2.3')
326
+ end
327
+
321
328
  describe '#provides' do
322
329
  it 'adds the package provide to the list of provides' do
323
330
  comp = Vanagon::Component::DSL.new('provides-test', {}, {})
@@ -5,8 +5,9 @@ describe "Vanagon::Component" do
5
5
  describe "#get_environment" do
6
6
  subject { Vanagon::Component.new('env-test', {}, {}) }
7
7
 
8
- it "prints a deprecation warning to STDERR" do
9
- expect { subject.get_environment }.to output(/deprecated/).to_stderr
8
+ it "logs a deprecation warning with VanagonLogger.info" do
9
+ expect(VanagonLogger).to receive(:info).with(/deprecated/)
10
+ subject.get_environment
10
11
  end
11
12
 
12
13
  it "returns a makefile compatible environment" do
@@ -50,7 +50,7 @@ describe 'Vanagon::Driver' do
50
50
  info = create_driver(redhat).build_host_info
51
51
 
52
52
  expect(info).to match({ 'name' => 'centos-7-x86_64',
53
- 'engine' => 'pooler' })
53
+ 'engine' => 'always_be_scheduling' })
54
54
  end
55
55
 
56
56
  it 'returns the vmpooler template with an explicit engine' do
@@ -2,6 +2,7 @@ require 'vanagon/engine/always_be_scheduling'
2
2
  require 'vanagon/driver'
3
3
  require 'vanagon/platform'
4
4
  require 'logger'
5
+ require 'spec_helper'
5
6
 
6
7
  class Vanagon
7
8
  class Driver
@@ -45,6 +46,8 @@ describe 'Vanagon::Engine::AlwaysBeScheduling' do
45
46
  end")
46
47
  plat._platform
47
48
  }
49
+ let(:pooler_token_file) { File.expand_path('~/.vanagon-token') }
50
+ let(:floaty_config) { File.expand_path('~/.vmfloaty.yml') }
48
51
 
49
52
  describe '#validate_platform' do
50
53
  it 'returns true if the platform has the required attributes' do
@@ -81,4 +84,113 @@ describe 'Vanagon::Engine::AlwaysBeScheduling' do
81
84
  .to eq('always_be_scheduling')
82
85
  end
83
86
  end
84
- end
87
+
88
+ describe '#read_vanagon_token' do
89
+ it 'takes the first line for abs token, second line is optional' do
90
+ token_value = 'decade'
91
+ allow(File).to receive(:exist?)
92
+ .with(pooler_token_file)
93
+ .and_return(true)
94
+
95
+ allow(File).to receive(:read)
96
+ .with(pooler_token_file)
97
+ .and_return(token_value)
98
+
99
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
100
+ expect(abs_service.token).to eq('decade')
101
+ expect(abs_service.token_vmpooler).to eq(nil)
102
+ end
103
+ it 'takes the second line as vmpooler token' do
104
+ token_value = "decade\nanddaycade"
105
+ allow(File).to receive(:exist?)
106
+ .with(pooler_token_file)
107
+ .and_return(true)
108
+
109
+ allow(File).to receive(:read)
110
+ .with(pooler_token_file)
111
+ .and_return(token_value)
112
+
113
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
114
+ expect(abs_service.token).to eq('decade')
115
+ expect(abs_service.token_vmpooler).to eq('anddaycade')
116
+ end
117
+ end
118
+
119
+ describe '#read_vmfloaty_token' do
120
+ before :each do
121
+ allow(File).to receive(:exist?)
122
+ .with(pooler_token_file)
123
+ .and_return(false)
124
+
125
+ allow(File).to receive(:exist?)
126
+ .with(floaty_config)
127
+ .and_return(true)
128
+ end
129
+ token_value = 'decade'
130
+ it %(reads a token from '~/.vmfloaty.yml at the top level') do
131
+ allow(YAML).to receive(:load_file)
132
+ .with(floaty_config)
133
+ .and_return({'token' => token_value})
134
+
135
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
136
+ expect(abs_service.token).to eq(token_value)
137
+ expect(abs_service.token_vmpooler).to eq(nil)
138
+ end
139
+ it %(reads a token from '~/.vmfloaty.yml in the abs service') do
140
+ allow(YAML).to receive(:load_file)
141
+ .with(floaty_config)
142
+ .and_return({'services' =>
143
+ {'MYabs' => {'type'=>'abs', 'token'=>token_value, 'url'=>'foo'}}
144
+ })
145
+
146
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
147
+ expect(abs_service.token).to eq(token_value)
148
+ expect(abs_service.token_vmpooler).to eq(nil)
149
+ end
150
+ it %(reads a token from '~/.vmfloaty.yml in the abs service and includes the vmpooler token') do
151
+ vmp_token_value = 'deecade'
152
+ allow(YAML).to receive(:load_file)
153
+ .with(floaty_config)
154
+ .and_return({'services' =>
155
+ {'MYabs' => {'type'=>'abs', 'token'=>token_value, 'url'=>'foo', 'vmpooler_fallback' => 'myvmp'},
156
+ 'myvmp' => {'token'=>vmp_token_value, 'url'=>'bar'}}
157
+ })
158
+
159
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
160
+ expect(abs_service.token).to eq(token_value)
161
+ expect(abs_service.token_vmpooler).to eq(vmp_token_value)
162
+ end
163
+ end
164
+ describe '#select_target_from' do
165
+ it 'runs successfully' do
166
+ hostname = 'faint-whirlwind.puppet.com'
167
+ stub_request(:post, "https://foobar/request").
168
+ to_return({status: 202, body: "", headers: {}},{status: 200, body: '[{"hostname":"'+hostname+'","type":"aix-6.1-ppc","engine":"nspooler"}]', headers: {}})
169
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
170
+ abs_service.select_target_from("https://foobar")
171
+ expect(abs_service.target).to eq(hostname)
172
+ end
173
+ it 'returns a warning if the first request is not a 202' do
174
+ hostname = 'fainter-whirlwind.puppet.com'
175
+ stub_request(:post, "https://foobar/request").
176
+ to_return({status: 404, body: "", headers: {}},{status: 200, body: '[{"hostname":"'+hostname+'","type":"aix-6.1-ppc","engine":"nspooler"}]', headers: {}})
177
+ allow_any_instance_of(VanagonLogger).to receive(:info)
178
+ expect_any_instance_of(VanagonLogger).to receive(:info).with("failed to request ABS with code 404")
179
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
180
+ pooler = abs_service.select_target_from("https://foobar")
181
+ expect(pooler).to eq('')
182
+ end
183
+ it 'returns a warning and retries until request is a 200' do
184
+ hostname = 'faintest-whirlwind.puppet.com'
185
+ stub_request(:post, "https://foobar/request").
186
+ to_return({status: 202, body: "", headers: {}},
187
+ {status: 503, body: "", headers: {}},
188
+ {status: 200, body: '[{"hostname":"'+hostname+'","type":"aix-6.1-ppc","engine":"nspooler"}]', headers: {}})
189
+ allow_any_instance_of(VanagonLogger).to receive(:info)
190
+ expect_any_instance_of(VanagonLogger).to receive(:info).with(/Waiting 1 seconds to check if ABS request has been filled/)
191
+ abs_service = Vanagon::Engine::AlwaysBeScheduling.new(platform, nil)
192
+ abs_service.select_target_from("https://foobar")
193
+ expect(abs_service.target).to eq(hostname)
194
+ end
195
+ end
196
+ end
@@ -27,6 +27,8 @@ if defined? ::Aws
27
27
  end
28
28
 
29
29
  it 'returns "ec2" name' do
30
+ stub_request(:get, "http://169.254.169.254/latest/meta-data/iam/security-credentials/").
31
+ to_return(status: 200, body: "", headers: {})
30
32
  expect(Vanagon::Engine::Ec2.new(platform_ec2).name).to eq('ec2')
31
33
  end
32
34
  end
@@ -6,7 +6,7 @@ describe 'Vanagon::Engine::Pooler' do
6
6
  let (:platform_with_vcloud_name) {
7
7
  plat = Vanagon::Platform::DSL.new('debian-6-i386')
8
8
  plat.instance_eval("platform 'debian-6-i386' do |plat|
9
- plat.vcloud_name 'debian-6-i386'
9
+ plat.vmpooler_template 'debian-6-i386'
10
10
  end")
11
11
  plat._platform
12
12
  }
@@ -19,6 +19,7 @@ end
19
19
 
20
20
  require 'tmpdir'
21
21
  require 'vanagon'
22
+ require 'webmock/rspec'
22
23
 
23
24
  RSpec.configure do |c|
24
25
  c.before do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-17 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -107,6 +107,8 @@ files:
107
107
  - bin/ship
108
108
  - bin/sign
109
109
  - bin/vanagon
110
+ - extras/completions/vanagon.bash
111
+ - extras/completions/vanagon.zsh
110
112
  - lib/git/basic_submodules.rb
111
113
  - lib/git/rev_list.rb
112
114
  - lib/makefile.rb
@@ -115,7 +117,9 @@ files:
115
117
  - lib/vanagon/cli/build.rb
116
118
  - lib/vanagon/cli/build_host_info.rb
117
119
  - lib/vanagon/cli/build_requirements.rb
120
+ - lib/vanagon/cli/completion.rb
118
121
  - lib/vanagon/cli/inspect.rb
122
+ - lib/vanagon/cli/list.rb
119
123
  - lib/vanagon/cli/render.rb
120
124
  - lib/vanagon/cli/ship.rb
121
125
  - lib/vanagon/cli/sign.rb
@@ -144,6 +148,7 @@ files:
144
148
  - lib/vanagon/extensions/ostruct/json.rb
145
149
  - lib/vanagon/extensions/set/json.rb
146
150
  - lib/vanagon/extensions/string.rb
151
+ - lib/vanagon/logger.rb
147
152
  - lib/vanagon/patch.rb
148
153
  - lib/vanagon/platform.rb
149
154
  - lib/vanagon/platform/deb.rb
@@ -288,41 +293,41 @@ signing_key:
288
293
  specification_version: 3
289
294
  summary: All of your packages will fit into this van with this one simple trick.
290
295
  test_files:
291
- - spec/lib/vanagon/platform/rpm/aix_spec.rb
292
- - spec/lib/vanagon/platform/osx_spec.rb
293
- - spec/lib/vanagon/platform/windows_spec.rb
294
- - spec/lib/vanagon/platform/rpm_spec.rb
295
- - spec/lib/vanagon/platform/deb_spec.rb
296
- - spec/lib/vanagon/platform/solaris_11_spec.rb
297
- - spec/lib/vanagon/platform/solaris_10_spec.rb
298
- - spec/lib/vanagon/platform/dsl_spec.rb
299
- - spec/lib/vanagon/driver_spec.rb
300
- - spec/lib/vanagon/project/dsl_spec.rb
301
- - spec/lib/vanagon/utilities_spec.rb
302
- - spec/lib/vanagon/cli_spec.rb
303
- - spec/lib/vanagon/environment_spec.rb
304
- - spec/lib/vanagon/component/rules_spec.rb
305
- - spec/lib/vanagon/component/source_spec.rb
296
+ - spec/lib/vanagon/component/dsl_spec.rb
306
297
  - spec/lib/vanagon/component/source/local_spec.rb
307
- - spec/lib/vanagon/component/source/git_spec.rb
308
- - spec/lib/vanagon/component/source/http_spec.rb
309
298
  - spec/lib/vanagon/component/source/rewrite_spec.rb
310
- - spec/lib/vanagon/component/dsl_spec.rb
311
- - spec/lib/vanagon/utilities/shell_utilities_spec.rb
299
+ - spec/lib/vanagon/component/source/http_spec.rb
300
+ - spec/lib/vanagon/component/source/git_spec.rb
301
+ - spec/lib/vanagon/component/rules_spec.rb
302
+ - spec/lib/vanagon/component/source_spec.rb
312
303
  - spec/lib/vanagon/extensions/set/json_spec.rb
313
304
  - spec/lib/vanagon/extensions/string_spec.rb
314
305
  - spec/lib/vanagon/extensions/ostruct/json_spec.rb
306
+ - spec/lib/vanagon/platform/dsl_spec.rb
307
+ - spec/lib/vanagon/platform/windows_spec.rb
308
+ - spec/lib/vanagon/platform/solaris_11_spec.rb
309
+ - spec/lib/vanagon/platform/rpm/aix_spec.rb
310
+ - spec/lib/vanagon/platform/solaris_10_spec.rb
311
+ - spec/lib/vanagon/platform/deb_spec.rb
312
+ - spec/lib/vanagon/platform/osx_spec.rb
313
+ - spec/lib/vanagon/platform/rpm_spec.rb
314
+ - spec/lib/vanagon/common/pathname_spec.rb
315
+ - spec/lib/vanagon/common/user_spec.rb
316
+ - spec/lib/vanagon/utilities_spec.rb
317
+ - spec/lib/vanagon/project_spec.rb
318
+ - spec/lib/vanagon/project/dsl_spec.rb
315
319
  - spec/lib/vanagon/component_spec.rb
320
+ - spec/lib/vanagon/utilities/shell_utilities_spec.rb
321
+ - spec/lib/vanagon/environment_spec.rb
322
+ - spec/lib/vanagon/driver_spec.rb
323
+ - spec/lib/vanagon/cli_spec.rb
316
324
  - spec/lib/vanagon/platform_spec.rb
317
325
  - spec/lib/vanagon/engine/local_spec.rb
318
- - spec/lib/vanagon/engine/hardware_spec.rb
326
+ - spec/lib/vanagon/engine/ec2_spec.rb
319
327
  - spec/lib/vanagon/engine/always_be_scheduling_spec.rb
320
- - spec/lib/vanagon/engine/pooler_spec.rb
321
328
  - spec/lib/vanagon/engine/base_spec.rb
322
- - spec/lib/vanagon/engine/ec2_spec.rb
323
329
  - spec/lib/vanagon/engine/docker_spec.rb
324
- - spec/lib/vanagon/common/user_spec.rb
325
- - spec/lib/vanagon/common/pathname_spec.rb
326
- - spec/lib/vanagon/project_spec.rb
330
+ - spec/lib/vanagon/engine/hardware_spec.rb
331
+ - spec/lib/vanagon/engine/pooler_spec.rb
327
332
  - spec/lib/makefile_spec.rb
328
333
  - spec/lib/git/rev_list_spec.rb