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.
179 180 181 182 |
# File 'lib/megatest/selector.rb', line 179 def initialize(line, index) @line = line @index = index end |
Class Method Details
.parse(arg) ⇒ Object
172 173 174 175 176 |
# File 'lib/megatest/selector.rb', line 172 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
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/megatest/selector.rb', line 184 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 |