Make multiline tests feasible with the new test framework

This commit is contained in:
Jordan Sissel 2012-10-03 14:10:45 -07:00
parent 4c74190a51
commit 87bbb3efd8
2 changed files with 48 additions and 8 deletions

25
spec/filters/multiline.rb Normal file
View file

@ -0,0 +1,25 @@
require "test_utils"
require "logstash/filters/multiline"
describe LogStash::Filters::Multiline do
extend LogStash::RSpec
describe "simple multiline" do
# The logstash config goes here.
# At this time, only filters are supported.
config <<-CONFIG
filter {
multiline {
pattern => "^\\s"
what => previous
}
}
CONFIG
sample [ "hello world", " second line", "another first line" ] do
insist { subject.length } == 2
insist { subject[0].message } == "hello world\n second line"
insist { subject[1].message } == "another first line"
end
end
end

View file

@ -29,17 +29,32 @@ module LogStash
filters = @filters
describe event do
if event.is_a?(String)
subject { LogStash::Event.new("@message" => [event]) }
else
subject { LogStash::Event.new(event) }
end
before :all do
filters.each do |filter|
filter.filter(subject)
# Coerce to an array of LogStash::Event
event = [event] unless event.is_a?(Array)
event = event.collect do |e|
if e.is_a?(String)
LogStash::Event.new("@message" => e)
else
LogStash::Event.new(e)
end
end
results = []
event.each do |e|
filters.each do |filter|
filter.filter(e)
results << e unless e.cancelled?
end
end
filters.select { |f| f.respond_to?(:flush) }.each do |filter|
event = filter.flush
results += event if event
end
@results = results
end
subject { @results }
it("when processed", &block)
end
end # def sample