henry-container 0.0.39 → 0.0.40

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.
@@ -3,7 +3,7 @@ module Henry
3
3
  class Container
4
4
 
5
5
  # Current Gem version
6
- VERSION = '0.0.39'
6
+ VERSION = '0.0.40'
7
7
 
8
8
  end
9
9
 
@@ -7,6 +7,12 @@ module Henry
7
7
 
8
8
  # The Henry Task implementation for Rspec
9
9
  class RspecTask < Task
10
+
11
+ # The temporary output file path for the RspecTask execution.
12
+ OUT_PATH = 'rspec.out'
13
+
14
+ # The reports path template.
15
+ REPORTS_DIR = '.henry/reports/${FORMAT}'
10
16
 
11
17
  # Executes the Task and returns its results.
12
18
  def execute
@@ -15,11 +21,11 @@ module Henry
15
21
 
16
22
  self.execution.code = 'OK'
17
23
  self.execution.message = 'OK'
18
- self.execution.output = File.open('rspec.out', 'r').read
24
+ self.execution.output = File.open(OUT_PATH, 'r').read
19
25
  rescue Exception => e
20
26
  self.execution.code = 'ERROR'
21
27
  self.execution.message = 'ERROR'
22
- self.execution.output = File.open('rspec.out', 'r').read
28
+ self.execution.output = File.open(OUT_PATH, 'r').read
23
29
  self.execution.backtrace = e.message
24
30
  end
25
31
  end
@@ -34,16 +40,68 @@ module Henry
34
40
  RSpec::Core::RakeTask.new do |t|
35
41
  if self.data.options
36
42
  t.pattern = self.data.options['pattern'] || 'spec/*'
37
- t.rspec_opts = "--out rspec.out --format #{self.data.options['format'] || 'documentation'}"
43
+ t.rspec_opts = self.custom_options
38
44
  else
39
45
  t.pattern = 'spec/*'
40
- t.rspec_opts = '--out rspec.out'
46
+ t.rspec_opts = "--out #{OUT_PATH}"
41
47
  end
42
48
  end
43
49
 
44
50
  self.export_params(params)
45
51
  end
46
52
 
53
+ protected
54
+
55
+ # Returns the custom rspec_opts that user may have passed.
56
+ #
57
+ # @return [String]
58
+ def custom_options
59
+ "#{self.format_options} #{self.report_options}"
60
+ end
61
+
62
+ # Returns the rspec_opts related with formatting.
63
+ #
64
+ # @return [String]
65
+ def format_options
66
+ "--format #{self.data.options['format'] || 'documentation'} --out #{OUT_PATH}"
67
+ end
68
+
69
+ # Returns the rspec_opts related with report paaths and formats.
70
+ #
71
+ # @return [String]
72
+ def report_options
73
+ return '' if self.data.reports.nil?
74
+
75
+ self.data.reports.collect do |report_options|
76
+ "--format #{report_options['format']} --out #{self.report_file_path(report_options['format'], report_options['name'])}"
77
+ end.join(' ')
78
+ end
79
+
80
+ # Returns the report file path for the given format and file name.
81
+ #
82
+ # @param [String] format the rspec formatter name.
83
+ # @param [String] file_name the report file name template.
84
+ # @return [String] the report file path.
85
+ def report_file_path(format, file_name)
86
+ "#{self.reports_dir(format)}/#{self.report_file_name(file_name)}"
87
+ end
88
+
89
+ # Interpolates and returns the report file name.
90
+ #
91
+ # @param [String] file_name the report file name.
92
+ # @returns [String] the report file name.
93
+ def report_file_name(file_name)
94
+ file_name.gsub(/\${[AZ_]}/, '${TASK_NAME}' => self.name, '${DATE}' => DateTime.now.to_s)
95
+ end
96
+
97
+ # Interpolates and returns the reports directory for the given format.
98
+ #
99
+ # @param [String] format the formatter name.
100
+ # @return [Stiring] the reports directory.
101
+ def reports_dir(format)
102
+ REPORTS_DIR.gsub(/\${[AZ_]}/, '${FORMAT}' => format)
103
+ end
104
+
47
105
  end
48
106
 
49
107
  end
data/lib/henry.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'date'
2
+
1
3
  require_relative 'henry/task'
2
4
  require_relative 'henry/container'
3
5
  require_relative 'henry/execution'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henry-container
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.39
4
+ version: 0.0.40
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: