kitchen-pester 0.8.0 → 0.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 421eadf1234bee4ba4c005a01170aad9ca42fca2
4
- data.tar.gz: 16d3c4a119588ca4e18687dacfb061a8d5505af9
2
+ SHA256:
3
+ metadata.gz: 8604ba8a6d0f832c3eeeea3d763051ed16991eb5bac45501b6dc8e734b99c85b
4
+ data.tar.gz: ee0b7ff38dfce855537e30510bca1f974db227bd0549716f07c6b82ce2574a5b
5
5
  SHA512:
6
- metadata.gz: ded4f947b8dc8683145ffe618863ac3402ce8f191249356db0684ac4cc253c010552162d969e88c54e65eaa9be4dbee664e4ed38485c65218021b4364fe56f0f
7
- data.tar.gz: 5ea4de348f55b4417c9da25e92232b555c5525e1fc6b4f548dad8f22506bd8de1c892278f6b3967ec6596ea66cc11aeef51f15f6c642fff0d3b272d17a987ac2
6
+ metadata.gz: 58e9f72997c8c22a5a66a93b53c522951d738de6a85e056386586b08be4fb235333017be25e421c37a3150b07e651ff686605535b7b5e0a7e7048674dadfcd57
7
+ data.tar.gz: '08a0a52e8df83182bd7376ff4412080a805ba7d0969be706d97f81f2df2d2e9024482c38a9a7d86a623e885f41dc860d8f1c6af885d1f3c39aa762df73f6d068'
data/Gemfile CHANGED
@@ -1,7 +1,29 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in kitchen-pester.gemspec
4
4
  gemspec
5
5
 
6
- gem 'kitchen-vagrant'
7
- gem 'winrm-fs', '~> 1.0'
6
+ group :integration do
7
+ gem "berkshelf"
8
+ gem "kitchen-inspec"
9
+ gem "kitchen-dokken"
10
+ gem "kitchen-vagrant"
11
+ end
12
+
13
+ group :changelog do
14
+ gem "github_changelog_generator", "1.11.3"
15
+ end
16
+
17
+ group :debug do
18
+ gem "pry"
19
+ gem "pry-byebug"
20
+ gem "pry-stack_explorer"
21
+ end
22
+
23
+ group :chefstyle do
24
+ gem "chefstyle"
25
+ end
26
+
27
+ group :docs do
28
+ gem "yard"
29
+ end
data/Rakefile CHANGED
@@ -9,44 +9,51 @@ Rake::TestTask.new(:unit) do |t|
9
9
  t.verbose = true
10
10
  end
11
11
 
12
- desc "Run all test suites"
13
- task :test => [:unit]
14
-
15
- desc "Display LOC stats"
16
- task :stats do
17
- puts "\n## Production Code Stats"
18
- sh "countloc -r lib"
19
- puts "\n## Test Code Stats"
20
- sh "countloc -r spec"
21
- end
12
+ task test: :unit
22
13
 
23
- require "finstyle"
24
- require "rubocop/rake_task"
25
- RuboCop::RakeTask.new(:style) do |task|
26
- task.options << "--display-cop-names"
27
- task.options << "--lint"
28
- task.options << '--config' << '.rubocop.yml'
29
- task.patterns = ['lib/**/*.rb']
14
+ begin
15
+ require "chefstyle"
16
+ require "rubocop/rake_task"
17
+ RuboCop::RakeTask.new(:style) do |task|
18
+ task.options += ["--display-cop-names", "--no-color"]
19
+ end
20
+ rescue LoadError
21
+ puts "chefstyle is not available. (sudo) gem install chefstyle to do style checking."
30
22
  end
31
23
 
32
- require "cane/rake_task"
33
- desc "Run cane to check quality metrics"
34
- Cane::RakeTask.new do |cane|
35
- cane.canefile = "./.cane"
24
+ desc "Run all quality tasks"
25
+ task quality: :style
26
+
27
+ begin
28
+ require "yard"
29
+ YARD::Rake::YardocTask.new
30
+ rescue LoadError
31
+ puts "yard is not available. (sudo) gem install yard to generate yard documentation."
36
32
  end
