flog 3.2.3 → 4.0.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.
@@ -0,0 +1,202 @@
1
+ require "test/test_flog"
2
+ require "flog_cli"
3
+
4
+ class FlogCLI
5
+ def_delegators :@flog, :totals # FIX: test_report_all is overreaching?
6
+ def_delegators :@flog, :calls # FIX: refactor?
7
+ def_delegators :@flog, :mass # FIX: refactor?
8
+ end
9
+
10
+ class TestFlogCLI < FlogTest
11
+ def setup
12
+ @flog = FlogCLI.new :parser => RubyParser
13
+ end
14
+
15
+ def test_cls_expand_dirs_to_files
16
+ expected = %w(lib/flog.rb lib/flog_cli.rb lib/flog_task.rb lib/gauntlet_flog.rb)
17
+ assert_equal expected, FlogCLI.expand_dirs_to_files('lib')
18
+ expected = %w(Rakefile)
19
+ assert_equal expected, FlogCLI.expand_dirs_to_files('Rakefile')
20
+ end
21
+
22
+ def test_cls_parse_options
23
+ # defaults
24
+ opts = FlogCLI.parse_options
25
+ assert_equal false, opts[:quiet]
26
+ assert_equal false, opts[:continue]
27
+
28
+ {
29
+ "-a" => :all,
30
+ "--all" => :all,
31
+ "-b" => :blame,
32
+ "--blame" => :blame,
33
+ "-c" => :continue,
34
+ "--continue" => :continue,
35
+ "-d" => :details,
36
+ "--details" => :details,
37
+ "-g" => :group,
38
+ "--group" => :group,
39
+ "-m" => :methods,
40
+ "--methods-only" => :methods,
41
+ "-q" => :quiet,
42
+ "--quiet" => :quiet,
43
+ "-s" => :score,
44
+ "--score" => :score,
45
+ "-v" => :verbose,
46
+ "--verbose" => :verbose,
47
+ }.each do |key, val|
48
+ assert_equal true, FlogCLI.parse_options(key)[val]
49
+ end
50
+ end
51
+
52
+ def test_cls_parse_options_path
53
+ old_path = $:.dup
54
+ FlogCLI.parse_options("-Ia,b,c")
55
+ assert_equal old_path + %w(a b c), $:
56
+
57
+ FlogCLI.parse_options(["-I", "d,e,f"])
58
+ assert_equal old_path + %w(a b c d e f), $:
59
+
60
+ FlogCLI.parse_options(["-I", "g", "-Ih"])
61
+ assert_equal old_path + %w(a b c d e f g h), $:
62
+ ensure
63
+ $:.replace old_path
64
+ end
65
+
66
+ def test_cls_parse_options_help
67
+ def FlogCLI.exit
68
+ raise "happy"
69
+ end
70
+
71
+ ex = nil
72
+ o, e = capture_io do
73
+ ex = assert_raises RuntimeError do
74
+ FlogCLI.parse_options "-h"
75
+ end
76
+ end
77
+
78
+ assert_equal "happy", ex.message
79
+ assert_match(/methods-only/, o)
80
+ assert_equal "", e
81
+ end
82
+
83
+ def test_output_details
84
+ @flog.option[:all] = true
85
+ setup_flog
86
+
87
+ o = StringIO.new
88
+ @flog.output_details o
89
+
90
+ expected = "\n 1.6: main#none\n"
91
+
92
+ assert_equal expected, o.string
93
+ assert_equal 1.6, @flog.totals["main#none"]
94
+ end
95
+
96
+ def test_output_details_grouped
97
+ setup_flog
98
+
99
+ o = StringIO.new
100
+ @flog.calculate_total_scores
101
+ @flog.output_details_grouped o
102
+
103
+ expected = "\n 1.6: main total\n 1.6: main#none\n"
104
+
105
+ assert_equal expected, o.string
106
+ end
107
+
108
+ def test_output_details_methods
109
+ @flog.option[:methods] = true
110
+
111
+ setup_flog
112
+
113
+ o = StringIO.new
114
+ @flog.output_details o
115
+
116
+ # HACK assert_equal "", o.string
117
+ assert_equal 0, @flog.totals["main#none"]
118
+ end
119
+
120
+ def test_output_details_detailed
121
+ @flog.option[:details] = true
122
+
123
+ setup_flog
124
+
125
+ o = StringIO.new
126
+ @flog.output_details o, nil
127
+
128
+ expected = "\n 1.6: main#none
129
+ 1.0: +
130
+ 0.6: lit_fixnum
131
+
132
+ "
133
+
134
+ assert_equal expected, o.string
135
+ assert_equal 1.6, @flog.totals["main#none"]
136
+ end
137
+
138
+ def test_report
139
+ setup_flog
140
+
141
+ o = StringIO.new
142
+ @flog.report o
143
+
144
+ expected = " 1.6: flog total
145
+ 1.6: flog/method average
146
+
147
+ 1.6: main#none
148
+ "
149
+
150
+ assert_equal expected, o.string
151
+ end
152
+
153
+ def test_report_all
154
+ old_stdin = $stdin
155
+ $stdin = StringIO.new "2 + 3"
156
+ $stdin.rewind
157
+
158
+ @flog.flog "-"
159
+
160
+ exp = { "main#none" => { :+ => 1.0, :lit_fixnum => 0.6 } }
161
+ assert_equal exp, @flog.calls
162
+
163
+ @flog.option[:all] = true
164
+ @flog.calculate_total_scores
165
+
166
+ assert_equal 1.6, @flog.total_score unless @flog.option[:methods]
167
+ assert_equal 3, @flog.mass["-"]
168
+
169
+ o = StringIO.new
170
+ @flog.report o
171
+
172
+ expected = " 1.6: flog total
173
+ 1.6: flog/method average
174
+
175
+ 1.6: main#none
176
+ "
177
+
178
+ assert_equal expected, o.string
179
+ # FIX: add thresholded output
180
+ ensure
181
+ $stdin = old_stdin
182
+ end
183
+
184
+ def test_report_group
185
+ # TODO: add second group to ensure proper output
186
+ @flog.option[:group] = true
187
+
188
+ setup_flog
189
+
190
+ o = StringIO.new
191
+ @flog.report o
192
+
193
+ expected = " 1.6: flog total
194
+ 1.6: flog/method average
195
+
196
+ 1.6: main total
197
+ 1.6: main#none
198
+ "
199
+
200
+ assert_equal expected, o.string
201
+ end
202
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
- - 3
8
- - 2
9
- - 3
10
- version: 3.2.3
7
+ - 4
8
+ - 0
9
+ - 0
10
+ version: 4.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2013-03-21 00:00:00 Z
39
+ date: 2013-04-18 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sexp_processor
@@ -99,11 +99,11 @@ dependencies:
99
99
  requirements:
