octopus-serverspec-extensions 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +13 -11
- data/.rspec +2 -2
- data/.travis.yml +5 -5
- data/Gemfile +4 -4
- data/LICENSE.txt +12 -12
- data/README.md +39 -39
- data/Rakefile +6 -6
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/lib/octopus_serverspec_extensions.rb +14 -13
- data/lib/octopus_serverspec_extensions/matcher/have_linux_line_endings.rb +13 -13
- data/lib/octopus_serverspec_extensions/matcher/have_version.rb +36 -36
- data/lib/octopus_serverspec_extensions/matcher/have_windows_line_endings.rb +13 -13
- data/lib/octopus_serverspec_extensions/matcher/run_under_account.rb +17 -17
- data/lib/octopus_serverspec_extensions/type/chocolatey_package.rb +33 -33
- data/lib/octopus_serverspec_extensions/type/java_property_file.rb +28 -28
- data/lib/octopus_serverspec_extensions/type/npm_package.rb +36 -36
- data/lib/octopus_serverspec_extensions/type/octopus_deploy_environment.rb +58 -57
- data/lib/octopus_serverspec_extensions/type/octopus_deploy_tentacle.rb +204 -171
- data/lib/octopus_serverspec_extensions/type/octopus_deploy_worker_pool.rb +58 -0
- data/lib/octopus_serverspec_extensions/type/windows_dsc.rb +32 -32
- data/lib/octopus_serverspec_extensions/type/windows_firewall.rb +32 -32
- data/lib/octopus_serverspec_extensions/type/windows_scheduled_task.rb +33 -33
- data/lib/octopus_serverspec_extensions/version.rb +3 -3
- data/octopus-serverspec-extensions.gemspec +34 -33
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ff16256d99e210dad66ed64575efb0d03a76bdc9c056e1058d8f2b5151ccb588
|
4
|
+
data.tar.gz: ddbc0b51bf23a7ab2eb9fbaf2a2e1f23ae4eb3170a147149bb42af7bb0419fd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebf8555078424e70a55f79b666ac8591de12147ccb1c44cbabcd70986c006d7e82a8242b1840f688552650d740870d18f75c80a4b8529ee02539f100f483fe18
|
7
|
+
data.tar.gz: c951a8de41e573639a9b8e54c44c73e6c15be4ef9af774d3481e6aa7ddb123e0ceb046b98c0509308c859e52160b478a23d7b51b766a6b50d481a881f0b07c50
|
data/.gitignore
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/Gemfile.lock
|
4
|
-
/_yardoc/
|
5
|
-
/coverage/
|
6
|
-
/doc/
|
7
|
-
/pkg/
|
8
|
-
/spec/reports/
|
9
|
-
/tmp/
|
10
|
-
octopus-serverspec-extensions-*.gem
|
11
|
-
vendor/
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
octopus-serverspec-extensions-*.gem
|
11
|
+
vendor/
|
12
|
+
/.idea/
|
13
|
+
publish.ps1
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
--format documentation
|
2
|
-
--color
|
1
|
+
--format documentation
|
2
|
+
--color
|
data/.travis.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
rvm:
|
4
|
-
- 2.3.1
|
5
|
-
before_install: gem install bundler -v 1.13.6
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.3.1
|
5
|
+
before_install: gem install bundler -v 1.13.6
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in octopus-serverspec-extensions.gemspec
|
4
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in octopus-serverspec-extensions.gemspec
|
4
|
+
gemspec
|
data/LICENSE.txt
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
Copyright (c) Octopus Deploy and contributors. All rights reserved.
|
2
|
-
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
4
|
-
these files except in compliance with the License. You may obtain a copy of the
|
5
|
-
License at
|
6
|
-
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
Unless required by applicable law or agreed to in writing, software distributed
|
10
|
-
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
11
|
-
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
12
|
-
specific language governing permissions and limitations under the License.
|
1
|
+
Copyright (c) Octopus Deploy and contributors. All rights reserved.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
4
|
+
these files except in compliance with the License. You may obtain a copy of the
|
5
|
+
License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
10
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
11
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
12
|
+
specific language governing permissions and limitations under the License.
|
data/README.md
CHANGED
@@ -1,39 +1,39 @@
|
|
1
|
-
# Octopus::Serverspec::Extensions
|
2
|
-
|
3
|
-
SeverSpec extensions for Windows, adding support for chocolatey packages, npm packages, service accounts and more.
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
|
7
|
-
Add this line to your application's Gemfile:
|
8
|
-
|
9
|
-
```ruby
|
10
|
-
gem 'octopus-serverspec-extensions'
|
11
|
-
```
|
12
|
-
|
13
|
-
And then execute:
|
14
|
-
|
15
|
-
$ bundle
|
16
|
-
|
17
|
-
Or install it yourself as:
|
18
|
-
|
19
|
-
$ gem install octopus-serverspec-extensions
|
20
|
-
|
21
|
-
## Usage
|
22
|
-
|
23
|
-
TODO: Write usage instructions here
|
24
|
-
|
25
|
-
## Development
|
26
|
-
|
27
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
28
|
-
|
29
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
|
-
|
31
|
-
## Contributing
|
32
|
-
|
33
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/octopus-deploy/octopus-serverspec-extensions.
|
34
|
-
|
35
|
-
|
36
|
-
## License
|
37
|
-
|
38
|
-
The gem is available as open source under the terms of the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).
|
39
|
-
|
1
|
+
# Octopus::Serverspec::Extensions
|
2
|
+
|
3
|
+
SeverSpec extensions for Windows, adding support for chocolatey packages, npm packages, service accounts and more.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'octopus-serverspec-extensions'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install octopus-serverspec-extensions
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Development
|
26
|
+
|
27
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
28
|
+
|
29
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/octopus-deploy/octopus-serverspec-extensions.
|
34
|
+
|
35
|
+
|
36
|
+
## License
|
37
|
+
|
38
|
+
The gem is available as open source under the terms of the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).
|
39
|
+
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
-
|
6
|
-
task :default => :spec
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task :default => :spec
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "octopus/serverspec/extensions"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "octopus/serverspec/extensions"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
@@ -1,13 +1,14 @@
|
|
1
|
-
require 'octopus_serverspec_extensions/type/chocolatey_package.rb'
|
2
|
-
require 'octopus_serverspec_extensions/type/npm_package.rb'
|
3
|
-
require 'octopus_serverspec_extensions/type/java_property_file.rb'
|
4
|
-
require 'octopus_serverspec_extensions/type/octopus_deploy_tentacle.rb'
|
5
|
-
require 'octopus_serverspec_extensions/type/octopus_deploy_environment.rb'
|
6
|
-
require 'octopus_serverspec_extensions/type/
|
7
|
-
require 'octopus_serverspec_extensions/type/
|
8
|
-
require 'octopus_serverspec_extensions/type/
|
9
|
-
require 'octopus_serverspec_extensions/
|
10
|
-
require 'octopus_serverspec_extensions/matcher/
|
11
|
-
require 'octopus_serverspec_extensions/matcher/
|
12
|
-
require 'octopus_serverspec_extensions/matcher/
|
13
|
-
require 'octopus_serverspec_extensions/
|
1
|
+
require 'octopus_serverspec_extensions/type/chocolatey_package.rb'
|
2
|
+
require 'octopus_serverspec_extensions/type/npm_package.rb'
|
3
|
+
require 'octopus_serverspec_extensions/type/java_property_file.rb'
|
4
|
+
require 'octopus_serverspec_extensions/type/octopus_deploy_tentacle.rb'
|
5
|
+
require 'octopus_serverspec_extensions/type/octopus_deploy_environment.rb'
|
6
|
+
require 'octopus_serverspec_extensions/type/octopus_deploy_worker_pool.rb'
|
7
|
+
require 'octopus_serverspec_extensions/type/windows_dsc.rb'
|
8
|
+
require 'octopus_serverspec_extensions/type/windows_firewall.rb'
|
9
|
+
require 'octopus_serverspec_extensions/type/windows_scheduled_task.rb'
|
10
|
+
require 'octopus_serverspec_extensions/matcher/have_version.rb'
|
11
|
+
require 'octopus_serverspec_extensions/matcher/run_under_account.rb'
|
12
|
+
require 'octopus_serverspec_extensions/matcher/have_windows_line_endings.rb'
|
13
|
+
require 'octopus_serverspec_extensions/matcher/have_linux_line_endings.rb'
|
14
|
+
require 'octopus_serverspec_extensions/version.rb'
|
@@ -1,13 +1,13 @@
|
|
1
|
-
RSpec::Matchers.define :have_linux_line_endings do
|
2
|
-
match do |file|
|
3
|
-
!file.content.include?("\r\n")
|
4
|
-
end
|
5
|
-
|
6
|
-
failure_message do |file|
|
7
|
-
"Expected file '#{file.name}' to have linux line endings, but it didn't"
|
8
|
-
end
|
9
|
-
|
10
|
-
failure_message_when_negated do |file|
|
11
|
-
"Expected file '#{file.name}' to not have linux line endings, but it did"
|
12
|
-
end
|
13
|
-
end
|
1
|
+
RSpec::Matchers.define :have_linux_line_endings do
|
2
|
+
match do |file|
|
3
|
+
!file.content.include?("\r\n")
|
4
|
+
end
|
5
|
+
|
6
|
+
failure_message do |file|
|
7
|
+
"Expected file '#{file.name}' to have linux line endings, but it didn't"
|
8
|
+
end
|
9
|
+
|
10
|
+
failure_message_when_negated do |file|
|
11
|
+
"Expected file '#{file.name}' to not have linux line endings, but it did"
|
12
|
+
end
|
13
|
+
end
|
@@ -1,36 +1,36 @@
|
|
1
|
-
RSpec::Matchers.define :have_version do |version|
|
2
|
-
match do |file|
|
3
|
-
get_version(file) == version
|
4
|
-
end
|
5
|
-
|
6
|
-
failure_message do |file|
|
7
|
-
"Expected file '#{file.name}' to have version '#{version}' but it had version '#{get_version}' instead"
|
8
|
-
end
|
9
|
-
|
10
|
-
failure_message_when_negated do |file|
|
11
|
-
"Expected file '#{file.name}' to not have version '#{version}' but it did"
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
def get_version(file)
|
16
|
-
version_dll = Fiddle.dlopen('version.dll')
|
17
|
-
|
18
|
-
s=''
|
19
|
-
vsize = Fiddle::Function.new(version_dll['GetFileVersionInfoSize'],
|
20
|
-
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
|
21
|
-
Fiddle::TYPE_LONG).call(file.name, s)
|
22
|
-
|
23
|
-
raise 'Unable to determine the version number' unless vsize > 0
|
24
|
-
|
25
|
-
result = ' '*vsize
|
26
|
-
Fiddle::Function.new(version_dll['GetFileVersionInfo'],
|
27
|
-
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_LONG,
|
28
|
-
Fiddle::TYPE_LONG, Fiddle::TYPE_VOIDP],
|
29
|
-
Fiddle::TYPE_VOIDP).call(file.name, 0, vsize, result)
|
30
|
-
|
31
|
-
rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
|
32
|
-
r = /FileVersion..(.*?)\000/.match(rstring)
|
33
|
-
|
34
|
-
r[1]
|
35
|
-
end
|
36
|
-
end
|
1
|
+
RSpec::Matchers.define :have_version do |version|
|
2
|
+
match do |file|
|
3
|
+
get_version(file) == version
|
4
|
+
end
|
5
|
+
|
6
|
+
failure_message do |file|
|
7
|
+
"Expected file '#{file.name}' to have version '#{version}' but it had version '#{get_version}' instead"
|
8
|
+
end
|
9
|
+
|
10
|
+
failure_message_when_negated do |file|
|
11
|
+
"Expected file '#{file.name}' to not have version '#{version}' but it did"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def get_version(file)
|
16
|
+
version_dll = Fiddle.dlopen('version.dll')
|
17
|
+
|
18
|
+
s=''
|
19
|
+
vsize = Fiddle::Function.new(version_dll['GetFileVersionInfoSize'],
|
20
|
+
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
|
21
|
+
Fiddle::TYPE_LONG).call(file.name, s)
|
22
|
+
|
23
|
+
raise 'Unable to determine the version number' unless vsize > 0
|
24
|
+
|
25
|
+
result = ' '*vsize
|
26
|
+
Fiddle::Function.new(version_dll['GetFileVersionInfo'],
|
27
|
+
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_LONG,
|
28
|
+
Fiddle::TYPE_LONG, Fiddle::TYPE_VOIDP],
|
29
|
+
Fiddle::TYPE_VOIDP).call(file.name, 0, vsize, result)
|
30
|
+
|
31
|
+
rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
|
32
|
+
r = /FileVersion..(.*?)\000/.match(rstring)
|
33
|
+
|
34
|
+
r[1]
|
35
|
+
end
|
36
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
RSpec::Matchers.define :have_windows_line_endings do
|
2
|
-
match do |file|
|
3
|
-
file.content.include?("\r\n")
|
4
|
-
end
|
5
|
-
|
6
|
-
failure_message do |file|
|
7
|
-
"Expected file '#{file.name}' to have windows line endings, but it didn't"
|
8
|
-
end
|
9
|
-
|
10
|
-
failure_message_when_negated do |file|
|
11
|
-
"Expected file '#{file.name}' to not have windows line endings, but it did"
|
12
|
-
end
|
13
|
-
end
|
1
|
+
RSpec::Matchers.define :have_windows_line_endings do
|
2
|
+
match do |file|
|
3
|
+
file.content.include?("\r\n")
|
4
|
+
end
|
5
|
+
|
6
|
+
failure_message do |file|
|
7
|
+
"Expected file '#{file.name}' to have windows line endings, but it didn't"
|
8
|
+
end
|
9
|
+
|
10
|
+
failure_message_when_negated do |file|
|
11
|
+
"Expected file '#{file.name}' to not have windows line endings, but it did"
|
12
|
+
end
|
13
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
RSpec::Matchers.define :run_under_account do |account_name|
|
2
|
-
match do |service|
|
3
|
-
@runner = Specinfra::Runner
|
4
|
-
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName -eq '#{account_name}'")
|
5
|
-
command_result.stdout.strip == 'True'
|
6
|
-
end
|
7
|
-
|
8
|
-
failure_message do |service|
|
9
|
-
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName")
|
10
|
-
"Expected service '#{service.name}' to be running under '#{account_name}' but was running under '#{command_result.stdout.strip}'"
|
11
|
-
end
|
12
|
-
|
13
|
-
failure_message_when_negated do |service|
|
14
|
-
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName")
|
15
|
-
"Expected service '#{service.name}' to not be running under '#{account_name}' but was running under '#{command_result.stdout.strip}'"
|
16
|
-
end
|
17
|
-
end
|
1
|
+
RSpec::Matchers.define :run_under_account do |account_name|
|
2
|
+
match do |service|
|
3
|
+
@runner = Specinfra::Runner
|
4
|
+
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName -eq '#{account_name}'")
|
5
|
+
command_result.stdout.strip == 'True'
|
6
|
+
end
|
7
|
+
|
8
|
+
failure_message do |service|
|
9
|
+
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName")
|
10
|
+
"Expected service '#{service.name}' to be running under '#{account_name}' but was running under '#{command_result.stdout.strip}'"
|
11
|
+
end
|
12
|
+
|
13
|
+
failure_message_when_negated do |service|
|
14
|
+
command_result = @runner.run_command("$ProgressPreference = 'SilentlyContinue'; (Get-WmiObject Win32_Service | Where-Object {$_.Name -eq '#{service.name}'}).StartName")
|
15
|
+
"Expected service '#{service.name}' to not be running under '#{account_name}' but was running under '#{command_result.stdout.strip}'"
|
16
|
+
end
|
17
|
+
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
require 'serverspec'
|
2
|
-
require 'serverspec/type/base'
|
3
|
-
|
4
|
-
module Serverspec::Type
|
5
|
-
class ChocolateyPackage < Base
|
6
|
-
|
7
|
-
def initialize(name)
|
8
|
-
@name = name
|
9
|
-
@runner = Specinfra::Runner
|
10
|
-
end
|
11
|
-
|
12
|
-
def installed?(provider, version)
|
13
|
-
command_result = @runner.run_command("choco list -l -r #{name}")
|
14
|
-
|
15
|
-
software = command_result.stdout.gsub("\r\n", "\n").split("\n").each_with_object({}) do |s, h|
|
16
|
-
v, k = s.split('|')
|
17
|
-
h[String(v).strip.downcase] = String(k).strip.downcase
|
18
|
-
h
|
19
|
-
end
|
20
|
-
|
21
|
-
if (version.nil?)
|
22
|
-
!software[name.downcase].nil?
|
23
|
-
else
|
24
|
-
software[name.downcase] == version
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def chocolatey_package(name)
|
30
|
-
ChocolateyPackage.new(name)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
1
|
+
require 'serverspec'
|
2
|
+
require 'serverspec/type/base'
|
3
|
+
|
4
|
+
module Serverspec::Type
|
5
|
+
class ChocolateyPackage < Base
|
6
|
+
|
7
|
+
def initialize(name)
|
8
|
+
@name = name
|
9
|
+
@runner = Specinfra::Runner
|
10
|
+
end
|
11
|
+
|
12
|
+
def installed?(provider, version)
|
13
|
+
command_result = @runner.run_command("choco list -l -r #{name}")
|
14
|
+
|
15
|
+
software = command_result.stdout.gsub("\r\n", "\n").split("\n").each_with_object({}) do |s, h|
|
16
|
+
v, k = s.split('|')
|
17
|
+
h[String(v).strip.downcase] = String(k).strip.downcase
|
18
|
+
h
|
19
|
+
end
|
20
|
+
|
21
|
+
if (version.nil?)
|
22
|
+
!software[name.downcase].nil?
|
23
|
+
else
|
24
|
+
software[name.downcase] == version
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def chocolatey_package(name)
|
30
|
+
ChocolateyPackage.new(name)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
34
|
include Serverspec::Type
|