diff options
author | danielsdeleo <dan@opscode.com> | 2013-07-29 17:13:14 -0700 |
---|---|---|
committer | danielsdeleo <dan@opscode.com> | 2013-08-02 09:29:04 -0700 |
commit | b1819c306382fabece4a0d1ed9343590967bc775 (patch) | |
tree | e746768af92279cc431bc07755cf92a9192a2eef | |
parent | 4dcf3ee63fe759dbb573539e2f0f61329a61125c (diff) | |
download | chef-b1819c306382fabece4a0d1ed9343590967bc775.tar.gz |
Add provider based test filters for functional tests
-rw-r--r-- | spec/functional/resource/user_spec.rb | 20 | ||||
-rw-r--r-- | spec/spec_helper.rb | 16 |
2 files changed, 22 insertions, 14 deletions
diff --git a/spec/functional/resource/user_spec.rb b/spec/functional/resource/user_spec.rb index c713d216c1..7a5f020de9 100644 --- a/spec/functional/resource/user_spec.rb +++ b/spec/functional/resource/user_spec.rb @@ -20,14 +20,14 @@ require 'spec_helper' require 'chef/mixin/shell_out' -describe Chef::Resource::User, :unix_only, :requires_root do +metadata = { :unix_only => true, + :requires_root => true, + :provider => {:user => Chef::Provider::User::Useradd} +} - include Chef::Mixin::ShellOut +describe Chef::Resource::User, metadata do - # User provider is platform-dependent, we need platform ohai data: - OHAI_SYSTEM = Ohai::System.new - OHAI_SYSTEM.require_plugin("os") - OHAI_SYSTEM.require_plugin("platform") + include Chef::Mixin::ShellOut # Utility code for /etc/passwd interaction, avoid any caching of user records: @@ -56,14 +56,6 @@ describe Chef::Resource::User, :unix_only, :requires_root do before do # Silence shell_out live stream Chef::Log.level = :warn - - # Tests only implemented for a subset of platforms currently. - user_provider = Chef::Platform.find_provider(OHAI_SYSTEM["platform"], - OHAI_SYSTEM["platform_version"], - :user) - unless user_provider == Chef::Provider::User::Useradd - pending "Only the useradd provider is supported at this time" - end end after do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 524cc38450..7cecaf8172 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -83,6 +83,11 @@ Dir["spec/support/**/*.rb"]. map { |f| f.gsub(%r[spec/], '')}. each { |f| require f } + +OHAI_SYSTEM = Ohai::System.new +OHAI_SYSTEM.require_plugin("os") +OHAI_SYSTEM.require_plugin("platform") + RSpec.configure do |config| config.include(Matchers) config.filter_run :focus => true @@ -111,6 +116,17 @@ RSpec.configure do |config| config.filter_run_excluding :requires_unprivileged_user => true if ENV['USER'] == 'root' config.filter_run_excluding :uses_diff => true unless has_diff? + # Functional Resource tests that are provider-specific: + # context "on platforms that use useradd", :provider => {:user => Chef::Provider::User::Useradd}} do #... + config.filter_run_excluding :provider => lambda {|criteria| + type, target_provider = criteria.first + + platform = OHAI_SYSTEM["platform"], + platform_version = OHAI_SYSTEM["platform_version"] + provider_for_running_platform = Chef::Platform.find_provider(platform, platform_version, type) + provider_for_running_platform != target_provider + } + config.run_all_when_everything_filtered = true config.treat_symbols_as_metadata_keys_with_true_values = true end |