From 9df6a397e15d4162e6299e15a682152fa07e3fee Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Wed, 15 Nov 2017 17:39:44 +0900 Subject: [PATCH 1/3] Group test for plugin generator --- test/command/test_plugin_generator.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/command/test_plugin_generator.rb b/test/command/test_plugin_generator.rb index ccc10c0643..dddd6ba8b5 100644 --- a/test/command/test_plugin_generator.rb +++ b/test/command/test_plugin_generator.rb @@ -4,6 +4,7 @@ require 'fluent/command/plugin_generator' class TestFluentPluginGenerator < Test::Unit::TestCase + sub_test_case "generate plugin" do TEMP_DIR = "tmp/plugin_generator" setup do FileUtils.mkdir_p(TEMP_DIR) @@ -63,4 +64,5 @@ class TestFluentPluginGenerator < Test::Unit::TestCase end assert { out.lines.include?("License: unknown\n") } end + end end From a75e2a55e4f3c0c0cd0286fa0b8f9a4a31a2bcc1 Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Wed, 15 Nov 2017 17:40:19 +0900 Subject: [PATCH 2/3] Indent --- test/command/test_plugin_generator.rb | 102 +++++++++++++------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/test/command/test_plugin_generator.rb b/test/command/test_plugin_generator.rb index dddd6ba8b5..f8721184c4 100644 --- a/test/command/test_plugin_generator.rb +++ b/test/command/test_plugin_generator.rb @@ -5,64 +5,64 @@ class TestFluentPluginGenerator < Test::Unit::TestCase sub_test_case "generate plugin" do - TEMP_DIR = "tmp/plugin_generator" - setup do - FileUtils.mkdir_p(TEMP_DIR) - @pwd = Dir.pwd - Dir.chdir(TEMP_DIR) - end + TEMP_DIR = "tmp/plugin_generator" + setup do + FileUtils.mkdir_p(TEMP_DIR) + @pwd = Dir.pwd + Dir.chdir(TEMP_DIR) + end - teardown do - Dir.chdir(@pwd) - FileUtils.rm_rf(TEMP_DIR) - end + teardown do + Dir.chdir(@pwd) + FileUtils.rm_rf(TEMP_DIR) + end - data(input: ["input", "in"], - output: ["output", "out"], - filter: ["filter", "filter"], - parser: ["parser", "parser"], - formatter: ["formatter", "formatter"]) - test "generate plugin" do |(type, part)| - capture_stdout do - FluentPluginGenerator.new([type, "fake"]).call + data(input: ["input", "in"], + output: ["output", "out"], + filter: ["filter", "filter"], + parser: ["parser", "parser"], + formatter: ["formatter", "formatter"]) + test "generate plugin" do |(type, part)| + capture_stdout do + FluentPluginGenerator.new([type, "fake"]).call + end + plugin_base_dir = Pathname("fluent-plugin-fake") + assert { plugin_base_dir.directory? } + expected = [ + "fluent-plugin-fake", + "fluent-plugin-fake/Gemfile", + "fluent-plugin-fake/LICENSE", + "fluent-plugin-fake/README.md", + "fluent-plugin-fake/Rakefile", + "fluent-plugin-fake/fluent-plugin-fake.gemspec", + "fluent-plugin-fake/lib", + "fluent-plugin-fake/lib/fluent", + "fluent-plugin-fake/lib/fluent/plugin", + "fluent-plugin-fake/lib/fluent/plugin/#{part}_fake.rb", + "fluent-plugin-fake/test", + "fluent-plugin-fake/test/helper.rb", + "fluent-plugin-fake/test/plugin", + "fluent-plugin-fake/test/plugin/test_#{part}_fake.rb", + ] + actual = plugin_base_dir.find.reject {|f| f.fnmatch("*/.git*") }.map(&:to_s).sort + assert_equal(expected, actual) end - plugin_base_dir = Pathname("fluent-plugin-fake") - assert { plugin_base_dir.directory? } - expected = [ - "fluent-plugin-fake", - "fluent-plugin-fake/Gemfile", - "fluent-plugin-fake/LICENSE", - "fluent-plugin-fake/README.md", - "fluent-plugin-fake/Rakefile", - "fluent-plugin-fake/fluent-plugin-fake.gemspec", - "fluent-plugin-fake/lib", - "fluent-plugin-fake/lib/fluent", - "fluent-plugin-fake/lib/fluent/plugin", - "fluent-plugin-fake/lib/fluent/plugin/#{part}_fake.rb", - "fluent-plugin-fake/test", - "fluent-plugin-fake/test/helper.rb", - "fluent-plugin-fake/test/plugin", - "fluent-plugin-fake/test/plugin/test_#{part}_fake.rb", - ] - actual = plugin_base_dir.find.reject {|f| f.fnmatch("*/.git*") }.map(&:to_s).sort - assert_equal(expected, actual) - end - test "no license" do - capture_stdout do - FluentPluginGenerator.new(["--no-license", "filter", "fake"]).call + test "no license" do + capture_stdout do + FluentPluginGenerator.new(["--no-license", "filter", "fake"]).call + end + assert { !Pathname("fluent-plugin-fake/LICENSE").exist? } + assert { Pathname("fluent-plugin-fake/Gemfile").exist? } end - assert { !Pathname("fluent-plugin-fake/LICENSE").exist? } - assert { Pathname("fluent-plugin-fake/Gemfile").exist? } - end - test "unknown license" do - out = capture_stdout do - assert_raise(SystemExit) do - FluentPluginGenerator.new(["--license=unknown", "filter", "fake"]).call + test "unknown license" do + out = capture_stdout do + assert_raise(SystemExit) do + FluentPluginGenerator.new(["--license=unknown", "filter", "fake"]).call + end end + assert { out.lines.include?("License: unknown\n") } end - assert { out.lines.include?("License: unknown\n") } - end end end From f8ace9c599a063045b9fc63380a3faa9ba1f1411 Mon Sep 17 00:00:00 2001 From: Kenji Okimoto Date: Wed, 15 Nov 2017 17:52:04 +0900 Subject: [PATCH 3/3] Organize hyphenated name and underscore delimited name * plugin name will unify to underscore delimited name * gem name will unify to hyphenated name with "fluent-plugin-" prefix --- lib/fluent/command/plugin_generator.rb | 32 +++++++++---- .../new_gem/lib/fluent/plugin/filter.rb.erb | 2 +- .../new_gem/lib/fluent/plugin/input.rb.erb | 2 +- .../new_gem/lib/fluent/plugin/output.rb.erb | 2 +- .../new_gem/lib/fluent/plugin/parser.rb.erb | 2 +- test/command/test_plugin_generator.rb | 46 ++++++++++++++----- 6 files changed, 63 insertions(+), 23 deletions(-) diff --git a/lib/fluent/command/plugin_generator.rb b/lib/fluent/command/plugin_generator.rb index c957fb6210..df5abeb0d9 100644 --- a/lib/fluent/command/plugin_generator.rb +++ b/lib/fluent/command/plugin_generator.rb @@ -137,32 +137,36 @@ def user_email end def gem_name - "fluent-plugin-#{name}" + "fluent-plugin-#{dash_name}" + end + + def plugin_name + underscore_name end def class_name - "#{name.capitalize}#{type.capitalize}" + "#{capitalized_name}#{type.capitalize}" end def plugin_filename case type when "input" - "in_#{name}.rb" + "in_#{underscore_name}.rb" when "output" - "out_#{name}.rb" + "out_#{underscore_name}.rb" else - "#{type}_#{name}.rb" + "#{type}_#{underscore_name}.rb" end end def test_filename case type when "input" - "test_in_#{name}.rb" + "test_in_#{underscore_name}.rb" when "output" - "test_out_#{name}.rb" + "test_out_#{underscore_name}.rb" else - "test_#{type}_#{name}.rb" + "test_#{type}_#{underscore_name}.rb" end end @@ -179,6 +183,18 @@ def dest_filename(path) end end + def capitalized_name + @capitalized_name ||= name.split(/[-_]/).map(&:capitalize).join + end + + def underscore_name + @underscore_name ||= name.tr("-", "_") + end + + def dash_name + @dash_name ||= name.tr("_", "-") + end + def preamble @license.preamble(user_name) end diff --git a/templates/new_gem/lib/fluent/plugin/filter.rb.erb b/templates/new_gem/lib/fluent/plugin/filter.rb.erb index 5c560183a3..6b43d289f0 100644 --- a/templates/new_gem/lib/fluent/plugin/filter.rb.erb +++ b/templates/new_gem/lib/fluent/plugin/filter.rb.erb @@ -5,7 +5,7 @@ require "fluent/plugin/filter" module Fluent module Plugin class <%= class_name %> < Fluent::Plugin::Filter - Fluent::Plugin.register_filter("<%= name %>", self) + Fluent::Plugin.register_filter("<%= plugin_name %>", self) def filter(tag, time, record) end diff --git a/templates/new_gem/lib/fluent/plugin/input.rb.erb b/templates/new_gem/lib/fluent/plugin/input.rb.erb index 495055c1a4..14bfb9b60a 100644 --- a/templates/new_gem/lib/fluent/plugin/input.rb.erb +++ b/templates/new_gem/lib/fluent/plugin/input.rb.erb @@ -5,7 +5,7 @@ require "fluent/plugin/input" module Fluent module Plugin class <%= class_name %> < Fluent::Plugin::Input - Fluent::Plugin.register_input("<%= name %>", self) + Fluent::Plugin.register_input("<%= plugin_name %>", self) end end end diff --git a/templates/new_gem/lib/fluent/plugin/output.rb.erb b/templates/new_gem/lib/fluent/plugin/output.rb.erb index 2d5373ed0d..b08c5bd323 100644 --- a/templates/new_gem/lib/fluent/plugin/output.rb.erb +++ b/templates/new_gem/lib/fluent/plugin/output.rb.erb @@ -5,7 +5,7 @@ require "fluent/plugin/output" module Fluent module Plugin class <%= class_name %> < Fluent::Plugin::Output - Fluent::Plugin.register_output("<%= name %>", self) + Fluent::Plugin.register_output("<%= plugin_name %>", self) end end end diff --git a/templates/new_gem/lib/fluent/plugin/parser.rb.erb b/templates/new_gem/lib/fluent/plugin/parser.rb.erb index 74b6e749d8..52c10285ab 100644 --- a/templates/new_gem/lib/fluent/plugin/parser.rb.erb +++ b/templates/new_gem/lib/fluent/plugin/parser.rb.erb @@ -5,7 +5,7 @@ require "fluent/plugin/parser" module Fluent module Plugin class <%= class_name %> < Fluent::Plugin::Parser - Fluent::Plugin.register_parser("<%= name %>", self) + Fluent::Plugin.register_parser("<%= plugin_name %>", self) end def parse(text) diff --git a/test/command/test_plugin_generator.rb b/test/command/test_plugin_generator.rb index f8721184c4..4c534f2c67 100644 --- a/test/command/test_plugin_generator.rb +++ b/test/command/test_plugin_generator.rb @@ -4,19 +4,19 @@ require 'fluent/command/plugin_generator' class TestFluentPluginGenerator < Test::Unit::TestCase - sub_test_case "generate plugin" do - TEMP_DIR = "tmp/plugin_generator" - setup do - FileUtils.mkdir_p(TEMP_DIR) - @pwd = Dir.pwd - Dir.chdir(TEMP_DIR) - end + TEMP_DIR = "tmp/plugin_generator" + setup do + FileUtils.mkdir_p(TEMP_DIR) + @pwd = Dir.pwd + Dir.chdir(TEMP_DIR) + end - teardown do - Dir.chdir(@pwd) - FileUtils.rm_rf(TEMP_DIR) - end + teardown do + Dir.chdir(@pwd) + FileUtils.rm_rf(TEMP_DIR) + end + sub_test_case "generate plugin" do data(input: ["input", "in"], output: ["output", "out"], filter: ["filter", "filter"], @@ -65,4 +65,28 @@ class TestFluentPluginGenerator < Test::Unit::TestCase assert { out.lines.include?("License: unknown\n") } end end + + sub_test_case "unify plugin name" do + data("word" => ["fake", "fake"], + "underscore" => ["rewrite_tag_filter", "rewrite_tag_filter"], + "dash" => ["rewrite-tag-filter", "rewrite_tag_filter"]) + test "plugin_name" do |(name, plugin_name)| + generator = FluentPluginGenerator.new(["filter", name]) + capture_stdout do + generator.call + end + assert_equal(plugin_name, generator.__send__(:plugin_name)) + end + + data("word" => ["fake", "fluent-plugin-fake"], + "underscore" => ["rewrite_tag_filter", "fluent-plugin-rewrite-tag-filter"], + "dash" => ["rewrite-tag-filter", "fluent-plugin-rewrite-tag-filter"]) + test "gem_name" do |(name, gem_name)| + generator = FluentPluginGenerator.new(["output", name]) + capture_stdout do + generator.call + end + assert_equal(gem_name, generator.__send__(:gem_name)) + end + end end