37
33
 
38
- desc "Run all quality tasks"
39
- task :quality => [:cane, :style, :stats]
34
+ task default: %i{test quality}
40
35
 
41
- require "yard"
42
- YARD::Rake::YardocTask.new
36
+ begin
37
+ require "github_changelog_generator/task"
38
+ require "kitchen/verifier/pester_version"
43
39
 
44
- desc "Generate gem dependency graph"
45
- task :viz do
46
- Bundler.with_clean_env do
47
- sh "bundle viz --without test development guard " \
48
- "--requirements --version"
40
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
41
+ config.future_release = "v#{Kitchen::Verifier::PESTER_VERSION}"
42
+ config.issues = false
43
+ config.pulls = true
44
+ config.user = "test-kitchen"
45
+ config.project = "kitchen-pester"
49
46
  end
47
+ rescue LoadError
48
+ puts "github_changelog_generator is not available." \
49
+ " (sudo) gem install github_changelog_generator to generate changelogs"
50
50
  end
51
51
 
52
- task :default => [:test, :quality]
52
+ namespace :docs do
53
+ desc "Deploy docs"
54
+ task :deploy do
55
+ sh "cd docs && hugo"
56
+ sh "aws --profile chef-cd s3 sync docs/public s3://test-kitchen-legacy.cd.chef.co --delete --acl public-read"
57
+ sh "aws --profile chef-cd cloudfront create-invalidation --distribution-id EQD8MRW086SRT --paths '/*'"
58
+ end
59
+ end
@@ -1,27 +1,26 @@
1
1
  # encoding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
- require 'kitchen/verifier/pester_version'
5
+ require "kitchen/verifier/pester_version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "kitchen-pester"
9
9
  spec.version = Kitchen::Verifier::PESTER_VERSION
10
10
  spec.authors = ["Steven Murawski"]
11
11
  spec.email = ["steven.murawski@gmail.com"]
12
- spec.summary = 'Test-Kitchen verifier for Pester.'
13
- spec.description = 'Skip all that Busser stuff and jump right into Pester.'
12
+ spec.summary = "Test-Kitchen verifier for Pester."
13
+ spec.description = "Skip all that Busser stuff and jump right into Pester."
14
14
  spec.homepage = "https://github.com/test-kitchen/kitchen-pester"
15
15
  spec.license = "Apache 2"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.files = %w{LICENSE kitchen-pester.gemspec Gemfile Rakefile lib/support/powershell/PesterUtil/PesterUtil.psm1}
20
18
  spec.require_paths = ["lib"]
21
19
 
22
- spec.add_development_dependency "bundler", "~> 1.7"
23
- spec.add_development_dependency "rake", "~> 11.3"
24
- spec.add_development_dependency "pry", "~> 0.10"
20
+ spec.add_development_dependency "bundler"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "minitest", "~> 5.3", "< 5.11"
23
+ spec.add_development_dependency "mocha", "~> 1.1"
25
24
 
26
- spec.add_dependency "test-kitchen", "~> 1.10"
25
+ spec.add_dependency "test-kitchen", ">= 1.10", "< 3"
27
26
  end
metadata CHANGED
@@ -1,71 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-pester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Murawski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2019-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '11.3'
47
+ version: '5.3'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '5.11'
34
51
  type: :development
35
52
  prerelease: false
36
53
  version_requirements: !ruby/object:Gem::Requirement
37
54
  requirements:
38
55
  - - "~>"
39
56
  - !ruby/object:Gem::Version
40
- version: '11.3'
57
+ version: '5.3'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '5.11'
41
61
  - !ruby/object:Gem::Dependency
42
- name: pry
62
+ name: mocha
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
45
65
  - - "~>"
46
66
  - !ruby/object:Gem::Version
