Class: Megatest::Selector::ExactLineFilter
- Inherits:
-
Object
- Object
- Megatest::Selector::ExactLineFilter
- Defined in:
- lib/megatest/selector.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(line, index) ⇒ ExactLineFilter
constructor
A new instance of ExactLineFilter.
- #select(test_cases) ⇒ Object
Constructor Details
#initialize(line, index) ⇒ ExactLineFilter
Returns a new instance of ExactLineFilter.
177 178 179 180 |
# File 'lib/megatest/selector.rb', line 177 def initialize(line, index) @line = line @index = index end |
Class Method Details
.parse(arg) ⇒ Object
170 171 172 173 174 |
# File 'lib/megatest/selector.rb', line 170 def parse(arg) if match = arg.match(/\A(\d+)(?:~(\d+))?\z/) new(Integer(match[1]), match[2]&.to_i) end end |
Instance Method Details
#select(test_cases) ⇒ Object
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/megatest/selector.rb', line 182 def select(test_cases) test_cases = test_cases.sort { |a, b| b.source_line <=> a.source_line } test_cases = test_cases.drop_while { |t| t.source_line > @line } # Line not found, fallback to run the whole file? return [] if test_cases.empty? real_line = test_cases.first&.source_line test_cases = test_cases.take_while { |t| t.source_line == real_line } if @index test_cases.select! { |t| t.index == @index } end test_cases end |