mirror of
https://github.com/elastic/logstash.git
synced 2025-06-28 09:46:03 -04:00
This commit fixes the `logstash-plugin update` command which fail to update plugin that depends on a new version of logstash-mixin-ecs_compatibility_support. It resolves logstash-* dependencies and puts them in bundler update command. Fixed: #13181
98 lines
4.5 KiB
Ruby
98 lines
4.5 KiB
Ruby
# Licensed to Elasticsearch B.V. under one or more contributor
|
|
# license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright
|
|
# ownership. Elasticsearch B.V. licenses this file to you under
|
|
# the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
require 'spec_helper'
|
|
require 'pluginmanager/util'
|
|
require 'gems'
|
|
|
|
describe LogStash::PluginManager do
|
|
|
|
describe "fetching plugin information" do
|
|
let(:plugin_name) { "logstash-output-elasticsearch" }
|
|
|
|
let(:version_data) do
|
|
[ { "authors"=>"Elastic", "built_at"=>"2015-08-11T00:00:00.000Z", "description"=>"Output events to elasticsearch",
|
|
"downloads_count"=>1638, "metadata"=>{"logstash_group"=>"output", "logstash_plugin"=>"true"}, "number"=>"2.0.0.pre",
|
|
"summary"=>"Logstash Output to Elasticsearch", "platform"=>"java", "ruby_version"=>">= 0", "prerelease"=>true,
|
|
"licenses"=>["apache-2.0"], "requirements"=>[], "sha"=>"194b27099c13605a882a3669e2363fdecccaab1de48dd44b0cda648dd5516799"},
|
|
{ "authors"=>"Elastic", "built_at"=>"2015-08-10T00:00:00.000Z", "description"=>"Output events to elasticsearch",
|
|
"downloads_count"=>1638, "metadata"=>{"logstash_group"=>"output", "logstash_plugin"=>"true"}, "number"=>"1.0.7",
|
|
"summary"=>"Logstash Output to Elasticsearch", "platform"=>"java", "ruby_version"=>">= 0", "prerelease"=>false,
|
|
"licenses"=>["apache-2.0"], "requirements"=>[], "sha"=>"194b27099c13605a882a3669e2363fdecccaab1de48dd44b0cda648dd5516799"},
|
|
{ "authors"=>"Elastic", "built_at"=>"2015-08-09T00:00:00.000Z", "description"=>"Output events to elasticsearch",
|
|
"downloads_count"=>1638, "metadata"=>{"logstash_group"=>"output", "logstash_plugin"=>"true"}, "number"=>"1.0.4",
|
|
"summary"=>"Logstash Output to Elasticsearch", "platform"=>"java", "ruby_version"=>">= 0", "prerelease"=>false,
|
|
"licenses"=>["apache-2.0"], "requirements"=>[], "sha"=>"194b27099c13605a882a3669e2363fdecccaab1de48dd44b0cda648dd5516799"} ]
|
|
end
|
|
|
|
before(:each) do
|
|
allow(Gems).to receive(:versions).with(plugin_name).and_return(version_data)
|
|
end
|
|
|
|
context "fetch plugin info" do
|
|
it "should search for the last version information non prerelease" do
|
|
version_info = LogStash::PluginManager.fetch_latest_version_info(plugin_name)
|
|
expect(version_info["number"]).to eq("1.0.7")
|
|
end
|
|
|
|
|
|
it "should search for the last version information with prerelease" do
|
|
version_info = LogStash::PluginManager.fetch_latest_version_info(plugin_name, :pre => true)
|
|
expect(version_info["number"]).to eq("2.0.0.pre")
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "a logstash_plugin validation" do
|
|
let(:plugin) { "foo" }
|
|
let(:version) { "9.0.0.0" }
|
|
|
|
let(:sources) { ["https://rubygems.org", "http://source.02"] }
|
|
let(:options) { {:rubygems_source => sources} }
|
|
|
|
let(:gemset) { double("gemset") }
|
|
let(:gemfile) { double("gemfile") }
|
|
let(:dep) { double("dep") }
|
|
let(:fetcher) { double("fetcher") }
|
|
|
|
before(:each) do
|
|
allow(gemfile).to receive(:gemset).and_return(gemset)
|
|
allow(gemset).to receive(:sources).and_return(sources)
|
|
expect(fetcher).to receive(:spec_for_dependency).and_return([[],[]])
|
|
end
|
|
|
|
it "should load all available sources" do
|
|
expect(subject).to receive(:plugin_file?).and_return(false)
|
|
expect(Gem::Dependency).to receive(:new).and_return(dep)
|
|
expect(Gem::SpecFetcher).to receive(:fetcher).and_return(fetcher)
|
|
|
|
subject.logstash_plugin?(plugin, version, options)
|
|
expect(Gem.sources.map { |source| source }).to eq(sources)
|
|
end
|
|
end
|
|
|
|
describe "process alias yaml definition" do
|
|
let(:path) { File.expand_path('plugin_aliases.yml', __dir__) }
|
|
|
|
it "should decode correctly" do
|
|
aliases = subject.load_aliases_definitions(path)
|
|
expect(aliases['logstash-input-aliased_input1']).to eq('logstash-input-beats')
|
|
expect(aliases['logstash-input-aliased_input2']).to eq('logstash-input-tcp')
|
|
expect(aliases['logstash-filter-aliased_filter']).to eq('logstash-filter-json')
|
|
end
|
|
end
|
|
end
|