47
- version: '0.10'
67
+ version: '1.1'
48
68
  type: :development
49
69
  prerelease: false
50
70
  version_requirements: !ruby/object:Gem::Requirement
51
71
  requirements:
52
72
  - - "~>"
53
73
  - !ruby/object:Gem::Version
54
- version: '0.10'
74
+ version: '1.1'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: test-kitchen
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
59
- - - "~>"
79
+ - - ">="
60
80
  - !ruby/object:Gem::Version
61
81
  version: '1.10'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '3'
62
85
  type: :runtime
63
86
  prerelease: false
64
87
  version_requirements: !ruby/object:Gem::Requirement
65
88
  requirements:
66
- - - "~>"
89
+ - - ">="
67
90
  - !ruby/object:Gem::Version
68
91
  version: '1.10'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3'
69
95
  description: Skip all that Busser stuff and jump right into Pester.
70
96
  email:
71
97
  - steven.murawski@gmail.com
@@ -73,21 +99,11 @@ executables: []
73
99
  extensions: []
74
100
  extra_rdoc_files: []
75
101
  files:
76
- - ".gitignore"
77
- - ".kitchen.appveyor.yml"
78
- - ".kitchen.yml"
79
102
  - Gemfile
80
103
  - LICENSE
81
- - README.md
82
104
  - Rakefile
83
- - appveyor.yml
84
105
  - kitchen-pester.gemspec
85
- - lib/kitchen/verifier/pester.rb
86
- - lib/kitchen/verifier/pester_version.rb
87
106
  - lib/support/powershell/PesterUtil/PesterUtil.psm1
88
- - provision.ps1
89
- - spec/pester/pester_spec.rb
90
- - test/integration/default/pester/default.tests.ps1
91
107
  homepage: https://github.com/test-kitchen/kitchen-pester
92
108
  licenses:
93
109
  - Apache 2
@@ -107,11 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
123
  - !ruby/object:Gem::Version
108
124
  version: '0'
109
125
  requirements: []
110
- rubyforge_project:
111
- rubygems_version: 2.6.11
126
+ rubygems_version: 3.0.3
112
127
  signing_key:
113
128
  specification_version: 4
114
129
  summary: Test-Kitchen verifier for Pester.
