Class: ChefSpec::Matchers::RenderFileMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/chefspec/matchers/render_file_matcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ RenderFileMatcher

Returns a new instance of RenderFileMatcher.


4
5
6
7
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 4

def initialize(path)
  @path = path
  @expected_content = []
end

Instance Attribute Details

#expected_contentObject (readonly)

Returns the value of attribute expected_content


3
4
5
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 3

def expected_content
  @expected_content
end

Instance Method Details

#descriptionObject


34
35
36
37
38
39
40
41
42
43
44
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 34

def description
  message = %Q{render file "#{@path}"}
  @expected_content.each do |expected|
    if expected.to_s.include?("\n")
      message << " with content <suppressed>"
    else
      message << " with content #{expected.inspect}"
    end
  end
  message
end

#failure_messageObject


46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 46

def failure_message
  message = %Q{expected Chef run to render "#{@path}"}
  unless @expected_content.empty?
    message << " matching:"
    message << "\n\n"
    message << expected_content_message
    message << "\n\n"
    message << "but got:"
    message << "\n\n"
    message << @actual_content.to_s
    message << "\n "
  end
  message
end

#failure_message_when_negatedObject


61
62
63
64
65
66
67
68
69
70
71
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 61

def failure_message_when_negated
  message = %Q{expected file "#{@path}"}
  unless @expected_content.empty?
    message << " matching:"
    message << "\n\n"
    message << expected_content_message
    message << "\n\n"
  end
  message << " to not be in Chef run"
  message
end

#matches?(runner) ⇒ Boolean

Returns:

  • (Boolean)

9
10
11
12
13
14
15
16
17
18
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 9

def matches?(runner)
  @runner = runner

  if resource
    ChefSpec::Coverage.cover!(resource)
    has_create_action? && matches_content?
  else
    false
  end
end

#with_content(expected_content = nil, &block) ⇒ Object


20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/chefspec/matchers/render_file_matcher.rb', line 20

def with_content(expected_content = nil, &block)
  if expected_content && block
    raise ArgumentError, "Cannot specify expected content and a block!"
  elsif expected_content
    @expected_content << expected_content
  elsif block_given?
    @expected_content << block
  else
    raise ArgumentError, "Must specify expected content or a block!"
  end

  self
end