Class: Inspec::Object::OrTest

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/objects/or_test.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tests) ⇒ OrTest

Returns a new instance of OrTest.


4
5
6
7
# File 'lib/inspec/objects/or_test.rb', line 4

def initialize(tests)
  @tests = tests
  @negated = false
end

Instance Attribute Details

#testsObject (readonly)

Returns the value of attribute tests


3
4
5
# File 'lib/inspec/objects/or_test.rb', line 3

def tests
  @tests
end

Instance Method Details

#negate!Object


13
14
15
# File 'lib/inspec/objects/or_test.rb', line 13

def negate!
  @negated = !@negated
end

#skipObject


9
10
11
# File 'lib/inspec/objects/or_test.rb', line 9

def skip
  nil
end

#to_hashObject


34
35
36
# File 'lib/inspec/objects/or_test.rb', line 34

def to_hash
  { describe_one: @tests.map(&:to_hash) }
end

#to_rubyObject


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/inspec/objects/or_test.rb', line 17

def to_ruby
  if @negated    # We don't use the describe.one wrapper when negated because:
    # !(test1 || test2)     same as    (!test1 && !test2)    where && is implicit in inspec

    all_tests = @tests.map do |test|
      test.negate!
      test
    end.map(&:to_ruby).join("\n")

    all_tests
  else
    all_tests = @tests.map(&:to_ruby).join("\n").gsub("\n", "\n  ")

    format("describe.one do\n  %s\nend", all_tests)
  end
end