Method: Specinfra::Command::Base::File.check_contains_lines

Defined in:
lib/specinfra/command/base/file.rb

.check_contains_lines(file, expected_lines, from = nil, to = nil) ⇒ Object


68
69
70
71
72
73
74
75
76
77
# File 'lib/specinfra/command/base/file.rb', line 68

def check_contains_lines(file, expected_lines, from=nil, to=nil)
  require 'digest/md5'
  from ||= '1'
  to ||= '$'
  sed = "sed -n #{escape(from)},#{escape(to)}p #{escape(file)}"
  head_line = expected_lines.first.chomp
  lines_checksum = Digest::MD5.hexdigest(expected_lines.map(&:chomp).join("\n") + "\n")
  afterwards_length = expected_lines.length - 1
  "#{sed} | grep -A #{escape(afterwards_length)} -F -- #{escape(head_line)} | md5sum | grep -qiw -- #{escape(lines_checksum)}"
end