diff options
author | Nick Stielau <nick.stielau@gmail.com> | 2013-01-08 09:40:17 -0800 |
---|---|---|
committer | Bryan McLellan <btm@opscode.com> | 2013-05-30 09:41:13 -0700 |
commit | 43464b477554908940ce0dc5fa995bd056b4cf30 (patch) | |
tree | 080ff3a26672c47c7a3c7d7e4c04629cf68ba54c | |
parent | 9ca147c954ff5e93c2c5d80263486bbfbbbc4666 (diff) | |
download | chef-43464b477554908940ce0dc5fa995bd056b4cf30.tar.gz |
Raising an exception for chef-solo environment constraints.
-rw-r--r-- | lib/chef/environment.rb | 9 | ||||
-rw-r--r-- | lib/chef/exceptions.rb | 3 | ||||
-rw-r--r-- | spec/unit/environment_spec.rb | 18 | ||||
-rw-r--r-- | spec/unit/exceptions_spec.rb | 4 |
4 files changed, 31 insertions, 3 deletions
diff --git a/lib/chef/environment.rb b/lib/chef/environment.rb index 0e1b03c87f..5c719ca285 100644 --- a/lib/chef/environment.rb +++ b/lib/chef/environment.rb @@ -302,8 +302,13 @@ class Chef def self.validate_cookbook_version(version) begin - Chef::VersionConstraint.new version - true + if Chef::Config[:solo] + raise Chef::Exceptions::IllegalVersionConstraint, + "Environment cookbook version constraints not allowed in chef-solo" + else + Chef::VersionConstraint.new version + true + end rescue ArgumentError false end diff --git a/lib/chef/exceptions.rb b/lib/chef/exceptions.rb index ec2abb0e0c..64609c5c04 100644 --- a/lib/chef/exceptions.rb +++ b/lib/chef/exceptions.rb @@ -115,6 +115,9 @@ class Chef # match OP VERSION. ArgumentError? class InvalidVersionConstraint < ArgumentError; end + # Version constraints are not allowed in chef-solo + class IllegalVersionConstraint < NotImplementedError; end + # File operation attempted but no permissions to perform it class InsufficientPermissions < RuntimeError; end diff --git a/spec/unit/environment_spec.rb b/spec/unit/environment_spec.rb index 8bbf003e6a..5f9675a307 100644 --- a/spec/unit/environment_spec.rb +++ b/spec/unit/environment_spec.rb @@ -275,6 +275,24 @@ describe Chef::Environment do Chef::Environment.validate_cookbook_version("= a").should == false Chef::Environment.validate_cookbook_version("= 1.2.3.4").should == false end + + describe "in solo mode" do + before do + Chef::Config[:solo] = true + end + + after do + Chef::Config[:solo] = false + end + + it "should raise and exception" do + lambda { + Chef::Environment.validate_cookbook_version("= 1.2.3.4") + }.should raise_error Chef::Exceptions::IllegalVersionConstraint, + "Environment cookbook version constraints not allowed in chef-solo" + end + end + end describe "when updating from a parameter hash" do diff --git a/spec/unit/exceptions_spec.rb b/spec/unit/exceptions_spec.rb index fdf515de54..3e7b1ba93f 100644 --- a/spec/unit/exceptions_spec.rb +++ b/spec/unit/exceptions_spec.rb @@ -65,7 +65,9 @@ describe Chef::Exceptions do Chef::Exceptions::SolrConnectionError => RuntimeError, Chef::Exceptions::InvalidDataBagPath => ArgumentError, Chef::Exceptions::InvalidEnvironmentPath => ArgumentError, - Chef::Exceptions::EnvironmentNotFound => RuntimeError + Chef::Exceptions::EnvironmentNotFound => RuntimeError, + Chef::Exceptions::InvalidVersionConstraint => ArgumentError, + Chef::Exceptions::IllegalVersionConstraint => NotImplementedError } exception_to_super_class.each do |exception, expected_super_class| |