vagrant-serverspec 1.2 → 1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57204d1d8fb236c49d49df0faf38e220f0678f31
4
- data.tar.gz: 05e3709aa15d9976e98e5f056e5531fc3182ffd1
3
+ metadata.gz: 65483a9e7c94f56f1c4f258cd9cd769e0b1b2e4a
4
+ data.tar.gz: 8c26e878a228aed6398d33aa803e2ff9d60d31dc
5
5
  SHA512:
6
- metadata.gz: 4d48d4a935352e481fd189dab8c2cc5fc84888e21ac46904cd0e53ac50d6d3ef99cf7a913aa80e4bc63c9548ae5cf58f34f1fa7163c2fc69f212af08f9f33e7e
7
- data.tar.gz: 38147000f3642bd699f10e2e8029420900fbf092a524d3936aae911f5992d9d1f673e0ecb5c1489c375fc1895a4a055e7d16687c6b27d0d804116321a4562944
6
+ metadata.gz: c3a241aa690d2ff2148aa21500195e700cc7febbe1d74baad959f091d7e2ed76a4bd3eaae9d4b3ba1007bf8718eb1a86731e63ac9f124f9b3e87b3898a0f22af
7
+ data.tar.gz: 18b81cb4445213f3f99ac3d7596aa2919859d6ef87cfd4a25973914bfcb94bb65a761845a68d66115a69e8415c396d334924c8fb90276220dc5dffe69e952676
data/README.md CHANGED
@@ -42,7 +42,12 @@ Vagrant.configure('2') do |config|
42
42
  EOF
43
43
 
44
44
  config.vm.provision :serverspec do |spec|
45
+ # pattern for specfiles to search
45
46
  spec.pattern = '*_spec.rb'
47
+ # disable error if no specfile was found ( usefull with dynamic specfile retrieving through another provisionner like Ansible Galaxy => specfiles can be saved into ansible role repository for example ). Default: true
48
+ spec.error_no_spec_files = false
49
+ # save result into html an report, saved into a 'rspec_html_reports' directory. Default: false
50
+ spec.html_output = true
46
51
  end
47
52
  end
