vagrant-dsc 0.0.1 → 1.0.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.
@@ -1,46 +1,406 @@
1
1
  require 'spec_helper'
2
2
  require 'vagrant-dsc/provisioner'
3
+ require 'vagrant-dsc/config'
3
4
  require 'rspec/its'
4
5
 
5
6
  describe VagrantPlugins::DSC::Provisioner do
6
- let(:instance) { described_class.new }
7
+ include_context "unit"
7
8
 
8
- before { subject.finalize! }
9
+ let(:root_path) { (Pathname.new(Dir.mktmpdir)).to_s }
10
+ let(:ui) { Vagrant::UI::Silent.new }
11
+ let(:machine) { double("machine", ui: ui) }
12
+ let(:env) { double("environment", root_path: root_path, ui: ui) }
13
+ let(:vm) { double ("vm") }
14
+ let(:communicator) { double ("communicator") }
15
+ let(:guest) { double ("guest") }
16
+ let(:configuration_file) { "manifests/MyWebsite.ps1" }
17
+ let(:module_path) { ["foo/modules", "foo/modules2"] }
18
+ let(:root_config) { VagrantPlugins::DSC::Config.new }
19
+ subject { described_class.new machine, root_config }
20
+
21
+ describe "configure" do
22
+ before do
23
+ allow(machine).to receive(:root_config).and_return(root_config)
24
+ machine.stub(config: root_config, env: env)
25
+ root_config.module_path = module_path
26
+ root_config.configuration_file = configuration_file
27
+ root_config.finalize!
28
+ root_config.validate(machine)
29
+ end
30
+
31
+ it "should confirm if the OS is Windows by confirming with the communicator" do
32
+ allow(root_config).to receive(:vm).and_return(vm)
33
+ allow(vm).to receive(:communicator).and_return(:winrm)
34
+ expect(subject.windows?).to eq(true)
35
+ end
36
+
37
+ it "when given default configuration, should share module and manifest folders with the guest" do
38
+ allow(root_config).to receive(:vm).and_return(vm)
39
+ expect(vm).to receive(:synced_folder).with("#{root_path}/manifests", /\/tmp\/vagrant-dsc-[0-9]+\/manifests/, {:owner=>"root"})
40
+ expect(vm).to receive(:synced_folder).with("#{root_path}/foo/modules", /\/tmp\/vagrant-dsc-[0-9]+\/modules-0/, {:owner=>"root"})
41
+ expect(vm).to receive(:synced_folder).with("#{root_path}/foo/modules2", /\/tmp\/vagrant-dsc-[0-9]+\/modules-1/, {:owner=>"root"})
42
+
43
+ subject.configure(root_config)
44
+ end
45
+
46
+ it "when given a specific folder type, should modify folder options when sharing module and manifest folders with the guest" do
47
+ root_config.synced_folder_type = "nfs"
48
+ allow(root_config).to receive(:vm).and_return(vm)
49
+
50
+ expect(vm).to receive(:synced_folder).with("#{root_path}/manifests", /\/tmp\/vagrant-dsc-[0-9]+\/manifests/, {:type=>"nfs"})
51
+ expect(vm).to receive(:synced_folder).with("#{root_path}/foo/modules", /\/tmp\/vagrant-dsc-[0-9]+\/modules-0/, {:type=>"nfs"})
52
+ expect(vm).to receive(:synced_folder).with("#{root_path}/foo/modules2", /\/tmp\/vagrant-dsc-[0-9]+\/modules-1/, {:type=>"nfs"})
53
+
54
+ subject.configure(root_config)
55
+ end
56
+
57
+ it "when provided only manifests path, should only share manifest folders with the guest" do
58
+ root_config.synced_folder_type = "nfs"
59
+ root_config.module_path = nil
60
+ allow(root_config).to receive(:vm).and_return(vm)
61
+
62
+ expect(vm).to receive(:synced_folder).with("#{root_path}/manifests", /\/tmp\/vagrant-dsc-[0-9]+\/manifests/, {:type=>"nfs"})
63
+
64
+ subject.configure(root_config)
65
+ end
66
+
67
+ it "should install DSC for supported OS's" do
68
+ expect { subject.install_dsc }.to raise_error("\"Operation unsupported / not-yet implemented: install_dsc\"")
69
+
70
+
71
+ # "Operation unsupported / not-yet implemented: install_dsc"
72
+ # expect { subject.install_dsc }.to raise_error(VagrantPlugins::DSC::DSCError)
73
+ end
74
+ end
75
+
76
+ describe "verify shared folders" do
77
+
78
+ before do
79
+ allow(machine).to receive(:root_config).and_return(root_config)
80
+ machine.stub(config: root_config, env: env, communicate: communicator)
81
+ root_config.module_path = module_path
82
+ root_config.configuration_file = configuration_file
83
+ root_config.finalize!
84
+ root_config.validate(machine)
85
+ end
86
+
87
+ it "should raise error if folders not shared" do
88
+ root_config.synced_folder_type = "nfs"
89
+
90
+ expect(communicator).to receive(:test).with("test -d foo/modules", {:sudo=>true}).and_return(false)
91
+
92
+ subject.configure(root_config)
93
+
94
+ folders = module_path << File.dirname(configuration_file)
95
+ expect { subject.verify_shared_folders(folders) }.to raise_error("Shared folders not properly configured. This is generally resolved by a 'vagrant halt && vagrant up'")
96
+ end
97
+
98
+ it "should ensure shared folders are properly shared" do
99
+ root_config.synced_folder_type = "nfs"
100
+
101
+ expect(communicator).to receive(:test).with("test -d foo/modules", {:sudo=>true}).and_return(true)
102
+ expect(communicator).to receive(:test).with("test -d foo/modules2", {:sudo=>true}).and_return(true)
103
+ expect(communicator).to receive(:test).with("test -d manifests", {:sudo=>true}).and_return(true)
104
+
105
+ subject.configure(root_config)
106
+
107
+ folders = module_path << File.dirname(configuration_file)
108
+ subject.verify_shared_folders(folders)
109
+ end
110
+ end
111
+
112
+ describe "provision" do
113
+
114
+ before do
115
+ # allow(root_config).to receive(:vm).and_return(vm)
116
+ allow(machine).to receive(:root_config).and_return(root_config)
117
+ allow(machine).to receive(:env).and_return(env)
118
+ root_config.module_path = module_path
119
+ root_config.configuration_file = configuration_file
120
+ root_config.finalize!
121
+ root_config.validate(machine)
122
+ subject.configure(root_config)
123
+ # allow(root_config).to receive(:vm).and_return(vm)
124
+ machine.stub(config: root_config, env: env, communicate: communicator, guest: guest)
125
+ end
126
+
127
+ it "should allow reboot capability when capability exists" do
128
+ allow(communicator).to receive(:sudo)
129
+ allow(communicator).to receive(:test)
130
+ allow(subject).to receive(:verify_shared_folders).and_return(true)
131
+ allow(subject).to receive(:verify_dsc).and_return(true)
132
+ allow(subject).to receive(:run_dsc_apply).and_return(true)
133
+ allow(guest).to receive(:capability?).with(:wait_for_reboot).and_return(true)
134
+ expect(guest).to receive(:capability).with(:wait_for_reboot)
135
+
136
+ subject.provision
137
+ end
138
+
139
+ it "should not allow reboot capability when capability does not exist" do
140
+ allow(communicator).to receive(:sudo)
141
+ allow(communicator).to receive(:test)
142
+ allow(subject).to receive(:verify_shared_folders).and_return(true)
143
+ allow(subject).to receive(:verify_dsc).and_return(true)
144
+ allow(subject).to receive(:run_dsc_apply).and_return(true)
145
+ allow(guest).to receive(:capability?).with(:wait_for_reboot).and_return(false)
146
+ expect(guest).to_not receive(:capability).with(:wait_for_reboot)
147
+
148
+ subject.provision
149
+ end
150
+
151
+ it "should create temporary folders on the guest" do
152
+ allow(communicator).to receive(:test)
153
+ allow(subject).to receive(:verify_shared_folders).and_return(true)
154
+ allow(subject).to receive(:verify_dsc).and_return(true)
155
+ allow(subject).to receive(:run_dsc_apply).and_return(true)
156
+ allow(guest).to receive(:capability?)
157
+ allow(guest).to receive(:capability)
158
+
159
+ expect(communicator).to receive(:sudo).with("mkdir -p #{root_config.temp_dir}")
160
+ expect(communicator).to receive(:sudo).with("chmod 0777 #{root_config.temp_dir}")
161
+
162
+ subject.provision
163
+ end
164
+
165
+ it "should ensure shared folders are properly configured" do
166
+ allow(communicator).to receive(:test)
167
+ allow(communicator).to receive(:sudo)
168
+ allow(subject).to receive(:verify_dsc).and_return(true)
169
+ allow(subject).to receive(:run_dsc_apply).and_return(true)
170
+ allow(guest).to receive(:capability?)
171
+ allow(guest).to receive(:capability)
172
+
173
+ check = ["#{root_config.temp_dir}/manifests", "#{root_config.temp_dir}/modules-0", "#{root_config.temp_dir}/modules-1"]
174
+ expect(subject).to receive(:verify_shared_folders).with(check)
175
+
176
+ subject.provision
177
+ end
178
+
179
+ it "should verify DSC binary exists" do
180
+ expect(communicator).to receive(:sudo).with("which Start-DscConfiguration", {:error_class=>VagrantPlugins::DSC::DSCError, :error_key=>:dsc_not_detected, :binary=>"Start-DscConfiguration"})
181
+ subject.verify_binary("Start-DscConfiguration")
182
+ end
183
+
184
+ it "should verify DSC and Powershell versions are valid" do
185
+ expect(communicator).to receive(:test).with("(($PSVersionTable | ConvertTo-json | ConvertFrom-Json).PSVersion.Major) -ge 4", {:error_class=>VagrantPlugins::DSC::DSCError, :error_key=>:dsc_incorrect_PowerShell_version}).and_return(true)
186
+ allow(subject).to receive(:verify_binary).and_return(true)
187
+ subject.verify_dsc
188
+ end
189
+
190
+ it "should raise an error if DSC version is invalid" do
191
+ # shell = double("WinRMShell")
192
+ # allow(communicator).to receive(:shell).and_return(shell)
193
+ # allow(communicator).to receive(:create_shell).and_return(shell)
194
+
195
+ # TODO: Create an actual Communicator object and mock out methods/calls to isolate this behaviour better
196
+ expect(communicator).to receive(:test).with("(($PSVersionTable | ConvertTo-json | ConvertFrom-Json).PSVersion.Major) -ge 4", {:error_class=>VagrantPlugins::DSC::DSCError, :error_key=>:dsc_incorrect_PowerShell_version})
197
+ allow(subject).to receive(:verify_binary).and_return(true)
198
+ # expect { subject.verify_dsc }.to raise_error("Unable to detect a working DSC environment. Please ensure powershell v4+ is installed, including WMF 4+.")
199
+ subject.verify_dsc
200
+ end
201
+
202
+ it "should raise an error if Powershell version is invalid" do
203
+
204
+ end
205
+ end
206
+
207
+ describe "DSC runner script" do
208
+ before do
209
+ # Prevent counters messing with output in tests
210
+ Vagrant::Util::Counter.class_eval do
211
+ def get_and_update_counter(name=nil) 1 end
212
+ end
213
+
214
+ allow(machine).to receive(:root_config).and_return(root_config)
215
+ root_config.configuration_file = configuration_file
216
+ machine.stub(config: root_config, env: env)
217
+ root_config.module_path = module_path
218
+ root_config.configuration_file = configuration_file
219
+ root_config.finalize!
220
+ root_config.validate(machine)
221
+ subject.configure(root_config)
222
+
223
+ end
224
+
225
+ context "with default parameters" do
226
+ it "should generate a valid powershell command" do
227
+ script = subject.generate_dsc_runner_script
228
+ expect_script = "#
229
+ # DSC Runner.
230
+ #
231
+ # Bootstraps the DSC environment, sets up configuration data
232
+ # and runs the DSC Configuration.
233
+ #
234
+ #
235
+
236
+ # Set the local PowerShell Module environment path
237
+ echo \"Adding to path: /tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\"
238
+ $env:PSModulePath=\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1;${env:PSModulePath}\"
239
+
240
+ $script = $(Join-Path \"/tmp/vagrant-dsc-1\" \"manifests/MyWebsite.ps1\")
241
+ echo \"PSModulePath Configured: ${env:PSModulePath}\"
242
+ echo \"Running Configuration file: ${script}\"
243
+
244
+ # Generate the MOF file, only if a MOF path not already provided.
245
+ # Import the Manifest
246
+ . $script
247
+
248
+ cd \"/tmp/vagrant-dsc-1\"
249
+ $StagingPath = $(Join-Path \"/tmp/vagrant-dsc-1\" \"staging\")
250
+ MyWebsite -MachineName \"localhost\" -OutputPath $StagingPath
251
+
252
+ # Start a DSC Configuration run
253
+ Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath
254
+
255
+ # Cleanup
256
+ del -Path $StagingPath -Recurse"
257
+
258
+ expect(script).to eq(expect_script)
259
+ end
260
+
261
+ it "should skip MOF file generation if one already provided" do
9
262
 
10
- describe "defaults" do
11
- subject do
12
- instance.tap do |o|
13
- o.finalize!
14
263
  end
15
264
  end
16
265
 
17
- its("manifest_file") { expect = "default.ps1" }
18
- its("manifests_path") { expect = "." }
19
- its("configuration_name") { expect = "default" }
20
- its("mof_file") { expect be_nil }
21
- its("module_path") { expect be_nil }
22
- its("options") { expect = [] }
23
- its("facter") { expect = {} }
24
- its("synced_folder_type") { expect be_nil }
25
- its("temp_dir") { expect match /^\/tmp\/vagrant-dsc-*/ }
26
- its("working_directory") { expect be_nil }
266
+ context "with custom DSC Parameters" do
267
+ it "should pass through arguments to the generated Powershell runner" do
268
+ root_config.configuration_params = {"-Foo" => "bar", "-ComputerName" => "catz"}
269
+ script = subject.generate_dsc_runner_script
270
+
271
+ expect_script = "#
272
+ # DSC Runner.
273
+ #
274
+ # Bootstraps the DSC environment, sets up configuration data
275
+ # and runs the DSC Configuration.
276
+ #
277
+ #
278
+
279
+ # Set the local PowerShell Module environment path
280
+ echo \"Adding to path: /tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\"
281
+ $env:PSModulePath=\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1;${env:PSModulePath}\"
282
+
283
+ $script = $(Join-Path \"/tmp/vagrant-dsc-1\" \"manifests/MyWebsite.ps1\")
284
+ echo \"PSModulePath Configured: ${env:PSModulePath}\"
285
+ echo \"Running Configuration file: ${script}\"
286
+
287
+ # Generate the MOF file, only if a MOF path not already provided.
288
+ # Import the Manifest
289
+ . $script
290
+
291
+ cd \"/tmp/vagrant-dsc-1\"
292
+ $StagingPath = $(Join-Path \"/tmp/vagrant-dsc-1\" \"staging\")
293
+ MyWebsite -MachineName \"localhost\" -OutputPath $StagingPath -Foo \"bar\" -ComputerName \"catz\"
294
+
295
+ # Start a DSC Configuration run
296
+ Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath
297
+
298
+ # Cleanup
299
+ del -Path $StagingPath -Recurse"
27
300
 
301
+ expect(script).to eq(expect_script)
302
+ end
303
+
304
+ it "should allow flags as arguments to the generated Powershell runner" do
305
+ root_config.configuration_params = {"-FooFlag" => nil, "-BarFlag" => nil, "-FooParam" => "FooVal"}
306
+ script = subject.generate_dsc_runner_script
307
+
308
+ expect_script = "#
309
+ # DSC Runner.
310
+ #
311
+ # Bootstraps the DSC environment, sets up configuration data
312
+ # and runs the DSC Configuration.
313
+ #
314
+ #
315
+
316
+ # Set the local PowerShell Module environment path
317
+ echo \"Adding to path: /tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\"
318
+ $env:PSModulePath=\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1;${env:PSModulePath}\"
319
+
320
+ $script = $(Join-Path \"/tmp/vagrant-dsc-1\" \"manifests/MyWebsite.ps1\")
321
+ echo \"PSModulePath Configured: ${env:PSModulePath}\"
322
+ echo \"Running Configuration file: ${script}\"
323
+
324
+ # Generate the MOF file, only if a MOF path not already provided.
325
+ # Import the Manifest
326
+ . $script
327
+
328
+ cd \"/tmp/vagrant-dsc-1\"
329
+ $StagingPath = $(Join-Path \"/tmp/vagrant-dsc-1\" \"staging\")
330
+ MyWebsite -MachineName \"localhost\" -OutputPath $StagingPath -FooFlag -BarFlag -FooParam \"FooVal\"
331
+
332
+ # Start a DSC Configuration run
333
+ Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath
334
+
335
+ # Cleanup
336
+ del -Path $StagingPath -Recurse"
337
+
338
+ expect(script).to eq(expect_script)
339
+ end
340
+ end
341
+
342
+ context "with a MOF file specified" do
343
+ it "should generate a script that does not generate a new MOF" do
344
+ root_config.configuration_params = {}
345
+ root_config.mof_path = "staging"
346
+ script = subject.generate_dsc_runner_script
347
+
348
+ expect_script = "#
349
+ # DSC Runner.
350
+ #
351
+ # Bootstraps the DSC environment, sets up configuration data
352
+ # and runs the DSC Configuration.
353
+ #
354
+ #
355
+
356
+ # Set the local PowerShell Module environment path
357
+ echo \"Adding to path: /tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\"
358
+ $env:PSModulePath=\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1;${env:PSModulePath}\"
359
+
360
+ $script = $(Join-Path \"/tmp/vagrant-dsc-1\" \"manifests/MyWebsite.ps1\")
361
+ echo \"PSModulePath Configured: ${env:PSModulePath}\"
362
+ echo \"Running Configuration file: ${script}\"
363
+
364
+ # Generate the MOF file, only if a MOF path not already provided.
365
+ $StagingPath = \"staging\"
366
+
367
+ # Start a DSC Configuration run
368
+ Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath
369
+
370
+ # Cleanup
371
+ del -Path $StagingPath -Recurse"
372
+
373
+ expect(script).to eq(expect_script)
374
+ end
375
+ end
376
+ end
377
+
378
+ describe "write DSC Runner script" do
379
+ it "should upload the customised DSC runner to the guest" do
380
+ script = "myscript"
381
+ path = "/local/runner/path"
382
+ guest_path = "c:/tmp/vagrant-dsc-runner.ps1"
383
+ machine.stub(config: root_config, env: env, communicate: communicator)
384
+ file = double("file")
385
+ allow(file).to receive(:path).and_return(path)
386
+ allow(Tempfile).to receive(:new) { file }
387
+ expect(file).to receive(:write).with(script)
388
+ expect(file).to receive(:fsync)
389
+ expect(file).to receive(:close).exactly(2).times
390
+ expect(file).to receive(:unlink)
391
+ expect(communicator).to receive(:upload).with(path, guest_path)
392
+ res = subject.write_dsc_runner_script(script)
393
+ expect(res.to_s).to eq(guest_path)
394
+ end
395
+ end
396
+
397
+ describe "Apply DSC" do
398
+ it "should invoke the DSC Runner and notify the User of provisioning status" do
399
+ expect(ui).to receive(:info).with(any_args).once
400
+ expect(ui).to receive(:info).with("provisioned!").once
401
+ allow(machine).to receive(:communicate).and_return(communicator)
402
+ expect(communicator).to receive(:sudo).with('.\\' + "'c:/tmp/vagrant-dsc-runner.ps1'",{:elevated=>true, :error_key=>:ssh_bad_exit_status_muted, :good_exit=>[0, 2]}).and_yield("type", "provisioned!")
403
+ subject.run_dsc_apply
404
+ end
28
405
  end
29
- end
30
-
31
- # describe "#vagrant_vagrantfile" do
32
- # before { valid_defaults }
33
-
34
- # it "should be valid if set to a file" do
35
- # subject.vagrant_vagrantfile = temporary_file.to_s
36
- # subject.finalize!
37
- # assert_valid
38
- # end
39
-
40
- # it "should not be valid if set to a non-existent place" do
41
- # subject.vagrant_vagrantfile = "/i/shouldnt/exist"
42
- # subject.finalize!
43
- # assert_invalid
44
- # end
45
- # end
46
- # end
406
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,20 +4,23 @@ require 'coveralls'
4
4
  require 'vagrant-dsc/version'
5
5
  require 'vagrant-dsc/plugin'
6
6
  require 'rspec/its'
7
+ require 'base'
7
8
 
8
9
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
9
10
  SimpleCov::Formatter::HTMLFormatter,
10
11
  Coveralls::SimpleCov::Formatter
11
12
  ]
13
+
12
14
  SimpleCov.start do
13
15
  coverage_dir('tmp/coverage')
14
16
  add_filter '/spec/'
15
17
  end
18
+
16
19
  RSpec.configure do |config|
17
20
  config.expect_with :rspec do |c|
18
21
  c.syntax = :expect
19
22
  end
20
23
  config.color = true
21
24
  config.tty = true
22
- config.raise_errors_for_deprecations!
25
+ # config.raise_errors_for_deprecations!
23
26
  end
data/vagrant-dsc.gemspec CHANGED
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "coveralls"
24
- spec.add_development_dependency "rspec-core"
25
- spec.add_development_dependency "rspec-expectations"
26
- spec.add_development_dependency "rspec-mocks"
27
- spec.add_development_dependency "rspec-its"
21
+ spec.add_development_dependency "rake", '~> 10.3', '>= 10.3.0'
22
+ spec.add_development_dependency "bundler", "~> 1.6", '>= 1.6.0'
23
+ spec.add_development_dependency "coveralls", "~> 0.7.1", '>= 0.7.1'
24
+ spec.add_development_dependency "rspec-core", '~> 3.1', '>= 3.1.0'
25
+ spec.add_development_dependency "rspec-expectations", '~> 3.1', '>= 3.1.0'
26
+ spec.add_development_dependency "rspec-mocks", '~> 3.1', '>= 3.1.0'
27
+ spec.add_development_dependency "rspec-its", "~> 1.0.1", '>= 1.0.0'
28
28
  end
metadata CHANGED
@@ -1,113 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-dsc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Fellows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-19 00:00:00.000000000 Z
11
+ date: 2014-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '10.3'
20
+ - - '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 10.3.0
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
26
- version: '1.6'
29
+ version: '10.3'
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 10.3.0
27
33
  - !ruby/object:Gem::Dependency
28
- name: rake
34
+ name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1.6'
31
40
  - - '>='
32
41
  - !ruby/object:Gem::Version
33
- version: '0'
42
+ version: 1.6.0
34
43
  type: :development
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '1.6'
38
50
  - - '>='
39
51
  - !ruby/object:Gem::Version
40
- version: '0'
52
+ version: 1.6.0
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: coveralls
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: 0.7.1
45
60
  - - '>='
46
61
  - !ruby/object:Gem::Version
47
- version: '0'
62
+ version: 0.7.1
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.7.1
52
70
  - - '>='
53
71
  - !ruby/object:Gem::Version
54
- version: '0'
72
+ version: 0.7.1
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: rspec-core
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: '3.1'
59
80
  - - '>='
60
81
  - !ruby/object:Gem::Version
61
- version: '0'
82
+ version: 3.1.0
62
83
  type: :development
63
84
  prerelease: false
64
85
  version_requirements: !ruby/object:Gem::Requirement
65
86
  requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.1'
66
90
  - - '>='
67
91
  - !ruby/object:Gem::Version
68
- version: '0'
92
+ version: 3.1.0
69
93
  - !ruby/object:Gem::Dependency
70
94
  name: rspec-expectations
71
95
  requirement: !ruby/object:Gem::Requirement
72
96
  requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: '3.1'
73
100
  - - '>='
74
101
  - !ruby/object:Gem::Version
75
- version: '0'
102
+ version: 3.1.0
76
103
  type: :development
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '3.1'
80
110
  - - '>='
81
111
  - !ruby/object:Gem::Version
82
- version: '0'
112
+ version: 3.1.0
83
113
  - !ruby/object:Gem::Dependency
84
114
  name: rspec-mocks
85
115
  requirement: !ruby/object:Gem::Requirement
86
116
  requirements:
117
+ - - ~>
118
+ - !ruby/object:Gem::Version
119
+ version: '3.1'
87
120
  - - '>='
88
121
  - !ruby/object:Gem::Version
89
- version: '0'
122
+ version: 3.1.0
90
123
  type: :development
91
124
  prerelease: false
92
125
  version_requirements: !ruby/object:Gem::Requirement
93
126
  requirements:
127
+ - - ~>
128
+ - !ruby/object:Gem::Version
129
+ version: '3.1'
94
130
  - - '>='
95
131
  - !ruby/object:Gem::Version
96
- version: '0'
132
+ version: 3.1.0
97
133
  - !ruby/object:Gem::Dependency
98
134
  name: rspec-its
99
135
  requirement: !ruby/object:Gem::Requirement
100
136
  requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 1.0.1
101
140
  - - '>='
102
141
  - !ruby/object:Gem::Version
103
- version: '0'
142
+ version: 1.0.0
104
143
  type: :development
105
144
  prerelease: false
106
145
  version_requirements: !ruby/object:Gem::Requirement
107
146
  requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 1.0.1
108
150
  - - '>='
109
151
  - !ruby/object:Gem::Version
110
- version: '0'
152
+ version: 1.0.0
111
153
  description: Desired State Configuration (http://technet.microsoft.com/en-au/library/dn249912.aspx)
112
154
  provisioning plugin for Vagrant.
113
155
  email:
@@ -123,7 +165,7 @@ files:
123
165
  - README.md
124
166
  - Rakefile
125
167
  - development/Vagrantfile
126
- - development/manifests/ContosoWebsite.ps1
168
+ - development/manifests/MyWebsite.ps1
127
169
  - lib/vagrant-dsc.rb
128
170
  - lib/vagrant-dsc/config.rb
129
171
  - lib/vagrant-dsc/locales/en.yml
@@ -159,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
201
  version: '0'
160
202
  requirements: []
161
203
  rubyforge_project:
162
- rubygems_version: 2.4.1
204
+ rubygems_version: 2.0.14
163
205
  signing_key:
164
206
  specification_version: 4
165
207
  summary: DSC Provisioner for Vagrant