inch 0.3.0 → 0.3.1.rc1

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
  SHA1:
3
- metadata.gz: 6c1375656fc30398040fc365012b666c854fe3b8
4
- data.tar.gz: f4e7403c94fb1be10bcc27bb0fd94be6a734ab75
3
+ metadata.gz: 865abcc4558e39bb63f029bd4244559dee50b179
4
+ data.tar.gz: 898d3f31226eb312704e1e2daf4af53236d59719
5
5
  SHA512:
6
- metadata.gz: c359f35e7590df47a0de8fd044ba88d2ec2fd154f0a517d7ce30acbffb04e9ad648e74c7b1d41a4c5140ef2ea2759ea62d9569485dfce4df451c58045f773c11
7
- data.tar.gz: 00b5e435a34ae46c50913df637aae7478d7195f0f4fd8061d5162b4bf7d5d76440f33ba0b8f30e8c4b743c4576f9d684021f00a3ea05c15bb6e646e22e1357bd
6
+ metadata.gz: 8ad4ada205e23045470dd5c6544a9a4fc6a8d5fbabc8feaa6d9ecdfc4c4cddec812048bfbaa73e7493444cf1c3238c82b3cb041109160d87b780c56f351e9833
7
+ data.tar.gz: 4d7a265a1ab81537a0351ebed51c3dea1e4b60efd9ca7bfb715c8e38216b2b1d2c0135d1b63586974c5188623814b2d2a334fcbb2d9260a306dbfc7075c37ff5
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Inch [![Build Status](https://travis-ci.org/rrrene/inch.png)](https://travis-ci.org/rrrene/inch)
1
+ # Inch [![Build Status](https://travis-ci.org/rrrene/inch.png)](https://travis-ci.org/rrrene/inch) [![Code Climate](https://codeclimate.com/github/rrrene/inch.png)](https://codeclimate.com/github/rrrene/inch) [![Inline docs](http://inch-pages.github.io/github/rrrene/inch.png)](http://inch-pages.github.io/github/rrrene/inch)
2
2
 
3
3
  `inch` gives you hints where to improve your docs. One Inch at a time.
4
4
 
@@ -8,7 +8,7 @@ Take a look at the [project page with screenshots (live and in full color)](http
8
8
 
9
9
  `inch` is a little bit like Code Climate, but for your inline code documentation (and not a webservice).
10
10
 
11
- It is a command-line utility that suggests places in your codebase where documentation can be improved.
11
+ It is a command-line utility that suggests places in your codebase where documentation can be improved.
12
12
 
13
13
  If there are no inline-docs yet, `inch` can tell you where to start.
14
14
 
@@ -61,20 +61,20 @@ end
61
61
  Inch will suggest that the docs could be improved:
62
62
 
63
63
  # Properly documented, could be improved:
64
-
64
+
65
65
  ┃ B ↑ Foo#complicated
66
-
66
+
67
67
  # Undocumented:
68
-
68
+
69
69
  ┃ U ↑ Foo
70
70
  ┃ U ↗ Foo#filename
71
-
71
+
72
72
  You might want to look at these files:
73
-
73
+
74
74
  ┃ lib/foo.rb
75
-
75
+
76
76
  Grade distribution (undocumented, C, B, A): █ ▁ ▄ ▄
77
-
77
+
78
78
  Only considering priority objects: ↑ ↗ → (use `--help` for options).
79
79
 
80
80
 
@@ -144,9 +144,9 @@ This tells you three things:
144
144
  * There are still undocumented methods.
145
145
 
146
146
  Inch does not really tell you what to do from here. It suggests objects and
147
- files that could be improved to get a better rating, but that is all. This
147
+ files that could be improved to get a better rating, but that is all. This
148
148
  way, it is perfectly reasonable to leave parts of your codebase
149
- undocumented.
149
+ undocumented.
150
150
 
151
151
  Instead of reporting
152
152
 
data/TODOS.md CHANGED
@@ -6,4 +6,4 @@
6
6
  * Add support for multiple signatures for methods
7
7
  (realized via the @overload tag in YARD)
8
8
 
9
- * Add message to `inch suggest` when no objects are found
9
+ * Add an option to suppress :nodoc: from output
@@ -99,7 +99,7 @@ module Inch
99
99
  end
100
100
 
101
101
  def relevant_objects
102
- select_by_priority(codebase.objects, @options.object_min_priority)
102
+ @relevant_objects ||= select_by_priority(codebase.objects, @options.object_min_priority)
103
103
  end
104
104
 
105
105
  def relevant_priorities
@@ -129,11 +129,11 @@ module Inch
129
129
  Term::ANSIColor::coloring = v
130
130
  end
131
131
  opts.on_tail('-v', '--version', 'Show version.') do
132
- trace "inch #{Inch::VERSION}"
132
+ ui.trace "inch #{Inch::VERSION}"
133
133
  exit
134
134
  end
135
135
  opts.on_tail('-h', '--help', 'Show this help.') do
136
- trace opts
136
+ ui.trace opts
137
137
  exit
138
138
  end
139
139
  end
@@ -143,9 +143,9 @@ module Inch
143
143
  # @param msg [String,nil] optional, message to be displayed
144
144
  # @return [void]
145
145
  def kill(msg = nil)
146
- warn usage
147
- warn msg.red unless msg.nil?
148
- warn "Try `--help' for more information."
146
+ ui.warn usage
147
+ ui.warn msg.red unless msg.nil?
148
+ ui.warn "Try `--help' for more information."
149
149
  exit 1
150
150
  end
151
151
 
@@ -173,7 +173,7 @@ module Inch
173
173
  # @param [OptionParser::ParseError] err the exception raised by the
174
174
  # option parser
175
175
  def unrecognized_option(err)
176
- trace "Unrecognized/#{err.message}".red
176
+ ui.warn "Unrecognized/#{err.message}".red
177
177
  end
178
178
  end
179
179
  end
@@ -23,16 +23,16 @@ module Inch
23
23
  if range.objects.empty?
24
24
  # pass
25
25
  else
26
- trace
27
- trace_header(range.label, range.color, range.bg_color)
26
+ ui.trace
27
+ ui.header(range.label, range.color, range.bg_color)
28
28
  display_grade_list(range)
29
29
  end
30
30
  end
31
31
 
32
32
  if @omitted > 0
33
- trace
34
- trace "This output omitted #{@omitted} objects. ".dark +
35
- "Use `--all` to display all objects.".dark
33
+ ui.trace
34
+ ui.trace "This output omitted #{@omitted} objects. ".dark +
35
+ "Use `--all` to display all objects.".dark
36
36
  end
37
37
  end
38
38
 
@@ -55,7 +55,7 @@ module Inch
55
55
  end
56
56
 
57
57
  def echo(color, msg)
58
- trace edged(color, msg)
58
+ ui.edged(color, msg)
59
59
  end
60
60
 
61
61
  def result(object, color)
@@ -25,8 +25,8 @@ module Inch
25
25
  end
26
26
 
27
27
  def print_object(o)
28
- trace
29
- trace_header(o.fullname, COLOR, BG_COLOR)
28
+ ui.trace
29
+ ui.header(o.fullname, COLOR, BG_COLOR)
30
30
 
31
31
  print_file_info(o, COLOR)
32
32
  print_grade_info(o)
@@ -52,7 +52,7 @@ module Inch
52
52
  end
53
53
 
54
54
  def echo(msg = "")
55
- trace edged(COLOR, msg)
55
+ ui.edged(COLOR, msg)
56
56
  end
57
57
 
58
58
  def separator
@@ -62,15 +62,15 @@ module Inch
62
62
  end
63
63
 
64
64
  def display_files
65
- trace
66
- trace "You might want to look at these files:"
67
- trace
65
+ ui.trace
66
+ ui.trace "You might want to look at these files:"
67
+ ui.trace
68
68
 
69
69
  files.each do |file|
70
70
  filename = file.fullname.gsub(base_dir, '')
71
- trace edged(FILE_COLOR, filename.color(FILE_COLOR))
71
+ ui.edged(FILE_COLOR, filename.color(FILE_COLOR))
72
72
  end
73
- trace
73
+ ui.trace
74
74
  end
75
75
 
76
76
  def display_list
@@ -78,12 +78,12 @@ module Inch
78
78
  r = grade_list(grade)
79
79
  grade_objects = objects.select { |o| o.grade == r.grade }
80
80
  unless grade_objects.empty?
81
- trace
82
- trace_header(RANGE_LABELS[r.grade.to_sym], r.color, r.bg_color)
81
+ ui.trace
82
+ ui.header(RANGE_LABELS[r.grade.to_sym], r.color, r.bg_color)
83
83
  grade_objects.each do |o|
84
84
  grade = o.grade.to_s.ljust(2).color(r.color)
85
85
  priority = o.priority
86
- trace edged(r.color, " #{grade} #{priority_arrow(priority, r.color)} #{o.fullname}")
86
+ ui.sub(" #{grade} #{priority_arrow(priority, r.color)} #{o.fullname}")
87
87
  end
88
88
  end
89
89
  end
@@ -95,7 +95,7 @@ module Inch
95
95
  else
96
96
  "Try --pedantic to be excessively concerned with minor details and rules."
97
97
  end
98
- trace "Nothing to suggest.".color(:green) + " #{hint}"
98
+ ui.trace "Nothing to suggest.".color(:green) + " #{hint}"
99
99
  end
100
100
 
101
101
  def min_priority_arrows
@@ -44,7 +44,7 @@ module Inch
44
44
  end
45
45
 
46
46
  self.commands = {}
47
-
47
+
48
48
  # Convenience method to create a new CommandParser and call {#run}
49
49
  # @return (see #run)
50
50
  def self.run(*args)
@@ -69,12 +69,12 @@ module Inch
69
69
  end
70
70
 
71
71
  def list_commands
72
- trace "Usage: inch <command> [options]"
73
- trace
74
- trace "Commands:"
72
+ ui.trace "Usage: inch <command> [options]"
73
+ ui.trace
74
+ ui.trace "Commands:"
75
75
  commands.keys.sort_by {|k| k.to_s }.each do |command_name|
76
76
  command = commands[command_name].new
77
- trace " %-8s %s" % [command_name, command.description]
77
+ ui.trace " %-8s %s" % [command_name, command.description]
78
78
  end
79
79
  end
80
80
 
@@ -1,44 +1,13 @@
1
- # encoding: utf-8
1
+ require 'inch/utils/ui'
2
2
 
3
3
  module Inch
4
4
  module CLI
5
+ # Adds a method called +ui+, that can be used to output messages to the
6
+ # user.
5
7
  module TraceHelper
6
- def debug(msg)
7
- return unless ENV['DEBUG']
8
- msg.to_s.lines.each do |line|
9
- trace edged :dark, line.gsub(/\n$/,'').dark
10
- end
8
+ def ui
9
+ @ui ||= Inch::Utils::UI.new
11
10
  end
12
-
13
- # Writes the given +text+ to stdout
14
- # @param text [String]
15
- # @return [void]
16
- def trace(text = "")
17
- puts text
18
- end
19
-
20
- def trace_header(text, color, bg_color = nil)
21
- trace header(text, color, bg_color)
22
- trace if !use_color?
23
- end
24
-
25
- private
26
-
27
- def edged(color, msg, edge = "┃ ")
28
- edge.color(color) + msg
29
- end
30
-
31
- def header(text, color, bg_color = nil)
32
- bg_color ||= "intense_#{color}"
33
- bar = " #{text}".ljust(CLI::COLUMNS-1)
34
- .on_color(bg_color).color(:color16)
35
- "#".color(color).on_color(color) + bar
36
- end
37
-
38
- def use_color?
39
- Term::ANSIColor::coloring?
40
- end
41
-
42
11
  end
43
12
  end
44
13
  end
@@ -25,7 +25,7 @@ module Inch
25
25
  arg =~ /^\-/ && !VALID_YARD_SWITCHES.include?(arg)
26
26
  end
27
27
 
28
- debug "Sending args to YARD:\n" \
28
+ ui.debug "Sending args to YARD:\n" \
29
29
  " args: #{dupped_args}"
30
30
 
31
31
  wrapper.parse_arguments(*dupped_args)
@@ -25,6 +25,9 @@ module Inch
25
25
  # @param object [YARD::CodeObjects::Base] the actual (YARD) code object
26
26
  def initialize(object)
27
27
  @object = object
28
+ @__api_tag = __api_tag
29
+ @__parent = __parent
30
+ @__private_tag = __private_tag
28
31
  end
29
32
 
30
33
  def api_tag?
@@ -32,7 +35,7 @@ module Inch
32
35
  end
33
36
 
34
37
  def api_tag
35
- tag(:api) || (parent && parent.api_tag)
38
+ @__api_tag
36
39
  end
37
40
 
38
41
  # To be overridden
@@ -100,11 +103,11 @@ module Inch
100
103
  end
101
104
 
102
105
  def fullname
103
- object.path
106
+ @fullname ||= object.path
104
107
  end
105
108
 
106
109
  def name
107
- object.name
110
+ @name ||= object.name
108
111
  end
109
112
 
110
113
  def has_alias?
@@ -157,14 +160,9 @@ module Inch
157
160
  #
158
161
  # @note top-level counts, that's why Foo has depth 1!
159
162
  #
160
- # @param i [Fixnum] a counter for recursive method calls
161
163
  # @return [Fixnum] the depth of the object in terms of namespace
162
- def depth(i = 0)
163
- if parent
164
- parent.depth(i+1)
165
- else
166
- i
167
- end
164
+ def depth
165
+ @__depth ||= __depth
168
166
  end
169
167
 
170
168
  # @return [Boolean] +true+ if the object represents a method
@@ -183,6 +181,10 @@ module Inch
183
181
 
184
182
  # @return [Array,nil] the parent of the current object or +nil+
185
183
  def parent
184
+ @__parent
185
+ end
186
+
187
+ def __parent
186
188
  YARD::Object.for(object.parent) if object.parent
187
189
  end
188
190
 
@@ -197,7 +199,7 @@ module Inch
197
199
  end
198
200
 
199
201
  def private_tag
200
- tag(:private) || (parent && parent.private_tag)
202
+ @__private_tag
201
203
  end
202
204
 
203
205
  def private_api_tag?
@@ -254,6 +256,25 @@ module Inch
254
256
  CONSIDERED_YARD_TAGS.include?(tag.tag_name)
255
257
  end
256
258
  end
259
+
260
+ def __depth(i = 0)
261
+ if parent
262
+ parent.__depth(i+1)
263
+ else
264
+ i
265
+ end
266
+ end
267
+
268
+ private
269
+
270
+ def __api_tag
271
+ tag(:api) || (parent && parent.api_tag)
272
+ end
273
+
274
+ def __private_tag
275
+ tag(:private) || (parent && parent.private_tag)
276
+ end
277
+
257
278
  end
258
279
  end
259
280
  end
@@ -38,9 +38,9 @@ module Inch
38
38
 
39
39
  def parameters
40
40
  @parameters ||= all_parameter_names.map do |name|
41
- in_signature = signature_parameter_names.include?(name)
42
- tag = parameter_tag(name)
43
- MethodParameterObject.new(self, name, tag, in_signature)
41
+ signature_name = in_signature(name)
42
+ tag = parameter_tag(name) || parameter_tag(signature_name)
43
+ MethodParameterObject.new(self, name, signature_name, tag)
44
44
  end
45
45
  end
46
46
 
@@ -87,7 +87,8 @@ module Inch
87
87
  def all_parameter_names
88
88
  names = signature_parameter_names
89
89
  names.concat parameter_tags.map(&:name)
90
- names.compact.uniq
90
+ names.map { |name| name.gsub(/[\*\&]/, '') }
91
+ .compact.uniq
91
92
  end
92
93
 
93
94
  def implicit_docstring?
@@ -101,6 +102,11 @@ module Inch
101
102
  end
102
103
  end
103
104
 
105
+ def in_signature(name)
106
+ possible_names = [name, "*#{name}", "&#{name}"]
107
+ (signature_parameter_names & possible_names).first
108
+ end
109
+
104
110
  def signature_parameter_names
105
111
  object.parameters.map(&:first)
106
112
  end
@@ -9,9 +9,9 @@ module Inch
9
9
 
10
10
  # @param method [YARD::Object::MethodObject] the method the parameter belongs to
11
11
  # @param name [String] the name of the parameter
12
+ # @param in_signature [String] how the parameter is noted in the method's signature
12
13
  # @param tag [YARD::Tags::Tag] the Tag object for the parameter
13
- # @param in_signature [Boolean] +true+ if the method's signature contains the parameter
14
- def initialize(method, name, tag, in_signature)
14
+ def initialize(method, name, in_signature, tag)
15
15
  @method = method
16
16
  @name = name
17
17
  @tag = tag
@@ -29,7 +29,7 @@ module Inch
29
29
 
30
30
  # @return [Boolean] +true+ if the parameter is a block
31
31
  def block?
32
- name =~ /^\&/
32
+ @in_signature.to_s =~ /^\&/
33
33
  end
34
34
 
35
35
  # @return [Boolean] +true+ if an additional description given?
@@ -44,7 +44,7 @@ module Inch
44
44
 
45
45
  # @return [Boolean] +true+ if the parameter is a splat argument
46
46
  def splat?
47
- name =~ /^\*/
47
+ @in_signature.to_s =~ /^\*/
48
48
  end
49
49
 
50
50
  # @return [Boolean] +true+ if the type of the parameter is defined
@@ -75,7 +75,6 @@ module Inch
75
75
  #
76
76
  # @note top-level counts, that's why Foo has depth 1!
77
77
  #
78
- # @param i [Fixnum] a counter for recursive method calls
79
78
  # @return [Fixnum] the depth of the object in terms of namespace
80
79
  def depth
81
80
  self[:depth]
@@ -53,7 +53,6 @@ module Inch
53
53
  def wrongly_mentioned?
54
54
  self[:wrongly_mentioned?]
55
55
  end
56
-
57
56
  end
58
57
  end
59
58
  end
@@ -50,41 +50,24 @@ module Inch
50
50
  __evaluate(object, relevant_roles)
51
51
  end
52
52
 
53
- def __evaluate(object, role_classes)
54
- role_classes.each do |role_class, score|
55
- if role_class.applicable?(object)
56
- add_role role_class.new(object, score)
57
- end
58
- end
59
- end
60
-
61
- # @return [Float]
53
+ # @return [Float] the max score that is assignable to +object+
62
54
  def max_score
63
- arr = @roles.map(&:max_score).compact
64
- [MAX_SCORE].concat(arr).min
55
+ @__max_score = __max_score
65
56
  end
66
57
 
67
- # @return [Float]
58
+ # @return [Float] the min score that is assignable to +object+
68
59
  def min_score
69
- arr = @roles.map(&:min_score).compact
70
- [MIN_SCORE].concat(arr).max
60
+ @__min_score = __min_score
71
61
  end
72
62
 
73
- # @return [Float]
63
+ # @return [Float] the final score for +object+
74
64
  def score
75
- value = @roles.inject(0) { |sum,r| sum + r.score.to_f }
76
- if value < min_score
77
- min_score
78
- elsif value > max_score
79
- max_score
80
- else
81
- value
82
- end
65
+ @__score ||= __score
83
66
  end
84
67
 
85
- # @return [Fixnum]
68
+ # @return [Fixnum] the priority for +object+
86
69
  def priority
87
- @roles.inject(0) { |sum,r| sum + r.priority.to_i }
70
+ @__priority ||= __priority
88
71
  end
89
72
 
90
73
  # @return [Array<Evaluation::Role::Base>]
@@ -140,6 +123,43 @@ module Inch
140
123
  def score_for(criteria_name)
141
124
  criteria.send(criteria_name) * MAX_SCORE
142
125
  end
126
+
127
+ def __evaluate(object, role_classes)
128
+ role_classes.each do |role_class, score|
129
+ if role_class.applicable?(object)
130
+ add_role role_class.new(object, score)
131
+ end
132
+ end
133
+ end
134
+
135
+ # @return [Float] the max score that is assignable to +object+
136
+ def __max_score
137
+ arr = @roles.map(&:max_score).compact
138
+ [MAX_SCORE].concat(arr).min
139
+ end
140
+
141
+ # @return [Float] the max score that is assignable to +object+
142
+ def __min_score
143
+ arr = @roles.map(&:min_score).compact
144
+ [MIN_SCORE].concat(arr).max
145
+ end
146
+
147
+ # @return [Float]
148
+ def __score
149
+ value = @roles.inject(0) { |sum,r| sum + r.score.to_f }
150
+ if value < min_score
151
+ min_score
152
+ elsif value > max_score
153
+ max_score
154
+ else
155
+ value
156
+ end
157
+ end
158
+
159
+ # @return [Fixnum]
160
+ def __priority
161
+ @roles.inject(0) { |sum,r| sum + r.priority.to_i }
162
+ end
143
163
  end
144
164
  end
145
165
  end
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+
3
+ module Inch
4
+ module Utils
5
+ class UI
6
+ attr_reader :out, :err
7
+
8
+ def initialize(stdout = $stdout, stderr = $stderr)
9
+ @out, @err = stdout, stderr
10
+ end
11
+
12
+ def debug(msg)
13
+ return unless ENV['DEBUG']
14
+ msg.to_s.lines.each do |line|
15
+ trace edged :dark, line.gsub(/\n$/,'').dark
16
+ end
17
+ end
18
+
19
+ def sub(msg = "")
20
+ color = @current_header_color || :white
21
+ trace __edged(color, msg)
22
+ end
23
+
24
+ def edged(color, msg, edge = "┃ ")
25
+ trace __edged(color, msg, edge)
26
+ end
27
+
28
+ # Writes the given +text+ to out
29
+ #
30
+ # @param text [String]
31
+ # @return [void]
32
+ def trace(text = "")
33
+ @current_header_color = nil if text.to_s.empty?
34
+ out.puts text
35
+ end
36
+
37
+ # Writes the given +text+ to err
38
+ #
39
+ # @param text [String]
40
+ # @return [void]
41
+ def warn(text = "")
42
+ err.puts text
43
+ end
44
+
45
+ def header(text, color, bg_color = nil)
46
+ @current_header_color = color
47
+ trace __header(text, color, bg_color)
48
+ trace if !use_color?
49
+ end
50
+
51
+ # @return [Boolean] true if the UI uses coloring
52
+ def use_color?
53
+ Term::ANSIColor::coloring?
54
+ end
55
+
56
+ private
57
+
58
+ def __edged(color, msg, edge = "┃ ")
59
+ edge.color(color) + msg
60
+ end
61
+
62
+ def __header(text, color, bg_color = nil)
63
+ bg_color ||= "intense_#{color}"
64
+ bar = " #{text}".ljust(CLI::COLUMNS-1)
65
+ .on_color(bg_color).color(:color16)
66
+ "#".color(color).on_color(color) + bar
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module Inch
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1.rc1"
3
3
  end
@@ -0,0 +1,20 @@
1
+ class Foo
2
+ # A complicated method
3
+ def complicated(o, i, *args, &block)
4
+ # ... snip ...
5
+ end
6
+
7
+ # The problem here is that ...
8
+ #
9
+ # @param *names [Array]
10
+ # @return [String]
11
+ def method_with_splat_parameter(*names)
12
+ end
13
+
14
+ # The problem here is that ...
15
+ #
16
+ # @param names [Array]
17
+ # @return [String]
18
+ def method_with_splat_parameter2(*names)
19
+ end
20
+ end
@@ -13,7 +13,20 @@ module Foo
13
13
  # @param [Encoding] e
14
14
  # @return [String]
15
15
  def method_with_empty_param_tag_text(e)
16
+ end
16
17
 
18
+ # The problem here is that ...
19
+ #
20
+ # @param *names [Array]
21
+ # @return [String]
22
+ def method_with_splat_parameter(*names)
23
+ end
24
+
25
+ # The problem here is that ...
26
+ #
27
+ # @param names [Array]
28
+ # @return [String]
29
+ def method_with_splat_parameter2(*names)
17
30
  end
18
31
  end
19
32
 
@@ -5,43 +5,8 @@ class Tracer
5
5
  end
6
6
 
7
7
  describe ::Inch::CLI::TraceHelper do
8
- before do
8
+ it "should be a UI instance" do
9
9
  @instance = Tracer.new
10
+ assert @instance.ui.is_a?(Inch::Utils::UI)
10
11
  end
11
-
12
- it "should trace" do
13
- out, err = capture_io do
14
- @instance.trace("Test")
15
- end
16
- refute out.empty?, "there should be no output"
17
- assert err.empty?, "there should be no errors"
18
- end
19
-
20
- it "should trace header" do
21
- out, err = capture_io do
22
- @instance.trace_header("Test", :red)
23
- end
24
- refute out.empty?, "there should be no output"
25
- assert err.empty?, "there should be no errors"
26
- end
27
-
28
- it "should trace debug if ENV variable is set" do
29
- ENV['DEBUG'] = "1"
30
- out, err = capture_io do
31
- @instance.debug("Test")
32
- end
33
- ENV['DEBUG'] = nil
34
- refute out.empty?, "there should be no output"
35
- assert err.empty?, "there should be no errors"
36
- end
37
-
38
- it "should not trace debug if ENV variable is set" do
39
- refute ENV['DEBUG']
40
- out, err = capture_io do
41
- @instance.debug("Test")
42
- end
43
- assert out.empty?, "there should be no output"
44
- assert err.empty?, "there should be no errors"
45
- end
46
-
47
12
  end
@@ -173,6 +173,15 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
173
173
  assert m.score > 0
174
174
  end
175
175
 
176
+ def test_depth
177
+ m = @codebase.objects.find("#root_method")
178
+ assert_equal 1, m.depth
179
+ m = @codebase.objects.find("InchTest#getter")
180
+ assert_equal 2, m.depth
181
+ m = @codebase.objects.find("Foo::Bar#method_without_doc")
182
+ assert_equal 3, m.depth
183
+ end
184
+
176
185
  def test_getter
177
186
  m = @codebase.objects.find("InchTest#getter")
178
187
  assert m.getter?, "should be a getter"
@@ -214,4 +223,10 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
214
223
  refute m.getter?
215
224
  assert m.setter?, "should be a setter"
216
225
  end
226
+
227
+ def test_splat_parameter_notation
228
+ m1 = @codebase.objects.find("Foo#method_with_splat_parameter")
229
+ m2 = @codebase.objects.find("Foo#method_with_splat_parameter2")
230
+ assert_equal m1.score, m2.score
231
+ end
217
232
  end
@@ -0,0 +1,42 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
+
3
+ describe ::Inch::Utils::UI do
4
+ it "should trace" do
5
+ out, err = capture_io do
6
+ @instance = ::Inch::Utils::UI.new
7
+ @instance.trace("Test")
8
+ end
9
+ refute out.empty?, "there should be no output"
10
+ assert err.empty?, "there should be no errors"
11
+ end
12
+
13
+ it "should trace header" do
14
+ out, err = capture_io do
15
+ @instance = ::Inch::Utils::UI.new
16
+ @instance.header("Test", :red)
17
+ end
18
+ refute out.empty?, "there should be no output"
19
+ assert err.empty?, "there should be no errors"
20
+ end
21
+
22
+ it "should trace debug if ENV variable is set" do
23
+ ENV['DEBUG'] = "1"
24
+ out, err = capture_io do
25
+ @instance = ::Inch::Utils::UI.new
26
+ @instance.debug("Test")
27
+ end
28
+ ENV['DEBUG'] = nil
29
+ refute out.empty?, "there should be no output"
30
+ assert err.empty?, "there should be no errors"
31
+ end
32
+
33
+ it "should not trace debug if ENV variable is set" do
34
+ refute ENV['DEBUG']
35
+ out, err = capture_io do
36
+ @instance = ::Inch::Utils::UI.new
37
+ @instance.debug("Test")
38
+ end
39
+ assert out.empty?, "there should be no output"
40
+ assert err.empty?, "there should be no errors"
41
+ end
42
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Föhring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-20 00:00:00.000000000 Z
11
+ date: 2014-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -219,9 +219,11 @@ files:
219
219
  - lib/inch/rake.rb
220
220
  - lib/inch/rake/suggest.rb
221
221
  - lib/inch/utils/read_write_methods.rb
222
+ - lib/inch/utils/ui.rb
222
223
  - lib/inch/utils/weighted_list.rb
223
224
  - lib/inch/version.rb
224
225
  - test/fixtures/code_examples/lib/foo.rb
226
+ - test/fixtures/parameters/lib/foo.rb
225
227
  - test/fixtures/readme/lib/foo.rb
226
228
  - test/fixtures/really_good/lib/foo.rb
227
229
  - test/fixtures/really_good_pedantic/lib/foo.rb
@@ -262,6 +264,7 @@ files:
262
264
  - test/inch/codebase/objects_test.rb
263
265
  - test/inch/codebase/proxy_test.rb
264
266
  - test/inch/evaluation/role/base_test.rb
267
+ - test/inch/utils/ui_test.rb
265
268
  - test/inch/utils/weighted_list_test.rb
266
269
  - test/integration/stats_options_test.rb
267
270
  - test/integration/visibility_options_test.rb
@@ -282,9 +285,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
282
285
  version: '0'
283
286
  required_rubygems_version: !ruby/object:Gem::Requirement
284
287
  requirements:
285
- - - ">="
288
+ - - ">"
286
289
  - !ruby/object:Gem::Version
287
- version: '0'
290
+ version: 1.3.1
288
291
  requirements: []
289
292
  rubyforge_project:
290
293
  rubygems_version: 2.2.2
@@ -293,6 +296,7 @@ specification_version: 4
293
296
  summary: Documentation measurement tool for Ruby
294
297
  test_files:
295
298
  - test/fixtures/code_examples/lib/foo.rb
299
+ - test/fixtures/parameters/lib/foo.rb
296
300
  - test/fixtures/readme/lib/foo.rb
297
301
  - test/fixtures/really_good/lib/foo.rb
298
302
  - test/fixtures/really_good_pedantic/lib/foo.rb
@@ -333,6 +337,7 @@ test_files:
333
337
  - test/inch/codebase/objects_test.rb
334
338
  - test/inch/codebase/proxy_test.rb
335
339
  - test/inch/evaluation/role/base_test.rb
340
+ - test/inch/utils/ui_test.rb
336
341
  - test/inch/utils/weighted_list_test.rb
337
342
  - test/integration/stats_options_test.rb
338
343
  - test/integration/visibility_options_test.rb