[#275] Add requires_chiliproject. We now use the rubygems dependency syntax.
This commit is contained in:
parent
8f4439e0d4
commit
1796fddd2b
|
@ -101,9 +101,36 @@ module Redmine #:nodoc:
|
||||||
self.id.to_s <=> plugin.id.to_s
|
self.id.to_s <=> plugin.id.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
# Sets a requirement on Redmine version
|
# Sets a requirement on the ChiliProject version.
|
||||||
|
# Raises a PluginRequirementError exception if the requirement is not met.
|
||||||
|
#
|
||||||
|
# It uses the same syntax as rubygems requirements.
|
||||||
|
# Examples
|
||||||
|
# # Requires exactly ChiliProject 1.1.1
|
||||||
|
# requires_chiliproject "1.1.1"
|
||||||
|
# requires_chiliproject "= 1.1.1"
|
||||||
|
|
||||||
|
# # Requires ChiliProject 1.1.x
|
||||||
|
# requires_chiliproject "~> 1.1.0"
|
||||||
|
|
||||||
|
# # Requires ChiliProject between 1.1.0 and 1.1.5 or higher
|
||||||
|
# requires_chiliproject ">= 1.1.0", "<= 1.1.5"
|
||||||
|
|
||||||
|
def requires_chiliproject(*args)
|
||||||
|
required_version = Gem::Requirement.new(*args)
|
||||||
|
chili_version = Gem::Version.new(Redmine::VERSION.to_semver)
|
||||||
|
|
||||||
|
unless required_version.satisfied_by? chili_version
|
||||||
|
raise PluginRequirementError.new("#{id} plugin requires ChiliProject version #{required_version} but current version is #{chili_version}.")
|
||||||
|
end
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Sets a requirement on Redmine version.
|
||||||
# Raises a PluginRequirementError exception if the requirement is not met
|
# Raises a PluginRequirementError exception if the requirement is not met
|
||||||
#
|
#
|
||||||
|
# THIS IS A REDMINE COMPATIBILITY INTERFACE
|
||||||
|
#
|
||||||
# Examples
|
# Examples
|
||||||
# # Requires Redmine 0.7.3 or higher
|
# # Requires Redmine 0.7.3 or higher
|
||||||
# requires_redmine :version_or_higher => '0.7.3'
|
# requires_redmine :version_or_higher => '0.7.3'
|
||||||
|
|
|
@ -71,6 +71,29 @@ class Redmine::PluginTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_requires_chiliproject
|
||||||
|
test = self
|
||||||
|
version = Redmine::VERSION.to_semver
|
||||||
|
|
||||||
|
@klass.register :foo do
|
||||||
|
test.assert requires_chiliproject('>= 0.1')
|
||||||
|
test.assert requires_chiliproject(">= #{version}")
|
||||||
|
test.assert requires_chiliproject(version)
|
||||||
|
test.assert_raise Redmine::PluginRequirementError do
|
||||||
|
requires_chiliproject('>= 99.0.0')
|
||||||
|
end
|
||||||
|
test.assert_raise Redmine::PluginRequirementError do
|
||||||
|
requires_chiliproject('< 0.9')
|
||||||
|
end
|
||||||
|
requires_chiliproject('> 0.9', "<= 99.0.0")
|
||||||
|
test.assert_raise Redmine::PluginRequirementError do
|
||||||
|
requires_chiliproject('< 0.9', ">= 98.0.0")
|
||||||
|
end
|
||||||
|
|
||||||
|
test.assert requires_chiliproject("~> #{Redmine::VERSION.to_semver.gsub(/\d+$/, '0')}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_requires_redmine_plugin
|
def test_requires_redmine_plugin
|
||||||
test = self
|
test = self
|
||||||
other_version = '0.5.0'
|
other_version = '0.5.0'
|
||||||
|
|
Loading…
Reference in New Issue