48
53
  ```
@@ -34,7 +34,13 @@ Vagrant.configure("2") do |config|
34
34
  config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true
35
35
 
36
36
  config.vm.provision :serverspec do |spec|
37
+ # pattern for specfiles to search
37
38
  spec.pattern = '*_spec.rb'
39
+ # disable error if no specfile was found ( usefull with dynamic specfile retrieving through another provisionner like Ansible Galaxy => specfiles can be saved into ansible role repository for example ). Default: true
40
+ spec.error_no_spec_files = false
41
+ # save result into html an report, saved into a 'rspec_html_reports' directory. Default: false
42
+ spec.html_output = true
43
+
38
44
  end
39
45
 
40
46
  end
@@ -2,18 +2,38 @@ module VagrantPlugins
2
2
  module ServerSpec
3
3
  class Config < Vagrant.plugin('2', :config)
4
4
  attr_accessor :spec_files
5
+ attr_accessor :spec_pattern
6
+ attr_accessor :error_no_spec_files_found
7
+ attr_accessor :html_output_format
5
8
 
6
9
  def initialize
7
10
  super
8
11
  @spec_files = UNSET_VALUE
12
+ @html_output_format = UNSET_VALUE
13
+ @error_no_spec_files_found = UNSET_VALUE
9
14
  end
10
15
 
11
16
  def pattern=(pat)
12
17
  @spec_files = Dir.glob(pat)
18
+ @spec_pattern = pat
19
+ end
20
+
21
+ def error_no_spec_files=(warn_spec)
22
+ if [true, false].include? warn_spec
23
+ @error_no_spec_files_found = warn_spec
24
+ end
25
+ end
26
+
27
+ def html_output=(html_out)
28
+ if [true, false].include? html_out
29
+ @html_output_format = html_out
30
+ end
13
31
  end
14
32
 
15
33
  def finalize!
16
34
  @spec_files = [] if @spec_files == UNSET_VALUE
35
+ @html_output_format = false if @html_output_format == UNSET_VALUE
36
+ @error_no_spec_files_found = true if @error_no_spec_files_found == UNSET_VALUE
17
37
  end
18
38
 
19
39
  def validate(machine)
@@ -28,7 +48,9 @@ module VagrantPlugins
28
48
  errors << I18n.t('vagrant.config.serverspec.missing_spec_files', files: missing_files.join(', '))
29
49
  end
30
50
 
31
- { 'serverspec provisioner' => errors }
51
+ if @error_no_spec_files_found
52
+ { 'serverspec provisioner' => errors }
53
+ end
32
54
  end
33
55
  end
34
56
  end
@@ -3,5 +3,11 @@ module Vagrant
3
3
  class ServerSpecFailed < VagrantError
4
4
  error_key(:serverspec_failed)
5
5
  end
6
+ class ServerSpecFailedHtml < VagrantError
7
+ error_key(:serverspec_failed_html)
8
+ end
9
+ class ServerSpecFilesNotFound < VagrantError
10
+ error_key(:serverspec_filesnotfound)
11
+ end
6
12
  end
7
13
  end
@@ -7,6 +7,8 @@ module VagrantPlugins
7
7
  def initialize(machine, config)
8
8
  super
9
9
  @spec_files = config.spec_files
10
+ @spec_pattern = config.spec_pattern
11
+ @error_no_spec_files_found = config.error_no_spec_files_found
10
12
  end
11
13
 
12
14
  def provision
@@ -66,9 +68,32 @@ module VagrantPlugins
66
68
  # same process
67
69
  RSpec.clear_examples
68
70
 
69
- status = RSpec::Core::Runner.run(@spec_files)
70
-
71
- raise Vagrant::Errors::ServerSpecFailed if status != 0
71
+ @spec_files = Dir.glob(@spec_pattern)
72
+ raise Vagrant::Errors::ServerSpecFilesNotFound if @spec_files.length == 0 and @error_no_spec_files_found
73
+
74
+ if config.html_output_format
75
+ require 'json'
76
+ require 'rspec'
77
+ require 'rspec_html_formatter'
78
+ config_rspec = RSpec.configuration
79
+ formatter = RspecHtmlFormatter.new(config_rspec.output_stream)
80
+
81
+ # create reporter with RspecHtmlFormatter
82
+ reporter = RSpec::Core::Reporter.new(config_rspec)
83
+ config_rspec.instance_variable_set(:@reporter, reporter)
84
+
85
+ # api may not be stable, make sure lock down Rspec version
86
+ loader = config_rspec.send(:formatter_loader)
87
+ notifications = loader.send(:notifications_for, RspecHtmlFormatter)
88
+ reporter.register_listener(formatter, *notifications)
89
+
90
+ status = RSpec::Core::Runner.run(@spec_files)
91
+ raise Vagrant::Errors::ServerSpecFailedHtml if status != 0
92
+ else
93
+ status = RSpec::Core::Runner.run(@spec_files)
94
+ raise Vagrant::Errors::ServerSpecFailed if status != 0
95
+ end
96
+
72
97
  end
73
98
 
74
99
  private
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ServerSpec
3
- VERSION = '1.2'
3
+ VERSION = '1.3'
4
4
  end
5
5
  end
@@ -11,3 +11,9 @@ en:
11
11
  serverspec_failed: |-
12
12
  ServerSpec failed to complete successfully. Any error output should be
13
13
  visible above. Please fix these errors and try again.
14
+ serverspec_failed_html: |-
15
+ ServerSpec failed to complete successfully. Any error output should be
16
+ visible above. Please fix these errors and try again. Please look into 'rspec_html_reports'
17
+ directory to see errors into 'overview.html' file
18
+ serverspec_filesnotfound: |-
19
+ ServerSpec failed to find any spec files.
@@ -21,6 +21,7 @@ Gem::Specification.new do |gem|
21
21
  #add onlly dependencies for winrm without nokogiri
22
22
  gem.add_runtime_dependency 'winrm', '~> 2.1', '>= 2.1'
23
23
  gem.add_runtime_dependency 'os', '~> 0.9.6'
24
+ gem.add_runtime_dependency 'rspec_html_formatter', '~> 0.3', '>= 0.3.1'
24
25
 
25
26
  gem.add_development_dependency 'bundler', '~> 1.6', '>= 1.6.2'
26
27
  gem.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-serverspec
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Voorhis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-31 00:00:00.000000000 Z
11
+ date: 2017-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: serverspec
@@ -64,6 +64,26 @@ dependencies:
64
64
  - - ~>
65
65
  - !ruby/object:Gem::Version
66
66
  version: 0.9.6
67
+ - !ruby/object:Gem::Dependency
68
+ name: rspec_html_formatter
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '0.3'
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 0.3.1
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '0.3'
84
+ - - '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 0.3.1
67
87
  - !ruby/object:Gem::Dependency
68
88
  name: bundler
69
89
  requirement: !ruby/object:Gem::Requirement