summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerdar Sutay <serdar@opscode.com>2014-10-28 11:59:54 -0700
committerSerdar Sutay <serdar@opscode.com>2014-10-28 18:37:31 -0700
commit8cefc070070c23dc1824beb2bd8551dc88014635 (patch)
tree69d81bf64fc19a3b44676a3607c055d904ba83af
parent40ae6e04dceb5ee1020fe42390e2dae627cc02b4 (diff)
downloadchef-8cefc070070c23dc1824beb2bd8551dc88014635.tar.gz
Make sure windows_service and windows_package resources are found with the new dynamic provider resolver.
-rw-r--r--lib/chef/provider/package/windows.rb7
-rw-r--r--lib/chef/provider/service/windows.rb1
-rw-r--r--lib/chef/resource/windows_package.rb3
-rw-r--r--lib/chef/resource/windows_service.rb3
-rw-r--r--spec/unit/resource/windows_package_spec.rb17
-rw-r--r--spec/unit/resource/windows_service_spec.rb13
6 files changed, 30 insertions, 14 deletions
diff --git a/lib/chef/provider/package/windows.rb b/lib/chef/provider/package/windows.rb
index 25be5b822c..143d82f111 100644
--- a/lib/chef/provider/package/windows.rb
+++ b/lib/chef/provider/package/windows.rb
@@ -25,8 +25,11 @@ class Chef
class Package
class Windows < Chef::Provider::Package
- # Depending on the installer, we may need to examine installer_type or
- # source attributes, or search for text strings in the installer file
+ provides :package, os: "windows"
+ provides :windows_package, os: "windows"
+
+ # Depending on the installer, we may need to examine installer_type or
+ # source attributes, or search for text strings in the installer file
# binary to determine the installer type for the user. Since the file
# must be on disk to do so, we have to make this choice in the provider.
require 'chef/provider/package/windows/msi.rb'
diff --git a/lib/chef/provider/service/windows.rb b/lib/chef/provider/service/windows.rb
index 4b1d2079ec..d4c272354e 100644
--- a/lib/chef/provider/service/windows.rb
+++ b/lib/chef/provider/service/windows.rb
@@ -26,6 +26,7 @@ end
class Chef::Provider::Service::Windows < Chef::Provider::Service
provides :service, os: "windows"
+ provides :windows_service, os: "windows"
include Chef::Mixin::ShellOut
diff --git a/lib/chef/resource/windows_package.rb b/lib/chef/resource/windows_package.rb
index 9bf3443423..b1ef2c288e 100644
--- a/lib/chef/resource/windows_package.rb
+++ b/lib/chef/resource/windows_package.rb
@@ -24,7 +24,8 @@ class Chef
class Resource
class WindowsPackage < Chef::Resource::Package
- provides :package, platform: "windows"
+ provides :package, os: "windows"
+ provides :windows_package, os: "windows"
def initialize(name, run_context=nil)
super
diff --git a/lib/chef/resource/windows_service.rb b/lib/chef/resource/windows_service.rb
index 49495117ee..2aec4d6304 100644
--- a/lib/chef/resource/windows_service.rb
+++ b/lib/chef/resource/windows_service.rb
@@ -25,7 +25,8 @@ class Chef
# Until #1773 is resolved, you need to manually specify the windows_service resource
# to use action :configure_startup and attribute startup_type
- provides :service, platform: "windows"
+ provides :service, os: "windows"
+ provides :windows_service, os: "windows"
identity_attr :service_name
diff --git a/spec/unit/resource/windows_package_spec.rb b/spec/unit/resource/windows_package_spec.rb
index 0034a731b4..1e02f2449b 100644
--- a/spec/unit/resource/windows_package_spec.rb
+++ b/spec/unit/resource/windows_package_spec.rb
@@ -18,7 +18,18 @@
require 'spec_helper'
-describe Chef::Resource::WindowsPackage, "initialize", :windows_only do
+describe Chef::Resource::WindowsPackage, "initialize" do
+ before(:each) do
+ stub_const("File::ALT_SEPARATOR", "\\")
+ end
+
+ static_provider_resolution(
+ resource: Chef::Resource::WindowsPackage,
+ provider: Chef::Provider::Package::Windows,
+ os: "windows",
+ name: :windows_package,
+ action: :start
+ )
let(:resource) { Chef::Resource::WindowsPackage.new("solitaire.msi") }
@@ -30,10 +41,6 @@ describe Chef::Resource::WindowsPackage, "initialize", :windows_only do
expect(resource.resource_name).to eql(:windows_package)
end
- it "sets the provider to Chef::Provider::Package::Windows" do
- expect(resource.provider).to eql(Chef::Provider::Package::Windows)
- end
-
it "supports setting installer_type as a symbol" do
resource.installer_type(:msi)
expect(resource.installer_type).to eql(:msi)
diff --git a/spec/unit/resource/windows_service_spec.rb b/spec/unit/resource/windows_service_spec.rb
index fd7bedec9f..45a295c24e 100644
--- a/spec/unit/resource/windows_service_spec.rb
+++ b/spec/unit/resource/windows_service_spec.rb
@@ -18,7 +18,14 @@
require 'spec_helper'
-describe Chef::Resource::WindowsService, "initialize", :windows_only do
+describe Chef::Resource::WindowsService, "initialize" do
+ static_provider_resolution(
+ resource: Chef::Resource::WindowsService,
+ provider: Chef::Provider::Service::Windows,
+ os: "windows",
+ name: :windows_service,
+ action: :start
+ )
let(:resource) { Chef::Resource::WindowsService.new("BITS") }
@@ -30,10 +37,6 @@ describe Chef::Resource::WindowsService, "initialize", :windows_only do
expect(resource.resource_name).to eql(:windows_service)
end
- it "sets the provider to Chef::Provider::Service::Windows" do
- expect(resource.provider).to eql(Chef::Provider::Service::Windows)
- end
-
it "supports setting startup_type" do
resource.startup_type(:manual)
expect(resource.startup_type).to eql(:manual)