mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-11 16:57:11 +02:00
Fix spec on CI, and refactor
This commit is contained in:
parent
0595b454e9
commit
f47ee2e154
@ -16,7 +16,7 @@ class Plugin
|
|||||||
def install!
|
def install!
|
||||||
if valid? && !installed?
|
if valid? && !installed?
|
||||||
if fluent_gem("install", gem_name, "-v", version)
|
if fluent_gem("install", gem_name, "-v", version)
|
||||||
File.open(gemfile, "a") do |f|
|
File.open(gemfile_path, "a") do |f|
|
||||||
f.puts format_gemfile
|
f.puts format_gemfile
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -27,11 +27,11 @@ class Plugin
|
|||||||
if valid? && installed?
|
if valid? && installed?
|
||||||
# NOTE: do not uninstall gem actually for now. because it is not necessary, and slow job
|
# NOTE: do not uninstall gem actually for now. because it is not necessary, and slow job
|
||||||
new_gemfile = ""
|
new_gemfile = ""
|
||||||
File.open(gemfile).each_line do |line|
|
File.open(gemfile_path).each_line do |line|
|
||||||
next if line.strip == format_gemfile
|
next if line.strip == format_gemfile
|
||||||
new_gemfile << line
|
new_gemfile << line
|
||||||
end
|
end
|
||||||
File.open(gemfile, "w"){|f| f.write new_gemfile }
|
File.open(gemfile_path, "w"){|f| f.write new_gemfile }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ class Plugin
|
|||||||
end
|
end
|
||||||
|
|
||||||
def installed?
|
def installed?
|
||||||
File.read(gemfile).lines.map(&:strip).grep(format_gemfile).present?
|
File.read(gemfile_path).lines.map(&:strip).grep(format_gemfile).present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def format_gemfile
|
def format_gemfile
|
||||||
@ -54,35 +54,36 @@ class Plugin
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.gemfile_changed?
|
def self.gemfile_changed?
|
||||||
# if true, rails server needs to restart
|
# if true, rails server needs to restart }
|
||||||
@initial_gemfile_content != File.read(gemfile)
|
@initial_gemfile_content != File.read(gemfile_path)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.gemfile
|
def self.gemfile_path
|
||||||
if Rails.env == "test"
|
if Rails.env == "test"
|
||||||
gemfile = Rails.root + "tmp/Gemfile.plugins"
|
gemfile_path = "/tmp/fluentd-ui-test-Gemfile.plugins" # can't create a file under Rails.root directory on Circle CI
|
||||||
else
|
else
|
||||||
gemfile = Rails.root + "Gemfile.plugins"
|
gemfile_path = Rails.root + "Gemfile.plugins"
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
unless File.exists?(gemfile)
|
def self.pristine!
|
||||||
File.open(gemfile, "w") do |f|
|
unless File.exists?(gemfile_path)
|
||||||
|
File.open(gemfile_path, "w") do |f|
|
||||||
f.write "# USED BY fluentd-ui internally\n"
|
f.write "# USED BY fluentd-ui internally\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@initial_gemfile_content ||= File.read(gemfile)
|
@initial_gemfile_content = File.read(gemfile_path)
|
||||||
gemfile
|
|
||||||
end
|
end
|
||||||
|
pristine!
|
||||||
|
|
||||||
|
def gemfile_path
|
||||||
def gemfile
|
self.class.gemfile_path
|
||||||
self.class.gemfile
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def fluent_gem(*commands)
|
def fluent_gem(*commands)
|
||||||
unless system(*%W(bundle exec gem) + commands) # TODO: should grab stdout/stderr
|
unless system(*%W(bundle exec fluent-gem) + commands) # TODO: should grab stdout/stderr
|
||||||
raise GemError, "failed command #{commands}"
|
raise GemError, "failed command #{commands}"
|
||||||
end
|
end
|
||||||
true
|
true
|
||||||
|
@ -2,15 +2,24 @@ require 'spec_helper'
|
|||||||
|
|
||||||
describe Plugin do
|
describe Plugin do
|
||||||
let(:plugin) { FactoryGirl.build(:plugin) }
|
let(:plugin) { FactoryGirl.build(:plugin) }
|
||||||
|
before do
|
||||||
|
Kernel.stub(:system) # do not call `system('fluent-gem install ..')` on CI
|
||||||
|
end
|
||||||
|
after do
|
||||||
|
File.unlink Plugin.gemfile_path if File.exist?(Plugin.gemfile_path)
|
||||||
|
Plugin.pristine!
|
||||||
|
end
|
||||||
|
|
||||||
describe "#valid?" do
|
describe "#valid?" do
|
||||||
describe "gem_name" do
|
describe "gem_name" do
|
||||||
subject { plugin }
|
subject { plugin }
|
||||||
before { plugin.gem_name = gem_name }
|
before { plugin.gem_name = gem_name }
|
||||||
|
|
||||||
context "nil is invalid" do
|
context "nil is invalid" do
|
||||||
let(:gem_name) { nil }
|
let(:gem_name) { nil }
|
||||||
it { should_not be_valid }
|
it { should_not be_valid }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "somthing filled is valid" do
|
context "somthing filled is valid" do
|
||||||
let(:gem_name) { "foobar" }
|
let(:gem_name) { "foobar" }
|
||||||
it { should be_valid }
|
it { should be_valid }
|
||||||
@ -20,10 +29,12 @@ describe Plugin do
|
|||||||
describe "version" do
|
describe "version" do
|
||||||
subject { plugin }
|
subject { plugin }
|
||||||
before { plugin.version = version }
|
before { plugin.version = version }
|
||||||
|
|
||||||
context "nil is invalid" do
|
context "nil is invalid" do
|
||||||
let(:version) { nil }
|
let(:version) { nil }
|
||||||
it { should_not be_valid }
|
it { should_not be_valid }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "somthing filled is valid" do
|
context "somthing filled is valid" do
|
||||||
let(:version) { "0.0.1" }
|
let(:version) { "0.0.1" }
|
||||||
it { should be_valid }
|
it { should be_valid }
|
||||||
@ -32,11 +43,6 @@ describe Plugin do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#install!" do
|
describe "#install!" do
|
||||||
before do
|
|
||||||
File.unlink Plugin.gemfile
|
|
||||||
Plugin.instance_variable_set(:@initial_gemfile_content, nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "invoke fluent_gem" do
|
describe "invoke fluent_gem" do
|
||||||
after do
|
after do
|
||||||
plugin.stub(:valid?).and_return { valid }
|
plugin.stub(:valid?).and_return { valid }
|
||||||
@ -85,13 +91,12 @@ describe Plugin do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "uninstall!" do
|
describe "uninstall!" do
|
||||||
let(:installed_plugin) { FactoryGirl.build(:plugin) }
|
let(:installed_plugin) { FactoryGirl.build(:plugin, gem_name: "fluent-plugin-foobar") }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
installed_plugin.stub(:fluent_gem).and_return { true }
|
installed_plugin.stub(:fluent_gem).and_return { true }
|
||||||
File.unlink Plugin.gemfile
|
|
||||||
installed_plugin.install!
|
installed_plugin.install!
|
||||||
Plugin.instance_variable_set(:@initial_gemfile_content, nil)
|
Plugin.pristine!
|
||||||
end
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
Loading…
Reference in New Issue
Block a user