fluentd-ui/test/lib/filte_reverse_reader_test.rb
Kenji Okimoto ca7926635d Add test/lib/filte_reverse_reader_test.rb
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
2018-07-31 09:15:37 +09:00

64 lines
2.0 KiB
Ruby

require "test_helper"
class FileReverseReaderTest < ActiveSupport::TestCase
sub_test_case "#each_line" do
data(
"small file" => File.size(fixture_path("error0.log")),
"large file" => 2,
)
test "read at once" do |step|
io = File.open(fixture_path("error0.log"))
reader = FileReverseReader.new(io, step)
subject = reader.enum_for(:each_line)
File.open(fixture_path("error0.log"), "r") do |file|
assert_equal(file.each_line.count, subject.count)
end
File.open(fixture_path("error0.log"), "r") do |file|
assert_equal(file.each_line.to_a.map(&:strip).reverse, subject.to_a)
end
io.close
end
end
data("contain ascii only" => ["ABCDE", false],
"contain non-ascii" => ["\x89NG", true])
test "#binary_file?" do |(content, is_binary)|
File.open(Rails.root + "tmp/log.log", "wb") do |file|
file.write(content)
end
File.open(Rails.root + "tmp/log.log") do |io|
reader = FileReverseReader.new(io)
assert_equal(is_binary, reader.binary_file?)
end
end
sub_test_case "#tail" do
data("2" => [2, "foo\n" * 2],
"50" => [50, "foo\n" * 50],
"over log lines" => [100, "foo\n" * 200])
test "count" do |(count, content)|
logfile = Rails.root + "tmp/log.log"
File.open(logfile, "wb") do |file|
file.write(content)
end
File.open(logfile, "r") do |io|
reader = FileReverseReader.new(io)
assert_equal(count, reader.tail(count).to_a.size)
end
end
data("compatible with utf-8" => ["utf8あいう\n", ["utf8あいう"]],
"incompatible with utf-8" => ["eucあいう\n".encode('euc-jp'), []])
test "non-ascii encoding" do |(content, expected)|
logfile = Rails.root + "tmp/log.log"
File.open(logfile, "wb") do |file|
file.write(content)
end
File.open(logfile, "r") do |io|
reader = FileReverseReader.new(io)
assert_equal(expected, reader.tail)
end
end
end
end