metric_fu 4.9.0 → 4.10.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.
Files changed (37) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.sig +1 -2
  3. data.tar.gz.sig +0 -0
  4. data/CONTRIBUTORS +9 -7
  5. data/DEV.md +15 -0
  6. data/HISTORY.md +11 -1
  7. data/checksum/metric_fu-4.10.0.gem.sha512 +1 -0
  8. data/checksum/metric_fu-4.9.0.gem.sha512 +1 -0
  9. data/lib/metric_fu.rb +28 -0
  10. data/lib/metric_fu/formatter/html.rb +1 -1
  11. data/lib/metric_fu/gem_run.rb +3 -0
  12. data/lib/metric_fu/metrics/base_template.rb +9 -0
  13. data/lib/metric_fu/metrics/cane/template_awesome/cane.html.erb +3 -5
  14. data/lib/metric_fu/metrics/churn/template_awesome/churn.html.erb +1 -3
  15. data/lib/metric_fu/metrics/flay/template_awesome/flay.html.erb +3 -5
  16. data/lib/metric_fu/metrics/flog/template_awesome/flog.html.erb +3 -5
  17. data/lib/metric_fu/metrics/generator.rb +0 -8
  18. data/lib/metric_fu/metrics/hotspots/template_awesome/hotspots.html.erb +1 -1
  19. data/lib/metric_fu/metrics/rails_best_practices/template_awesome/rails_best_practices.html.erb +3 -5
  20. data/lib/metric_fu/metrics/rcov/template_awesome/rcov.html.erb +3 -5
  21. data/lib/metric_fu/metrics/reek/reek.rb +18 -1
  22. data/lib/metric_fu/metrics/reek/template_awesome/reek.html.erb +3 -5
  23. data/lib/metric_fu/metrics/roodi/template_awesome/roodi.html.erb +3 -5
  24. data/lib/metric_fu/metrics/saikuro/template_awesome/saikuro.html.erb +1 -1
  25. data/lib/metric_fu/metrics/stats/template_awesome/stats.html.erb +2 -5
  26. data/lib/metric_fu/reporting/templates/awesome/_graph.html.erb +2 -0
  27. data/lib/metric_fu/reporting/templates/awesome/_report_footer.html.erb +1 -0
  28. data/lib/metric_fu/reporting/templates/awesome/index.html.erb +2 -1
  29. data/lib/metric_fu/utility.rb +1 -1
  30. data/lib/metric_fu/version.rb +1 -1
  31. data/spec/metric_fu/formatter/html_spec.rb +1 -1
  32. data/spec/metric_fu/metrics/base_template_spec.rb +21 -0
  33. data/spec/metric_fu/metrics/reek/reek_spec.rb +32 -5
  34. data/spec/metric_fu/run_spec.rb +1 -1
  35. data/spec/metric_fu_spec.rb +16 -0
  36. metadata +6 -2
  37. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjgwZjBkODQ4YjhmMzJkNWNhZDI1ODllYWI2NzljNmI3MDQ3ZDBiNA==
4
+ ZDU0ZjAyZDI4ZTQxN2JhZDVlNzc5M2VmNDBiYmNjODNjMTE4ZTczMA==
5
5
  data.tar.gz: !binary |-
6
- N2JkYjFhMDllMzBjMzRiNDMwOTI2MmI5YmFmYzNkOWJlOTAzMzAzNw==
6
+ MzI4ZDg2NjA1NzIwZmM5NDFjMzM5NGFhZjFjM2I4NGVjOGUwMGI1ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDIzNTQ3ZjE1ZDFkYjVkYWY4M2I3NjdjMmExY2MxOTg4ZGZmNzdjYTEzOTU1
10
- MTEzYjc1ZWNjMGZlOTAzMTNkMzk2YWMwYjRmZjE3MmIxN2I4ZmY2ZGMwYWJk
11
- NTRlMzQ2YTcxZmVhZDI3MWFiM2E0MTRmMjM0NDQzYmNiZDg3ODE=
9
+ Y2MyNjBjZGVhZDgxNzk2OTE3MWMwNDU1ZGI3NjMzNjRhYTI2NjI2OGE4MzQy
10
+ NDI1NzFkNDRkYjU3NzM5NDdjYzI4NDEzNTZmMjA4NWZlYjM2ZWUyZGMzMmJk
11
+ MWNlZWY4NDk2NDlhMzU3ZWYxYzZlY2E1MmYwZjA4NDRjM2IyZmE=
12
12
  data.tar.gz: !binary |-
13
- MjgzZjM4YTUyZTU5M2NmMTkxOWFjYWI5ZGM0NWQzM2Q0M2ZhMjQ4MzllNDc5
14
- YTMzYTgzNjUyODlmMzQ1YTcwYjc5ZjQxMDcyNzQ0ZWMyMmIzZTFlNzcwODUy
15
- ZWIwMGI5MzFmZTY1MjkxN2IwZWNlMTg2ODQ2YjUzYWFhNDI4OWM=
13
+ N2JkYzVjNGY0OTI2OThlZDgwYTYzYjk5OGU0Yjg1NjQ3Y2JmYjE2NzRlYjc2
14
+ ZDMxODUxMGFjMmNmZDQ2OTdhOTVlMTVmMzc5YjEzNjA3MGNhZGM1M2JiODUy
15
+ NWUyM2RmZDQ2NmY3YjI2MzExZGU3ZmJmMjk2YTVhZDY5NzY4Nzg=
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1 @@
1
- ����\�}:� �wЮt�����Ϩ������)�.1�C1��2�1k���F��Ku��<�8��*ta�9����D!y����,�i�h� ��b����.���˒��B�x?��:�w�,x��Հ��HCs)�� ^]s�s�-�8|���Y����A�*��cDP1}"��.6
2
- �*��9i��2����ez�Rd�5����e2I�SI���I�+�V� ��UW*P�rE5
1
+
data.tar.gz.sig CHANGED
Binary file
data/CONTRIBUTORS CHANGED
@@ -33,8 +33,9 @@ Tarsoly András
33
33
  Benjamin Fleischer / Paul Swagerty
34
34
  unknown
35
35
  Extrovert
36
- Andrew Timberlake
36
+ Ben Turner
37
37
  KAKUTANI Shintaro
38
+ Andrew Timberlake
38
39
  Guilherme Souza
39
40
  Przemysław Dąbek
40
41
  carlost
@@ -44,28 +45,29 @@ Chris Mason
44
45
  Andrew Selder
45
46
  Mark Wilden
46
47
  iain
48
+ Alessandro Dias
47
49
  Lars E. Hoeg
48
50
  Eric Wollesen
49
51
  Adam Bair
50
52
  Jinzhu
51
53
  Matthew Van Horn
52
54
  Diego Carrion
53
- benlovell
54
55
  saltracer
56
+ benlovell
55
57
  ff-cviradiya
56
58
  khall
57
59
  Todd A. Jacobs
58
60
  Stefan Huber
59
- Bitdeli Chef
60
61
  Hans Hasselberg
61
- Scyllinice
62
+ Bitdeli Chef
62
63
  jayzes
64
+ Scyllinice
63
65
  Matthew Gordon
64
66
  factorylabs
65
67
  Paul Elliott
66
- Guilherme Simões
67
- René Föhring
68
- Chris Ian Fiel
69
68
  Joel Nimety
69
+ Chris Ian Fiel
70
+ René Föhring
70
71
  Mike Ball
71
72
  Greg Allen
73
+ Guilherme Simões
data/DEV.md CHANGED
@@ -37,6 +37,21 @@ MetricFu.configuration.configure_metric(:flog) do |metric|
37
37
  end
