Module: Minitest::Metz::Where
- Defined in:
- lib/minitest/metz/where.rb
Class Method Summary collapse
- .is_class(klass) ⇒ Object
-
.is_class_primarily(klass) ⇒ Object
Raises ArgumentError if klass does not have any Ruby methods defined in it.
Class Method Details
.is_class(klass) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/minitest/metz/where.rb', line 5 def is_class(klass) methods = defined_methods(klass) file_groups = methods.group_by{|sl| sl[0]} file_counts = file_groups.map do |file, sls| lines = sls.map{|sl| sl[1]} count = lines.size line = lines.min {file: file, count: count, line: line} end file_counts.sort_by!{|fc| fc[:count]} source_locations = file_counts.map{|fc| [fc[:file], fc[:line]]} source_locations end |
.is_class_primarily(klass) ⇒ Object
Raises ArgumentError if klass does not have any Ruby methods defined in it.
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/minitest/metz/where.rb', line 20 def is_class_primarily(klass) source_locations = is_class(klass) if source_locations.empty? methods = defined_methods(klass) raise ArgumentError, (methods.empty? ? "#{klass} has no methods" : "#{klass} only has built-in methods (#{methods.size} in total)" ) end source_locations[0] end |