onceover 3.10.2 → 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8d6e6f5065ebe49d6fd62bf085fd346207906e48
4
- data.tar.gz: 5810a9fe7edb1cdc67bbfa129e860214afcfe9f5
2
+ SHA256:
3
+ metadata.gz: 71d240d281209575819137b3b4a0d8128d049d8df9482bc679f2915107f74a40
4
+ data.tar.gz: add61e481be9978f6dc492eb351d0f3b43d248119d3b94b98132c7323495e52a
5
5
  SHA512:
6
- metadata.gz: fa3d438c99aabc12a74d5dd9eef5a1ebb38c8ef8a3c8b4d03c32f0bca9b93d0f8d422df7a4e8abdcd4ecffc18f2a0e87c3fd42858b4a23a2eb56caffc55e2016
7
- data.tar.gz: a1cd8202653fb82e359a9a754fa5bd0955505fcb2c247c50017c54ecadddec64f4afab564844d205defefa2f2871cab86066117724daf5aa95657bc64fefe918
6
+ metadata.gz: ea96a764d79607406e3c89fd0aea91b568c70902ba88b1d30cc7cf2619eb7a204a43764dd12abc74cca7cf25ad5d79dcd18e0dd02ad3a2689b6e9363b1db4d4e
7
+ data.tar.gz: d35d26e20dbc980b22775784e1a3945c0251cf2f554fc320ae3ce24ed113d39c21b25aec37353e5d177e29ea0c47a3d7ddf7af16e305e2a36f8e7295239e68bd
@@ -41,6 +41,7 @@ This includes deploying using r10k and running all custom tests.
41
41
  summary 'Runs spec tests'
42
42
 
43
43
  optional :p, :parallel, 'Runs spec tests in parallel. This increases speed at the cost of poorly formatted logs and irrelevant junit output.'
44
+ optional nil, :format, 'Which RSpec formatter to use, valid options are: documentation, progress, FailureCollector. You also specify this multiple times', multiple: true, default: :defaults
44
45
 
45
46
  run do |opts, args, cmd|
46
47
  repo = Onceover::Controlrepo.new(opts)
@@ -1,3 +1,5 @@
1
+ require 'backticks'
2
+
1
3
  class Onceover
2
4
  class Runner
3
5
  attr_reader :repo
@@ -15,6 +17,9 @@ class Onceover
15
17
  # all the latest tests
16
18
  FileUtils.rm_rf("#{@repo.tempdir}/spec")
17
19
 
20
+ # Remove any previous failure log
21
+ FileUtils.rm_f("#{@repo.tempdir}/failures.out")
22
+
18
23
  # Create the other directories we need
19
24
  FileUtils.mkdir_p("#{@repo.tempdir}/spec/classes")
20
25
  FileUtils.mkdir_p("#{@repo.tempdir}/spec/acceptance/nodesets")
@@ -74,10 +79,20 @@ class Onceover
74
79
  #`bin/rake spec_standalone`
75
80
  if @config.opts[:parallel]
76
81
  logger.debug "Running #{@command_prefix}rake parallel_spec from #{@repo.tempdir}"
77
- exec("#{@command_prefix}rake parallel_spec")
82
+ Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'parallel_spec').join
78
83
  else
79
84
  logger.debug "Running #{@command_prefix}rake spec_standalone from #{@repo.tempdir}"
80
- exec("#{@command_prefix}rake spec_standalone")
85
+ Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'spec_standalone').join
86
+ end
87
+ # TODO: Refactor this to be much nicer
88
+ if @config.formatters.include? 'FailureCollector'
89
+ puts '----------- Summary of failures -----------'
90
+ if File.exist?("#{@repo.tempdir}/failures.out") and ! File.zero?("#{@repo.tempdir}/failures.out")
91
+ logger.debug "Reading failures from #{@repo.tempdir}/failures.out"
92
+ puts File.read("#{@repo.tempdir}/failures.out")
93
+ else
94
+ puts 'No failures detected'
95
+ end
81
96
  end
82
97
  end
83
98
  end
@@ -89,7 +104,7 @@ class Onceover
89
104
  #`bundle install --binstubs`
90
105
  #`bin/rake spec_standalone`
91
106
  logger.debug "Running #{@command_prefix}rake acceptance from #{@repo.tempdir}"
92
- exec("#{@command_prefix}rake acceptance")
107
+ Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'acceptance').join
93
108
  end
94
109
  end
95
110
  end
@@ -28,6 +28,7 @@ class Onceover
28
28
  attr_accessor :skip_r10k
29
29
  attr_accessor :force
30
30
  attr_accessor :strict_variables
31
+ attr_accessor :formatters
31
32
 
32
33
  def initialize(file, opts = {})
33
34
  begin
@@ -49,6 +50,13 @@ class Onceover
49
50
  @before_conditions = config['before']
50
51
  @after_conditions = config['after']
51
52
  @strict_variables = opts[:strict_variables] ? 'yes' : 'no'
53
+
54
+ # Set dynamic defaults for format
55
+ if opts[:format] == [:defaults]
56
+ @formatters = opts[:parallel] ? ['documentation', 'FailureCollector'] : ['documentation']
57
+ else
58
+ @formatters = opts[:format]
59
+ end
52
60
 
53
61
  # Initialise all of the classes and nodes
54
62
  config['classes'].each { |clarse| Onceover::Class.new(clarse) } unless config['classes'] == nil
data/onceover.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "onceover"
7
- s.version = "3.10.2"
7
+ s.version = "3.11.0"
8
8
  s.authors = ["Dylan Ratcliffe"]
9
9
  s.email = ["dylan.ratcliffe@puppet.com"]
10
10
  s.homepage = "https://github.com/dylanratcliffe/onceover"
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  # Runtime dependencies, but also probably dependencies of requiring projects
21
21
  s.add_runtime_dependency 'rake', '>= 10.0.0'
22
22
  s.add_runtime_dependency 'json', '>= 1.8.2'
23
+ s.add_runtime_dependency 'backticks', '>= 1.0.2'
23
24
  s.add_runtime_dependency 'rspec-puppet', ">= 2.4.0"
24
25
  s.add_runtime_dependency 'parallel_tests', ">= 2.0.0"
25
26
  s.add_runtime_dependency 'puppetlabs_spec_helper', ">= 0.4.0"
@@ -15,12 +15,36 @@ end
15
15
  require 'puppetlabs_spec_helper/module_spec_helper'
16
16
  require 'rspec_junit_formatter'
17
17
 
18
+ class FailureCollector
19
+ RSpec::Core::Formatters.register self, :dump_failures
20
+
21
+ def initialize(output)
22
+ @output = output
23
+ puts "Initializing FailureCollector"
24
+ FileUtils.touch(File.expand_path('<%= repo.tempdir %>/failures.out'))
25
+ end
26
+
27
+ def dump_failures(failures)
28
+ open(File.expand_path('<%= repo.tempdir %>/failures.out'), 'a') { |f|
29
+ failures.failed_examples.each do |fe|
30
+ f.puts
31
+ f.puts "#{fe.metadata[:description]}"
32
+ f.puts "#{fe.metadata[:execution_result].exception.to_s}"
33
+ f.puts "#{fe.metadata[:file_path]}:#{fe.metadata[:line_number]}"
34
+ f.puts "------------------------------------------------------"
35
+ end
36
+ }
37
+ end
38
+ end
39
+
18
40
  RSpec.configure do |c|
19
41
  # Also add JUnit output in case people want to use that
20
42
  c.add_formatter('RSpecJUnitFormatter','<%= repo.tempdir %>/spec.xml')
21
43
 
22
44
  c.parser = 'future'
23
- c.formatter = 'documentation'
45
+ <% @formatters.each do |fm| -%>
46
+ c.formatter = '<%= fm %>'
47
+ <% end -%>
24
48
  c.trusted_server_facts = true
25
49
  c.environmentpath = '<%= environmentpath %>'
26
50
  c.module_path = '<%= modulepath %>'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onceover
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.2
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Ratcliffe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-05 00:00:00.000000000 Z
11
+ date: 2019-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.8.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: backticks
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec-puppet
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -434,8 +448,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
434
448
  - !ruby/object:Gem::Version
435
449
  version: '0'
436
450
  requirements: []
437
- rubyforge_project:
438
- rubygems_version: 2.6.14
451
+ rubygems_version: 3.0.1
439
452
  signing_key:
440
453
  specification_version: 4
441
454
  summary: Testing tools for Puppet controlrepos