100
100
  - - ~>
101
101
  - !ruby/object:Gem::Version
102
- hash: 19
102
+ hash: 27
103
103
  segments:
104
- - 3
105
- - 10
106
- version: "3.10"
104
+ - 4
105
+ - 0
106
+ version: "4.0"
107
107
  type: :development
108
108
  version_requirements: *id004
109
109
  - !ruby/object:Gem::Dependency
@@ -114,11 +114,11 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- hash: 13
117
+ hash: 11
118
118
  segments:
119
119
  - 3
120
- - 5
121
- version: "3.5"
120
+ - 6
121
+ version: "3.6"
122
122
  type: :development
123
123
  version_requirements: *id005
124
124
  description: |-
@@ -142,9 +142,11 @@ files:
142
142
  - Rakefile
143
143
  - bin/flog
144
144
  - lib/flog.rb
145
+ - lib/flog_cli.rb
145
146
  - lib/flog_task.rb
146
147
  - lib/gauntlet_flog.rb
147
148
  - test/test_flog.rb
149
+ - test/test_flog_cli.rb
148
150
  - .gemtest
149
151
  homepage: http://ruby.sadi.st/
150
152
  licenses: []
@@ -182,3 +184,4 @@ specification_version: 3
182
184
  summary: Flog reports the most tortured code in an easy to read pain report
183
185
  test_files:
184
186
  - test/test_flog.rb
187
+ - test/test_flog_cli.rb
metadata.gz.sig CHANGED
Binary file