Class: TestRunner::Cli::LabelFilters

Inherits:
Object
  • Object
show all
Defined in:
lib/test-runner/cli/label_filters.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(str_filters) ⇒ LabelFilters

Returns a new instance of LabelFilters.

Parameters:

  • str_filters (Array<String>)


4
5
6
# File 'lib/test-runner/cli/label_filters.rb', line 4

def initialize(str_filters)
  @filters = parse_all(str_filters)
end

Instance Attribute Details

#filtersObject (readonly, protected)

Returns the value of attribute filters.



15
16
17
# File 'lib/test-runner/cli/label_filters.rb', line 15

def filters
  @filters
end

Instance Method Details

#parse_all(str_filters) ⇒ Object (protected)



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/test-runner/cli/label_filters.rb', line 17

def parse_all(str_filters)
  ret = []

  str_filters.each do |s|
    k, v = parse_one(s, '!=')
    if k
      ret << proc do |test|
        test.labels[k].to_s != v
      end
      next
    end

    k, v = parse_one(s, '=')
    if k
      ret << proc do |test|
        test.labels[k].to_s == v
      end
      next
    end

    raise GLI::BadCommandLine, "Invalid filter '#{v}'"
  end

  ret
end

#parse_one(v, sep) ⇒ Object (protected)



43
44
45
46
47
48
49
# File 'lib/test-runner/cli/label_filters.rb', line 43

def parse_one(v, sep)
  i = v.index(sep)
  return false unless i

  len = sep.length
  [v[0..i - 1], v[i + len..]]
end

#pass?(test) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


9
10
11
# File 'lib/test-runner/cli/label_filters.rb', line 9

def pass?(test)
  filters.all? { |f| f.call(test) }
end