Class: Minitest::PathExpander::TM

Inherits:
Data
  • Object
show all
Defined in:
lib/minitest/path_expander.rb

Overview

Simple TestMethod (abbr TM) Data object.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass:, name:) ⇒ TM

Returns a new instance of TM.



381
382
383
384
385
386
387
388
389
390
391
392
# File 'lib/minitest/path_expander.rb', line 381

def initialize klass:, name:
  method = klass.instance_method name
  path, line_s = method.source_location

  path = path.delete_prefix "#{Dir.pwd}/"

  line_e = line_s + TM.source_for(method).lines.size - 1

  lines = line_s..line_e

  super klass:, name:, path:, lines:
end

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass

Returns:

  • (Object)

    the current value of klass



380
381
382
# File 'lib/minitest/path_expander.rb', line 380

def klass
  @klass
end

#linesObject (readonly)

Returns the value of attribute lines

Returns:

  • (Object)

    the current value of lines



380
381
382
# File 'lib/minitest/path_expander.rb', line 380

def lines
  @lines
end

#nameObject (readonly)

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



380
381
382
# File 'lib/minitest/path_expander.rb', line 380

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path

Returns:

  • (Object)

    the current value of path



380
381
382
# File 'lib/minitest/path_expander.rb', line 380

def path
  @path
end

Class Method Details

.cacheObject



408
# File 'lib/minitest/path_expander.rb', line 408

def self.cache = @cache ||= {}

.source_for(method) ⇒ Object



394
395
396
397
398
399
400
401
402
403
404
405
406
# File 'lib/minitest/path_expander.rb', line 394

def self.source_for method
  path, line = method.source_location
  file = cache[path] ||= File.readlines(path)

  ruby = +""

  file[line-1..].each do |l|
    ruby << l
    return ruby if Prism.parse_success? ruby
  end

  nil
end

Instance Method Details

#include?(o) ⇒ Boolean

Returns:

  • (Boolean)


410
# File 'lib/minitest/path_expander.rb', line 410

def include?(o) = o.is_a?(Integer) ? lines.include?(o) : lines.overlap?(o)

#line_sObject



414
# File 'lib/minitest/path_expander.rb', line 414

def line_s = lines.begin

#to_sObject



412
# File 'lib/minitest/path_expander.rb', line 412

def to_s = "%s:%d-%d" % [path, lines.begin, lines.end]