fluentd-ui/test/models/fluent_gem_test.rb
2018-07-27 14:35:18 +09:00

77 lines
2.2 KiB
Ruby

require "test_helper"
class FluentGemTest < ActiveSupport::TestCase
data("no arguments" => [],
"1 argument" => ["plugin-foo"],
"2 arguments" => ["plugin-foo", "--no-document"])
test "install" do |args|
if args.empty?
mock(FluentGem).run("install")
FluentGem.install
else
mock(FluentGem).run("install", *args)
FluentGem.install(*args)
end
end
data("no arguments" => [],
"1 argument" => ["plugin-foo"],
"2 arguments" => ["plugin-foo", "--no-document"])
test "uninstall" do |args|
if args.empty?
mock(FluentGem).run("uninstall")
FluentGem.uninstall
else
mock(FluentGem).run("uninstall", *args)
FluentGem.uninstall(*args)
end
end
data("no list" => "",
"some lines" => <<-GEM_LIST.strip_heredoc)
dummy (3.3.3)
fluent-plugin-foo (0.1.2)
more_dummy (0.0.1)
GEM_LIST
test "list" do |gem_list|
stub(FluentGem).gem { "gem" }
stub(FluentGem).__double_definition_create__.call(:`, "gem list 2>&1") { gem_list }
assert_equal(gem_list.lines.to_a, FluentGem.list)
end
sub_test_case("run") do
test "success" do
stub(FluentGem).gem { "gem" }
args = ["install", "foobar"]
stub(FluentGem).system("gem", *args) { true }
assert_true(FluentGem.run(*args))
end
test "failure" do
stub(FluentGem).gem { "gem" }
args = ["install", "foobar"]
stub(FluentGem).system("gem", *args) { false }
assert_raise(FluentGem::GemError) do
FluentGem.run(*args)
end
end
end
sub_test_case "gem" do
test "any instance not setup yet" do
assert_equal("fluent-gem", FluentGem.gem)
end
test "fluentd setup" do
stub(Fluentd).instance { Fluentd.new(id: nil, variant: "fluentd_gem", log_file: "dummy.log", pid_file: "dummy.pid", config_file: "dummy.conf") }
assert_equal("fluent-gem", FluentGem.gem)
end
test "td-agent 3 setup" do
stub(Fluentd).instance { Fluentd.new(id: nil, variant: "td_agent", log_file: "dummy.log", pid_file: "dummy.pid", config_file: "dummy.conf") }
assert_equal(FluentGem.detect_td_agent_gem, FluentGem.gem)
end
end
end