From 28771674d69fed3a4b94f3e7d29e5c418d2f16f5 Mon Sep 17 00:00:00 2001 From: Robert Schulze Date: Fri, 7 Sep 2018 11:37:30 +0200 Subject: [PATCH] add `Vagrant.version?` helper method to check Vagrant for a version match without raising an error. --- lib/vagrant.rb | 14 ++++++++++++-- test/unit/vagrant_test.rb | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/vagrant.rb b/lib/vagrant.rb index ff5d42ad1..3e2a3d444 100644 --- a/lib/vagrant.rb +++ b/lib/vagrant.rb @@ -195,6 +195,17 @@ module Vagrant puts "be removed in the next version of Vagrant." end + # This checks if Vagrant is installed in a specific version. + # + # Example: + # + # Vagrant.version?(">= 2.1.0") + # + def self.version?(*requirements) + req = Gem::Requirement.new(*requirements) + req.satisfied_by?(Gem::Version.new(VERSION)) + end + # This allows a Vagrantfile to specify the version of Vagrant that is # required. You can specify a list of requirements which will all be checked # against the running Vagrant version. @@ -211,8 +222,7 @@ module Vagrant logger = Log4r::Logger.new("vagrant::root") logger.info("Version requirements from Vagrantfile: #{requirements.inspect}") - req = Gem::Requirement.new(*requirements) - if req.satisfied_by?(Gem::Version.new(VERSION)) + if version?(*requirements) logger.info(" - Version requirements satisfied!") return end diff --git a/test/unit/vagrant_test.rb b/test/unit/vagrant_test.rb index ae6e78a51..e5b9ca00b 100644 --- a/test/unit/vagrant_test.rb +++ b/test/unit/vagrant_test.rb @@ -101,6 +101,16 @@ describe Vagrant do end end + describe "version?" do + it "should succeed if valid range" do + expect(described_class.version?(Vagrant::VERSION)).to be(true) + end + + it "should not succeed if bad range" do + expect(described_class.version?("> #{Vagrant::VERSION}")).to be(false) + end + end + describe "original_env" do before do ENV["VAGRANT_OLD_ENV_foo"] = "test"