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.
168 169 170 171 |
# File 'lib/megatest/selector.rb', line 168 def initialize(line, index) @line = line @index = index end |
Class Method Details
.parse(arg) ⇒ Object
161 162 163 164 165 |
# File 'lib/megatest/selector.rb', line 161 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
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/megatest/selector.rb', line 173 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 |