115
- test_files:
116
- - spec/pester/pester_spec.rb
117
- - test/integration/default/pester/default.tests.ps1
130
+ test_files: []
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- pkg/*
2
- Gemfile.lock
3
- .kitchen/*
@@ -1,21 +0,0 @@
1
- ---
2
- driver:
3
- name: proxy
4
- host: localhost
5
- reset_command: "exit 0"
6
- port: 5985
7
- username: <%= ENV["machine_user"] %>
8
- password: <%= ENV["machine_pass"] %>
9
-
10
- provisioner:
11
- name: shell
12
- script: provision.ps1
13
-
14
- platforms:
15
- - name: windows-2012R2
16
-
17
- verifier:
18
- name: pester
19
-
20
- suites:
21
- - name: default
@@ -1,18 +0,0 @@
1
- ---
2
- driver:
3
- name: vagrant
4
-
5
- provisioner:
6
- name: shell
7
- script: provision.ps1
8
-
9
- platforms:
10
- - name: windows-nano
11
- driver_config:
12
- box: mwrock/WindowsNano
13
-
14
- verifier:
15
- name: pester
16
-
17
- suites:
18
- - name: default
data/README.md DELETED
@@ -1,38 +0,0 @@
1
- [![Build status](https://ci.appveyor.com/api/projects/status/a63wtd8qpxe5bt4e/branch/master?svg=true)](https://ci.appveyor.com/project/test-kitchen/kitchen-pester/branch/master)
2
- [![Gem Version](https://badge.fury.io/rb/kitchen-pester.svg)](http://badge.fury.io/rb/kitchen-pester)
3
-
4
- # Kitchen::Pester
5
-
6
- Execute [Pester](https://github.com/pester/Pester) tests right from Test-Kitchen, without having to transit the Busser layer.
7
-
8
- ## Usage
9
-
10
- Either
11
- ```
12
- gem install kitchen-pester
13
- ```
14
- or include
15
- ```
16
- gem 'kitchen-pester'
17
- ```
18
- in your Gemfile.
19
-
20
- In your .kitchen.yml include
21
- ```
22
- verifier:
23
- name: pester
24
- ```
25
- This can be a top-level declaration, a per-node declaration, or a per-suite declaration.
26
-
27
- ### Options
28
-
29
- * `restart_winrm` - boolean, default is false. This is primarily to support powershell v2 scenarios. If Pester is not being found, enable this option.
30
- * `test_folder` - string, default is nil. `test-folder` allows you to specify a custom path (the default is ./test/integration/) for your integration tests. This can be an absolute path or relative to the root of the folder kitchen is running from. This path must exist.
31
-
32
- ## Contributing
33
-
34
- 1. Fork it ( https://github.com/[my-github-username]/kitchen-pester/fork )
35
- 2. Create your feature branch (`git checkout -b my-new-feature`)
36
- 3. Commit your changes (`git commit -am 'Add some feature'`)
37
- 4. Push to the branch (`git push origin my-new-feature`)
38
- 5. Create a new Pull Request
@@ -1,40 +0,0 @@
1
- version: "master-{build}"
2
-
3
- os: Windows Server 2012 R2
4
- platform:
5
- - x64
6
-
7
- environment:
8
- machine_user: test_user
9
- machine_pass: Pass@word1
10
- KITCHEN_YAML: .kitchen.appveyor.yml
11
-
12
- matrix:
13
- - ruby_version: "23"
14
-
15
- branches:
16
- only:
17
- - master
18
-
19
- # Do not build on tags (GitHub only)
20
- skip_tags: true
21
-
22
- #faster cloning
23
- clone_depth: 1
24
-
25
- # Install the latest nightly of ChefDK
26
- install:
27
- - ps: net user /add $env:machine_user $env:machine_pass
28
- - ps: net localgroup administrators $env:machine_user /add
29
- - ps: $env:PATH="C:\Ruby$env:ruby_version\bin;$env:PATH"
30
- - ps: Write-Host $env:PATH
31
- - ps: ruby --version
32
- - ps: gem --version
33
- - ps: gem install bundler --quiet --no-ri --no-rdoc
34
- - ps: bundler --version
35
-
36
- build_script:
37
- - bundle install || bundle install || bundle install
38
-
39
- test_script:
40
- - bundle exec kitchen verify
@@ -1,334 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Steven Murawski (<steven.murawski@gmail.com>)
4
- #
5
- # Copyright (C) 2015, Steven Murawski
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require 'pathname'
20
- require 'kitchen/verifier/base'
21
- require 'kitchen/verifier/pester_version'
22
-
23
- module Kitchen
24
-
25
- module Verifier
26
-
27
- class Pester < Kitchen::Verifier::Base
28
-
29
- kitchen_verifier_api_version 1
30
-
31
- plugin_version Kitchen::Verifier::PESTER_VERSION
32
-
33
- default_config :restart_winrm, false
34
- default_config :test_folder
35
- default_config :use_local_pester_module, false
36
-
37
- # Creates a new Verifier object using the provided configuration data
38
- # which will be merged with any default configuration.
39
- #
40
- # @param config [Hash] provided verifier configuration
41
- def initialize(config = {})
42
- init_config(config)
43
- end
44
-
45
- # Creates a temporary directory on the local workstation into which
46
- # verifier related files and directories can be copied or created. The
47
- # contents of this directory will be copied over to the instance before
48
- # invoking the verifier's run command. After this method completes, it
49
- # is expected that the contents of the sandbox is complete and ready for
50
- # copy to the remote instance.
51
- #
52
- # **Note:** any subclasses would be well advised to call super first when
53
- # overriding this method, for example:
54
- #
55
- # @example overriding `#create_sandbox`
56
- #
57
- # class MyVerifier < Kitchen::Verifier::Base
58
- # def create_sandbox
59
- # super
60
- # # any further file copies, preparations, etc.
61
- # end
62
- # end
63
- def create_sandbox
64
- super
65
- prepare_powershell_modules
66
- prepare_pester_tests
67
- prepare_helpers
68
- end
69
-
70
- # Generates a command string which will install and configure the
71
- # verifier software on an instance. If no work is required, then `nil`
72
- # will be returned.
73
- #
74
- # @return [String] a command string
75
- def install_command
76
- return if local_suite_files.empty?
77
- return if config[:use_local_pester_module]
78
-
79
- really_wrap_shell_code(install_command_script)
80
- end
81
-
82
- # Generates a command string which will perform any data initialization
83
- # or configuration required after the verifier software is installed
84
- # but before the sandbox has been transferred to the instance. If no work
85
- # is required, then `nil` will be returned.
86
- #
87
- # @return [String] a command string
88
- def init_command
89
- restart_winrm_service if config[:restart_winrm]
90
- end
91
-
92
- # Generates a command string which will perform any commands or
93
- # configuration required just before the main verifier run command but
94
- # after the sandbox has been transferred to the instance. If no work is
95
- # required, then `nil` will be returned.
96
- #
97
- # @return [String] a command string
98
- def prepare_command
99
- end
100
-
101
- # Generates a command string which will invoke the main verifier
102
- # command on the prepared instance. If no work is required, then `nil`
103
- # will be returned.
104
- #
105
- # @return [String] a command string
106
- def run_command
107
- return if local_suite_files.empty?
108
- really_wrap_shell_code(run_command_script)
109
- end
110
-
111
- #private
112
- def run_command_script
113
- <<-CMD
114
- $TestPath = "#{config[:root_path]}";
115
- import-module Pester -force;
116
- $result = invoke-pester -path $testpath -passthru ;
117
- $result |
118
- export-clixml (join-path $testpath 'result.xml');
119
- $host.setshouldexit($result.failedcount)
120
- CMD
121
- end
122
-
123
- def really_wrap_shell_code(code)
124
- wrap_shell_code(Util.outdent!(use_local_powershell_modules(code)))
125
- end
126
-
127
- def use_local_powershell_modules(script)
128
- <<-EOH
129
- set-executionpolicy unrestricted -force;
130
- $global:ProgressPreference = 'SilentlyContinue'
131
- $env:psmodulepath += ";$(join-path (resolve-path $env:temp).path 'verifier/modules')";
132
- #{script}
133
- EOH
134
- end
135
-
136
- def install_command_script
137
- <<-EOH
138
- function directory($path){
139
- if (test-path $path) {(resolve-path $path).providerpath}
140
- else {(resolve-path (mkdir $path)).providerpath}
141
- }
142
- $VerifierModulePath = directory $env:temp/verifier/modules
143
- $VerifierTestsPath = directory $env:temp/verifier/pester
144
-
145
- $env:psmodulepath += ";$VerifierModulePath"
146
- function test-module($module){
147
- (get-module $module -list) -ne $null
148
- }
149
- if (-not (test-module pester)) {
150
- if (test-module PowerShellGet){
151
- import-module PowerShellGet -force
152
- import-module PackageManagement -force
153
- get-packageprovider -name NuGet -force | out-null
154
- install-module Pester -force
155
- }
156
- else {
157
- if (-not (test-module PsGet)){
158
- $wc = New-Object -TypeName Net.WebClient
159
-
160
- if($env:http_Proxy){
161
- if($env:no_proxy){
162
- Write-Output "Creating WebProxy with 'http_proxy' and 'no_proxy' environment variables.
163
- $webproxy = New-Object System.Net.WebProxy($env:http_Proxy,$true,$env:no_proxy)
164
- }else{
165
- Write-Output "Creating WebProxy with 'http_proxy' environment variable.
166
- $webproxy = New-Object -TypeName System.Net.WebProxy -ArgumentList ($env:http_Proxy)
167
- }
168
-
169
- $wc.proxy = $webproxy
170
- }
171
-
172
- Invoke-Expression -Command $wc.DownloadString('http://bit.ly/GetPsGet')
173
- }
174
- try {
175
- import-module psget -force -erroraction stop
176
- Install-Module Pester
177
- }
178
- catch {
179
- Write-Output "Installing from Github"
180
- $zipfile = join-path(resolve-path "$env:temp/verifier") "pester.zip"
181
- if (-not (test-path $zipfile)){
182
- $source = 'https://github.com/pester/Pester/archive/3.3.14.zip'
183
- $wc = New-Object -TypeName Net.WebClient
184
-
185
- if($env:http_Proxy){
186
- if($env:no_proxy){
187
- Write-Output "Creating WebProxy with 'http_proxy' and 'no_proxy' environment variables."
188
- $webproxy = New-Object System.Net.WebProxy($env:http_Proxy,$true,$env:no_proxy)
189
- }else{
190
- Write-Output "Creating WebProxy with 'http_proxy' environment variable."
191
- $webproxy = New-Object -TypeName System.Net.WebProxy -ArgumentList ($env:http_Proxy)
192
- }
193
-
194
- $wc.proxy = $webproxy
195
- }
196
-
197
- [byte[]]$bytes = $wc.DownloadData($source)
198
- [IO.File]::WriteAllBytes($zipfile, $bytes)
199
- $bytes = $null
200
- [gc]::collect()
201
- write-output "Downloaded Pester.zip"
202
- }
203
- write-output "Creating Shell.Application COM object"
204
- $shellcom = new-object -com shell.application
205
- Write-Output "Creating COM object for zip file."
206
- $zipcomobject = $shellcom.namespace($zipfile)
207
- Write-Output "Creating COM object for module destination."
208
- $destination = $shellcom.namespace($VerifierModulePath)
209
- Write-Output "Unpacking zip file."
210
- $destination.CopyHere($zipcomobject.Items(), 0x610)
211
- rename-item (join-path $VerifierModulePath "Pester-3.3.14") -newname 'Pester' -force
212
- }
213
- }
214
- }
215
- if (-not (test-module Pester)) {
216
- throw "Unable to install Pester. Please include Pester in your base image or install during your converge."
217
- }
218
- EOH
219
- end
220
-
221
- def restart_winrm_service
222
-
223
- cmd = 'schtasks /Create /TN restart_winrm /TR ' \
224
- '"powershell -command restart-service winrm" ' \
225
- '/SC ONCE /ST 00:00 '
226
- wrap_shell_code(Util.outdent!(<<-CMD
227
- #{cmd}
228
- schtasks /RUN /TN restart_winrm
229
- CMD
230
- ))
231
- end
232
-
233
- # Returns an Array of test suite filenames for the related suite currently
234
- # residing on the local workstation. Any special provisioner-specific
235
- # directories (such as a Chef roles/ directory) are excluded.
236
- #
237
- # @return [Array<String>] array of suite files
238
- # @api private
239
-
240
- def suite_test_folder
241
- @suite_test_folder ||= File.join(test_folder, config[:suite_name])
242
- end
243
-
244
- def suite_level_glob
245
- Dir.glob(File.join(suite_test_folder, "*"))
246
- end
247
-
248
- def suite_verifier_level_glob
249
- Dir.glob(File.join(suite_test_folder, "*/**/*"))
250
- end
251
-
252
- def local_suite_files
253
- suite = suite_level_glob
254
- suite_verifier = suite_verifier_level_glob
255
- (suite << suite_verifier).flatten!.reject do |f|
256
- File.directory?(f)
257
- end
258
- end
259
-
260
- def sandboxify_path(path)
261
- File.join(sandbox_path, path.sub(/#{suite_test_folder}\//i, ""))
262
- end
263
-
264
- # Returns an Array of common helper filenames currently residing on the
265
- # local workstation.
266
- #
267
- # @return [Array<String>] array of helper files
268
- # @api private
269
- def helper_files
270
- glob = Dir.glob(File.join(test_folder, "helpers", "*/**/*"))
271
- glob.reject { |f| File.directory?(f) }
272
- end
273
-
274
- # Copies all common testing helper files into the suites directory in
275
- # the sandbox.
276
- #
277
- # @api private
278
- def prepare_helpers
279
- base = File.join(test_folder, "helpers")
280
-
281
- helper_files.each do |src|
282
- dest = File.join(sandbox_path, src.sub("#{base}/", ""))
283
- debug("Copying #{src} to #{dest}")
284
- FileUtils.mkdir_p(File.dirname(dest))
285
- FileUtils.cp(src, dest, preserve: true)
286
- end
287
- end
288
-
289
- # Copies all test suite files into the suites directory in the sandbox.
290
- #
291
- # @api private
292
- def prepare_pester_tests
293
- info("Preparing to copy files from #{suite_test_folder} to the SUT.")
294
-
295
- local_suite_files.each do |src|
296
- dest = sandboxify_path(src)
297
- debug("Copying #{src} to #{dest}")
298
- FileUtils.mkdir_p(File.dirname(dest))
299
- FileUtils.cp(src, dest, preserve: true)
300
- end
301
- end
302
-
303
- def prepare_powershell_module(name)
304
- FileUtils.mkdir_p(File.join(sandbox_path, "modules/#{name}"))
305
- FileUtils.cp(
306
- File.join(File.dirname(__FILE__), "../../support/powershell/#{name}/#{name}.psm1"),
307
- File.join(sandbox_path, "modules/#{name}/#{name}.psm1"),
308
- preserve: true
309
- )
310
- end
311
-
312
- def prepare_powershell_modules
313
- info("Preparing to copy supporting powershell modules.")
314
- %w[PesterUtil].each do |module_name|
315
- prepare_powershell_module module_name
316
- end
317
-
318
- end
319
-
320
- def test_folder
321
- return config[:test_base_path] if config[:test_folder].nil?
322
- absolute_test_folder
323
- end
324
-
325
- def absolute_test_folder
326
- path = (Pathname.new config[:test_folder]).realpath
327
- integration_path = File.join(path, 'integration')
328
- return path unless Dir.exist?(integration_path)
329
- integration_path
330
- end
331
-
332
- end
333
- end
334
- end
@@ -1,5 +0,0 @@
1
- module Kitchen
2
- module Verifier
3
- PESTER_VERSION = '0.8.0'.freeze
4
- end
5
- end
@@ -1 +0,0 @@
1
- Set-Content -Path "$env:Temp\test.txt" -Value 'testing'
@@ -1,21 +0,0 @@
1
- require_relative '..\..\lib\kitchen\verifier\Pester'
2
-
3
- class MockPester < Kitchen::Verifier::Pester
4
- def sandbox_path
5
- 'C:/users/jdoe/temp/kitchen-temp'
6
- end
7
- def suite_test_folder
8
- 'C:/lowercasedpath/Pester/tests'
9
- end
10
- end
11
-
12
- describe 'when sandboxifying a path' do
13
- let(:sandboxifiedPath) {
14
- pester = MockPester.new
15
- pester.sandboxify_path('C:/LOWERcasedpath/Pester/tests/test')
16
- }
17
-
18
- it 'should ignore case' do
19
- expect(sandboxifiedPath).to eq 'C:/users/jdoe/temp/kitchen-temp/test'
20
- end
21
- end
@@ -1,9 +0,0 @@
1
- describe 'default' {
2
- it 'creates a test file' {
3
- test-path "$env:Temp\test.txt" | should be $true
4
- }
5
-
6
- it 'creates a test file with correct content' {
7
- "$env:Temp\test.txt" | should contain 'testing'
8
- }
9
- }