38
38
  ```
39
39
 
40
+ ## Templates
41
+
42
+ ```ruby
43
+ # Given
44
+ template = AwesomeTemplate.new
45
+
46
+ # Render _report_footer.html.erb partial:
47
+
48
+ template.render_partial('report_footer')
49
+
50
+ # Render _graph.html.erb partial and set a graph_name instance variable:
51
+
52
+ template.render_partial 'graph', {:graph_name => 'reek'}
53
+ ```
54
+
40
55
  ## Testing
41
56
 
42
57
  `bundle exec rspec`
data/HISTORY.md CHANGED
@@ -4,13 +4,23 @@ Each change should fall into categories that would affect whether the release is
4
4
 
5
5
  As such, a _Feature_ would map to either major or minor. A _bug fix_ to a patch. And _misc_ is either minor or patch, the difference being kind of fuzzy for the purposes of history. Adding tests would be patch level.
6
6
 
7
- ### Master [changes](https://github.com/metricfu/metric_fu/compare/v4.9.0...master)
7
+ ### Master [changes](https://github.com/metricfu/metric_fu/compare/v4.10.0...master)
8
8
 
9
9
  * Breaking Changes
10
10
  * Features
11
11
  * Fixes
12
12
  * Misc
13
13
 
14
+ ### [4.10.0 / 2014-04-01](https://github.com/metricfu/metric_fu/compare/v4.9.0...v4.10.0)
15
+
16
+ * Features
17
+ * Implement partials for cleaning up double template code (Martin Gotink, #211)
18
+ * Fixes
19
+ * Ensure reek output does not include ANSI color escape codes (Ben Turner #213)
20
+ * Misc
21
+ * Remove duplicate methods from generator. (Alessandro Dias Batista, #210)
22
+ * Encapsulate methods on MetricFu: report_time, report_id, :report_fingerprint, :current_time. (Benjamin Fleischer, #209)
23
+
14
24
  ### [4.9.0 / 2014-03-23](https://github.com/metricfu/metric_fu/compare/v4.8.0...v4.9.0)
15
25
 
16
26
  * Features
@@ -0,0 +1 @@
1
+ 8f0981ae30f8af7a51f73cafe23e764e26ac0a51b6fa99892d306079b52194f754b5045821684a22f34feae5772ab7818761f25fe166781c2497eca5b57770f5
@@ -0,0 +1 @@
1
+ 6a59eb643743ccb2d34c7de915a0c448c6409a8b31a76b5bc8315fced802e5e186f8d97a7973c95ba306ac17d7de59d015cd93c50bda56180a952c91ac56c216
data/lib/metric_fu.rb CHANGED
@@ -28,6 +28,34 @@ module MetricFu
28
28
  @report_name = report_name
29
29
  end
30
30
 
31
+ # The time at analyzed code state
32
+ def report_time
33
+ Time.now
34
+ end
35
+
36
+ def report_date_string
37
+ report_time.strftime("%Y%m%d")
38
+ end
39
+
40
+ # @return [String]
41
+ # @example '20140323'
42
+ # Used to uniquely identify reports
43
+ # as a sortable reference to when the report
44
+ # was generated
45
+ def report_id
46
+ report_date_string
47
+ end
48
+
49
+ # Non-date-specific; Used to uniquely identify a report run
50
+ def report_fingerprint
51
+ report_time.to_i.to_s
52
+ end
53
+
54
+ # The time the metrics are generated
55
+ def current_time
56
+ Time.now.localtime
57
+ end
58
+
31
59
  def root_dir
32
60
  APP_ROOT
33
61
  end
@@ -17,7 +17,7 @@ module MetricFu
17
17
  mf_debug "** SAVING REPORT DATA OUTPUT TO #{MetricFu::Io::FileSystem.directory('data_directory')}"
18
18
  # TODO: Allow customizing output filenames
19
19
  MetricFu::Formatter::YAML.new(
20
- output: MetricFu.run_path.join("#{MetricFu::Io::FileSystem.directory('data_directory')}/#{Time.now.strftime("%Y%m%d")}.yml")
20
+ output: MetricFu.run_path.join("#{MetricFu::Io::FileSystem.directory('data_directory')}/#{MetricFu.report_id}.yml")
21
21
  ).finish
22
22
 
23
23
  mf_debug "** SAVING TEMPLATIZED REPORT"
@@ -29,9 +29,12 @@ module MetricFu
29
29
  def execute
30
30
  mf_debug "Running #{summary}"
31
31
  captured_output = ''
32
+ captured_errors = ''
32
33
  Open3.popen3("#{library_name}", *arguments) do |stdin, stdout, stderr, wait_thr|
33
34
  captured_output << stdout.read.chomp
35
+ captured_errors << stderr.read.chomp
34
36
  end
37
+ STDERR.puts MetricFu::AnalysisError.new(captured_errors) unless captured_errors.empty?
35
38
  rescue StandardError => run_error
36
39
  handle_run_error(run_error)
37
40
  rescue SystemExit => system_exit
@@ -16,6 +16,11 @@ module MetricFu
16
16
  @output_directory || MetricFu::Io::FileSystem.directory('output_directory')
17
17
  end
18
18
 
19
+ # Renders a partial and add optional instance variables to the template
20
+ def render_partial(name, instance_variables = {})
21
+ create_instance_vars(instance_variables)
22
+ erbify("_#{name}")
23
+ end
19
24
 
20
25
  private
21
26
  # Creates a new erb evaluated result from the passed in section.
@@ -58,6 +63,10 @@ module MetricFu
58
63
  instance_variable_set("@#{section}", contents)
59
64
  end
60
65
 
66
+ def create_instance_vars(variables)
67
+ variables.each { |variable| create_instance_var(*variable) }
68
+ end
69
+
61
70
  # Generates the filename of the template file to load and
62
71
  # evaluate. In this case, the path to the template directory +
63
72
  # the section name + .html.erb
@@ -2,10 +2,7 @@
2
2
 
3
3
  <p><a href='https://github.com/square/cane'>Cane</a> reports code quality threshold violations.</p>
4
4
 
5
- <div id="graph_container"></div>
6
-
7
- <% graph_name = 'cane' %>
8
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
5
+ <%= render_partial 'graph', {:graph_name => 'cane'} %>
9
6
 
10
7
  <% if @cane[:violations][:abc_complexity] && @cane[:violations][:abc_complexity].size > 0 %>
11
8
  <h3>Methods exceeding allowed Abc complexity (<%= @cane[:violations][:abc_complexity].size %>)</h3>
@@ -86,4 +83,5 @@
86
83
  <% end %>
87
84
  </table>
88
85
  <% end %>
89
- <p>Generated on <%= Time.now.localtime %></p>
86
+
87
+ <%= render_partial 'report_footer' %>
@@ -55,6 +55,4 @@
55
55
  </table>
56
56
  <% end %>
57
57
 
58
-
59
-
60
- <p>Generated on <%= Time.now.localtime %></p>
58
+ <%= render_partial 'report_footer' %>
@@ -2,10 +2,7 @@
2
2
 
3
3
  <p><a href='http://ruby.sadi.st/Flay.html'>Flay</a> analyzes ruby code for structural similarities.</p>
4
4
 
5
- <div id="graph_container"></div>
6
-
7
- <% graph_name = 'flay' %>
8
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
5
+ <%= render_partial 'graph', {:graph_name => 'flay'} %>
9
6
 
10
7
  <h4>Total Score (lower is better): <%= @flay[:total_score] %></h4>
11
8
  <h5>Scores less than <%= MetricFu::Metric.get_metric('flay').run_options[:minimum_score] %> are not shown or part of the total</h5>
@@ -28,4 +25,5 @@
28
25
  <% count += 1 %>
29
26
  <% end %>
30
27
  </table>
31
- <p>Generated on <%= Time.now.localtime %></p>
28
+
29
+ <%= render_partial 'report_footer' %>
@@ -1,10 +1,7 @@
1
1
  <h3>Flog Results</h3>
2
2
  <p><a href='http://ruby.sadi.st/Flog.html'>Flog</a> measures code complexity.</p>
3
3
 
4
- <div id="graph_container"></div>
5
-
6
- <% graph_name = 'flog' %>
7
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
4
+ <%= render_partial 'graph', {:graph_name => 'flog'} %>
8
5
 
9
6
  <h2>Total Flog score for all methods: <%= round_to_tenths @flog[:total]%></h2>
10
7
  <h2>Average Flog score for all methods: <%= round_to_tenths @flog[:average]%></h2>
@@ -49,4 +46,5 @@
49
46
  </table>
50
47
  <% end %>
51
48
  <% end %>
52
- <p>Generated on <%= Time.now.localtime %></p>
49
+
50
+ <%= render_partial 'report_footer' %>
@@ -52,10 +52,6 @@ module MetricFu
52
52
  @generators
53
53
  end
54
54
 
55
- def self.metric
56
- not_implemented
57
- end
58
-
59
55
  def self.get_generator(metric)
60
56
  generators.find{|generator|generator.metric.to_s == metric.to_s.downcase}
61
57
  end
@@ -88,10 +84,6 @@ module MetricFu
88
84
  paths - files_to_remove
89
85
  end
90
86
 
91
- def metric
92
- self.class.metric
93
- end
94
-
95
87
  def metric_config
96
88
  MetricFu::Metric.get_metric(metric)
97
89
  end
@@ -57,4 +57,4 @@
57
57
  </table>
58
58
  <% end %>
59
59
 
60
- <p>Generated on <%= Time.now.localtime %></p>
60
+ <%= render_partial 'report_footer' %>
@@ -2,10 +2,7 @@
2
2
 
3
3
  <p><a href="http://github.com/railsbp/rails_best_practices">rails_best_practices</a> is a code metric tool for rails projects.</p>
4
4
 
5
- <div id="graph_container"></div>
6
-
7
- <% graph_name = 'rails_best_practices' %>
8
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
5
+ <%= render_partial 'graph', {:graph_name => 'rails_best_practices'} %>
9
6
 
10
7
  <table>
11
8
  <tr>
@@ -21,4 +18,5 @@
21
18
  <% count += 1 %>
22
19
  <% end %>
23
20
  </table>
24
- <p>Generated on <%= Time.now.localtime %></p>
21
+
22
+ <%= render_partial 'report_footer' %>
@@ -5,10 +5,7 @@
5
5
 
6
6
  <p>C0 code coverage information.</p>
7
7
 
8
- <div id="graph_container"></div>
9
-
10
- <% graph_name = 'rcov' %>
11
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
8
+ <%= render_partial 'graph', {:graph_name => 'rcov'} %>
12
9
 
13
10
  <p>Total Coverage: <%= @rcov.delete(:global_percent_run) %>% </p>
14
11
  <table>
@@ -39,4 +36,5 @@
39
36
  </table>
40
37
  </div>
41
38
  <% end %>
42
- <p>Generated on <%= Time.now.localtime %></p>
39
+
40
+ <%= render_partial 'report_footer' %>
@@ -97,6 +97,7 @@ module MetricFu
97
97
  def cli_options(files)
98
98
  [
99
99
  disable_line_number_option,
100
+ turn_off_color,
100
101
  config_option,
101
102
  files.join(' ')
102
103
  ].join(' ')
@@ -112,8 +113,24 @@ module MetricFu
112
113
  end
113
114
  end
114
115
 
116
+ # Work around "Error: invalid option: --no-color" in reek < 1.3.7
117
+ def turn_off_color
118
+ if reek_version >= '1.3.7'
119
+ '--no-color'
120
+ else
121
+ ''
122
+ end
123
+ end
124
+
125
+ def reek_version
126
+ @reek_version ||= `reek --version`.chomp.sub(/\s*reek\s*/,'')
127
+ # use the above, as the below may activate a version not available in
128
+ # a Bundler context
129
+ # MetricFu::GemVersion.activated_version('reek').to_s
130
+ end
131
+
115
132
  def disable_line_number_option
116
- '-n'
133
+ '--no-line-numbers'
117
134
  end
118
135
 
119
136
  def zero_warnings?(match)
@@ -2,10 +2,7 @@
2
2
 
3
3
  <p><a href="http://github.com/troessner/reek">Reek</a> detects common code smells in ruby code.</p>
4
4
 
5
- <div id="graph_container"></div>
6
-
7
- <% graph_name = 'reek' %>
8
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
5
+ <%= render_partial 'graph', {:graph_name => 'reek'} %>
9
6
 
10
7
  <table>
11
8
  <tr>
@@ -34,4 +31,5 @@
34
31
  <% end %>
35
32
 
36
33
  </table>
37
- <p>Generated on <%= Time.now.localtime %></p>
34
+
35
+ <%= render_partial 'report_footer' %>
@@ -2,10 +2,7 @@
2
2
 
3
3
  <p><a href="http://roodi.rubyforge.org/">Roodi</a> parses your Ruby code and warns you about design issues you have based on the checks that is has configured.</p>
4
4
 
5
- <div id="graph_container"></div>
6
-
7
- <% graph_name = 'roodi' %>
8
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
5
+ <%= render_partial 'graph', {:graph_name => 'roodi'} %>
9
6
 
10
7
  <table>
11
8
  <tr>
@@ -21,4 +18,5 @@
21
18
  <% count += 1 %>
22
19
  <% end %>
23
20
  </table>
24
- <p>Generated on <%= Time.now.localtime %></p>
21
+
22
+ <%= render_partial 'report_footer' %>
@@ -68,4 +68,4 @@
68
68
  <% end %>
69
69
  <% end %>
70
70
 
71
- <p>Generated on <%= Time.now.localtime %></p>
71
+ <%= render_partial 'report_footer' %>
@@ -1,9 +1,6 @@
1
1
  <h3>Lines of Code/Tests Metric Results</h3>
2
2
 
3
- <div id="graph_container"></div>
4
-
5
- <% graph_name = 'stats' %>
6
- <script language="javascript" src="<%= graph_name %>.js?<%= Time.now.to_i %>" type="text/javascript"></script>
3
+ <%= render_partial 'graph', {:graph_name => 'stats'} %>
7
4
 
8
5
  <p>Lines of Code/Tests Metrics Results</p>
9
6
  <table>
@@ -44,4 +41,4 @@
44
41
  <% end %>
45
42
  </table>
46
43
 
47
- <p>Generated on <%= Time.now.localtime %></p>
44
+ <%= render_partial 'report_footer' %>
@@ -0,0 +1,2 @@
1
+ <div id="graph_container"></div>
2
+ <script language="javascript" src="<%= @graph_name %>.js?<%= MetricFu.report_fingerprint %>" type="text/javascript"></script>
@@ -0,0 +1 @@
1
+ <p>Generated on <%= MetricFu.current_time %></p>
@@ -6,4 +6,5 @@
6
6
  </li>
7
7
  <% end %>
8
8
  </ul>
9
- <p>Generated on <%= Time.now.localtime %></p>
9
+
10
+ <%= render_partial 'report_footer' %>
@@ -4,7 +4,7 @@ module MetricFu
4
4
  module Utility
5
5
  module_function
6
6
 
7
- ESCAPE_CODES_PATTERN = Regexp.new('\e\[\d{1,2}m')
7
+ ESCAPE_CODES_PATTERN = Regexp.new('\e\[(?:\d;)?\d{1,2}m')
8
8
 
9
9
  # Removes non-ASCII characters
10
10
  def clean_ascii_text(text)
@@ -1,3 +1,3 @@
1
1
  module MetricFu
2
- VERSION = '4.9.0'
2
+ VERSION = '4.10.0'
3
3
  end
@@ -46,7 +46,7 @@ describe MetricFu::Formatter::HTML do
46
46
  # For use with graphs.
47
47
  expect {
48
48
  MetricFu::Formatter::HTML.new.finish
49
- }.to create_file("#{directory('data_directory')}/#{Time.now.strftime("%Y%m%d")}.yml")
49
+ }.to create_file("#{directory('data_directory')}/#{MetricFu.report_id}.yml")
50
50
  end
51
51
 
52
52
  it "creates a report index html file" do
@@ -195,4 +195,25 @@ describe MetricFu::Template do
195
195
  end
196
196
  end
197
197
 
198
+ describe "#render_partial" do
199
+ it 'should erbify a partial with the name prefixed with an underscore' do
200
+ expect(@template).to receive(:erbify).with('_some_partial')
201
+ @template.send(:render_partial, 'some_partial')
202
+ end
203
+
204
+ it 'should set the given instance variables' do
205
+ variables = {:answer => 42}
206
+ allow(@template).to receive(:erbify)
207
+ expect(@template).to receive(:create_instance_vars).with(variables)
208
+ @template.send(:render_partial, 'some_partial', variables)
209
+ end
210
+ end
211
+
212
+ describe "#create_instance_vars" do
213
+ it "should set the given instance variables" do
214
+ @template.send(:create_instance_vars, {:answer => 42})
215
+ expect(@template.instance_variable_get(:@answer)).to eq(42)
216
+ end
217
+ end
218
+
198
219
  end
@@ -3,12 +3,39 @@ MetricFu.metrics_require { 'reek/reek' }
3
3
 
4
4
  describe MetricFu::ReekGenerator do
5
5
  describe "emit" do
6
- it "should include config parameters" do
7
- options = {:config_file_pattern => 'lib/config/*.reek', :dirs_to_reek => []}
8
- reek = MetricFu::ReekGenerator.new(options)
9
- files_to_analyze = ['lib/foo.rb','lib/bar.rb']
6
+ let(:options) { {:dirs_to_reek => []} }
7
+ let(:files_to_analyze) { ['lib/foo.rb','lib/bar.rb'] }
8
+ let(:reek) { MetricFu::ReekGenerator.new(options) }
9
+
10
+ before :each do
10
11
  allow(reek).to receive(:files_to_analyze).and_return(files_to_analyze)
11
- expect(reek).to receive(:run!).with(/--config lib\/config\/\*\.reek lib\/foo.rb lib\/bar.rb/).and_return("")
12
+ end
13
+
14
+ it "includes config file pattern into reek parameters when specified" do
15
+ options.merge!({:config_file_pattern => 'lib/config/*.reek' })
16
+ expect(reek).to receive(:run!).with(/--config lib\/config\/\*\.reek /).and_return("")
17
+ reek.emit
18
+ end
19
+
20
+ it "turns off color output from reek output, for reek 1.3.7 or greater" do
21
+ allow(reek).to receive(:reek_version).and_return('1.3.7')
22
+ expect(reek).to receive(:run!).with(/(?=--no-color)/).and_return("")
23
+ reek.emit
24
+ end
25
+
26
+ it "does not set an (invalid) --no-color option for reek < 1.3.7" do
27
+ allow(reek).to receive(:reek_version).and_return('1.3.6')
28
+ expect(reek).to receive(:run!).with(/(?!--no-color)/).and_return("")
29
+ reek.emit
30
+ end
31
+
32
+ it "disables lines numbers from reek output" do
33
+ expect(reek).to receive(:run!).with(/--no-line-numbers /).and_return("")
34
+ reek.emit
35
+ end
36
+
37
+ it "includes files to analyze into reek parameters" do
38
+ expect(reek).to receive(:run!).with(/lib\/foo.rb lib\/bar.rb$/).and_return("")
12
39
  reek.emit
13
40
  end
14
41
  end
@@ -53,7 +53,7 @@ describe MetricFu do
53
53
  end
54
54
 
55
55
  it "creates a data yaml file" do
56
- expect { metric_fu }.to create_file("#{data_directory}/#{Time.now.strftime("%Y%m%d")}.yml")
56
+ expect { metric_fu }.to create_file("#{data_directory}/#{MetricFu.report_id}.yml")
57
57
  end
58
58
 
59
59
  it "creates a report html file" do
@@ -16,4 +16,20 @@ describe MetricFu do
16
16
  MetricFu.report_name = original_report_name
17
17
  end
18
18
 
19
+ it "has a global report time (corresponding to the time of the VCS code state)" do
20
+ expect(MetricFu.report_time - Time.now).to be_within(0.1).of(0)
21
+ end
22
+
23
+ it "has a global current time (corresponding to report generation time)" do
24
+ expect(MetricFu.current_time - Time.now).to be_within(0.1).of(0)
25
+ end
26
+
27
+ it "has a global report id" do
28
+ expect(MetricFu.report_id).to eq(Time.now.strftime('%Y%m%d'))
29
+ end
30
+
31
+ it "has a global report fingerprint (corresponding to VCS code state)" do
32
+ expect(MetricFu.report_fingerprint.to_i - Time.now.to_i).to be_within(0.1).of(0)
33
+ end
34
+
19
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.9.0
4
+ version: 4.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Scruggs
@@ -49,7 +49,7 @@ cert_chain:
49
49
  dWphdUtxcjhoS0RMdTRLK3F1Q0dqWC82TEw2CldPTno5dlQ2aDA1M2tIWllN
50
50
  cmQ0R3MvTmRhQTR0SlN4cmhabFhkYWpBbS8wdkFPekxJcVVISFFrM1IwdGY3
51
51
  YVkKZC93PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
52
- date: 2014-03-23 00:00:00.000000000 Z
52
+ date: 2014-04-01 00:00:00.000000000 Z
53
53
  dependencies:
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: flay
@@ -341,6 +341,7 @@ files:
341
341
  - bin/mf-saikuro
342
342
  - certs/bf4.pem
343
343
  - checksum/.gitkeep
344
+ - checksum/metric_fu-4.10.0.gem.sha512
344
345
  - checksum/metric_fu-4.2.0.gem.sha512
345
346
  - checksum/metric_fu-4.2.1.gem.sha512
346
347
  - checksum/metric_fu-4.3.0.gem.sha512
@@ -360,6 +361,7 @@ files:
360
361
  - checksum/metric_fu-4.7.3.gem.sha512
361
362
  - checksum/metric_fu-4.7.4.gem.sha512
362
363
  - checksum/metric_fu-4.8.0.gem.sha512
364
+ - checksum/metric_fu-4.9.0.gem.sha512
363
365
  - config/roodi_config.yml
364
366
  - gem_tasks/build.rake
365
367
  - gem_tasks/usage_test.rake
@@ -460,6 +462,8 @@ files:
460
462
  - lib/metric_fu/reporter.rb
461
463
  - lib/metric_fu/reporting/graphs/grapher.rb
462
464
  - lib/metric_fu/reporting/result.rb
465
+ - lib/metric_fu/reporting/templates/awesome/_graph.html.erb
466
+ - lib/metric_fu/reporting/templates/awesome/_report_footer.html.erb
463
467
  - lib/metric_fu/reporting/templates/awesome/awesome_template.rb
464
468
  - lib/metric_fu/reporting/templates/awesome/index.html.erb
465
469
  - lib/metric_fu/reporting/templates/awesome/layout.html.erb
metadata.gz.sig CHANGED
Binary file