onceover 3.13.3 → 3.13.4

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
  SHA256:
3
- metadata.gz: 1e7b37b37e3704c6ec2183c6670efbda0bf9bcb24ddf948c88e44acd686d23c7
4
- data.tar.gz: ebfb0a52ccbd684d41898a93469b12832f9e6efca792d7df47e76e6ff7c644fa
3
+ metadata.gz: 6449e2a04348ed1fa97a08d0e452a7bd612eb45bf807aaddd4c32b2a22a6b1c6
4
+ data.tar.gz: 7d93dcf1e360f4a43aa36ace53db60009a7aa0062a734f9472ca14825c59db49
5
5
  SHA512:
6
- metadata.gz: a70412dcdd03ccbdf4bd0bef27a5ac732e9edda51e3e6872a37df79c4ab64d86d64f4b6052542a46ea5b135dd9649b9f47a9b5781aa29316996223cc03daf77e
7
- data.tar.gz: c8841bef52586a8b460d1410449bbbbd3ff26d94d4df5399027458bebdf836cd6e1b14d8e5b6b3855fd5b8342c28a0396be4f1381597b119253b591cb6c250a1
6
+ metadata.gz: '038b4af7edbfd3cf592c425c3de222a3166be32d301999948cb93e2fc62555b3a349cfd412a918aa4a4457d819bc47b80eebb3e1eb007c14f0424352783ec95f'
7
+ data.tar.gz: 727fb90aec81e72997768799dabd11860423413b176de03e94fdf1d01e0d4451efd7e68aeb61b13d9c60ca8d1c7372ed013b1e34eeb5ffd70f907ceaaf5971f1
@@ -104,7 +104,7 @@ class Onceover
104
104
 
105
105
  @onceover_yaml = ENV['ONCEOVER_YAML'] || opts[:onceover_yaml] || File.expand_path("#{@root}/spec/onceover.yaml")
106
106
 
107
- if File.exists?(@onceover_yaml) && _data = YAML.load_file(@onceover_yaml)
107
+ if File.exist?(@onceover_yaml) && _data = YAML.load_file(@onceover_yaml)
108
108
  opts.merge!(_data.fetch('opts',{})||{})
109
109
  end
110
110
  opts.fetch(:facts_dir,'').sub!(%r{^[^/.].+} ){|path| File.expand_path(path, @root)}
@@ -475,7 +475,7 @@ class Onceover
475
475
 
476
476
  # Add .onceover to Gitignore
477
477
  gitignore_path = File.expand_path('.gitignore', repo.root)
478
- if File.exists? gitignore_path
478
+ if File.exist? gitignore_path
479
479
  gitignore_content = (File.open(gitignore_path, 'r') {|f| f.read }).split("\n")
480
480
  message = "#{'changed'.green}"
481
481
  else
@@ -567,7 +567,7 @@ class Onceover
567
567
 
568
568
  def self.init_write_file(contents, out_file)
569
569
  create_dirs_and_log(File.dirname(out_file))
570
- if File.exists?(out_file)
570
+ if File.exist?(out_file)
571
571
  puts "#{'skipped'.yellow} #{Pathname.new(out_file).relative_path_from(Pathname.new(Dir.pwd)).to_s} #{'(exists)'.yellow}"
572
572
  else
573
573
  File.open(out_file,'w') {|f| f.write(contents)}
@@ -59,7 +59,7 @@ class OnceoverFormatter
59
59
  # Put some spacing before the results
60
60
  @output << "\n\n\n"
61
61
 
62
- failures.each do |_name, role|
62
+ failures.each do |name, errors|
63
63
  @output << Onceover::Controlrepo.evaluate_template('error_summary.yaml.erb', binding)
64
64
  end
65
65
 
@@ -74,20 +74,34 @@ class OnceoverFormatter
74
74
 
75
75
  # Further group by error
76
76
  grouped.each do |role, failures|
77
- grouped[role] = failures.uniq { |f| f.metadata[:execution_result].exception.to_s }
77
+ grouped[role] = failures.group_by { |f| f.metadata[:execution_result].exception.to_s }
78
78
  end
79
79
 
80
80
  # Extract the errors and remove all RSpec objects
81
81
  grouped.each do |role, failures|
82
- grouped[role] = {
83
- name: role,
84
- errors: failures.map { |f| parse_errors(f.metadata[:execution_result].exception.to_s)}.flatten,
85
- }
82
+ grouped[role] = failures.map { |_description, fails| extract_failure_data(fails)}.flatten
86
83
  end
87
84
 
88
85
  grouped
89
86
  end
90
87
 
88
+ # Extaracts data out of RSpec failres
89
+ def extract_failure_data(fails)
90
+ # The only difference between these failures should be the factsets that it
91
+ # failed on. Extract that list then just use the first failure for the rest
92
+ # of the data as it should be the same
93
+ metadata = fails[0].metadata
94
+ raw_error = metadata[:execution_result].exception.to_s
95
+ factsets = fails.map { |f| f.metadata[:example_group][:description].gsub('using fact set ','') }
96
+ results = parse_errors(raw_error)
97
+ # Add the details of the factsets tio each result
98
+ results.map do |r|
99
+ r[:factsets] = factsets
100
+ r
101
+ end
102
+ end
103
+
104
+ # Parses information out of a string error
91
105
  def parse_errors(raw_error)
92
106
  # Check if the error is a compilation error
93
107
  match = COMPILATION_ERROR.match(raw_error)
@@ -247,9 +261,9 @@ class OnceoverFormatterParallel < OnceoverFormatter
247
261
  files = Dir["#{directory}/*.yaml"]
248
262
 
249
263
  # Merge data
250
- errors = files.reduce({}) do |errs, file|
264
+ roles = files.reduce({}) do |errs, file|
251
265
  # Read all files and merge them
252
- errs.merge(YAML.load(File.read(file))) # rubocop:disable Security/YAMLLoad
266
+ errs.merge(YAML.load(File.read(file))) {|key, oldval, newval| [oldval, newval].flatten }# rubocop:disable Security/YAMLLoad
253
267
  end
254
268
 
255
269
  # Delete files from the disk
@@ -258,7 +272,7 @@ class OnceoverFormatterParallel < OnceoverFormatter
258
272
  @output << "\n\n\n"
259
273
 
260
274
  # Output errors
261
- errors.each do |_name, role|
275
+ roles.each do |name, errors|
262
276
  @output << Onceover::Controlrepo.evaluate_template('error_summary.yaml.erb', binding)
263
277
  end
264
278
  @output << "\n"
@@ -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.13.3"
7
+ s.version = "3.13.4"
8
8
  s.authors = ["Dylan Ratcliffe"]
9
9
  s.email = ["dylan.ratcliffe@puppet.com"]
10
10
  s.homepage = "https://github.com/dylanratcliffe/onceover"
@@ -1,6 +1,6 @@
1
- <%= bold(role[:name]) %>: <%= red('failed') %>
1
+ <%= bold(name) %>: <%= red('failed') %>
2
2
  errors:
3
- <% role[:errors].each do |error| -%>
3
+ <% errors.each do |error| -%>
4
4
  <%= red(error[:text]) %>
5
5
  <% if error[:file] -%>
6
6
  file: <%= bold(error[:file]) %>
@@ -11,4 +11,7 @@
11
11
  <% if error[:column] -%>
12
12
  column: <%= bold(error[:column]) %>
13
13
  <% end -%>
14
+ <% if error[:factsets] -%>
15
+ factsets: <%= bold(error[:factsets].join(', ')) %>
16
+ <% end -%>
14
17
  <% end -%>
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.13.3
4
+ version: 3.13.4
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-06-11 00:00:00.000000000 Z
11
+ date: 2019-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake