The host provider did not work on Windows because it didn't know where to find its hosts file. The provider now uses Win32::Resolv, which is part of the standard ruby library, to find it.
Several host type/provider spec tests were marked as fails_on_windows, but now that the provider is working, I removed the tag from those tests, and verified that the tests now pass. There are two tests in resources_spec that fail because the user and exec providers are not supported on Windows yet, so those tests are marked as fails_on_windows. Reviewed-by: Pieter van de Bruggen <pie...@puppetlabs.com> Signed-off-by: Josh Cooper <j...@puppetlabs.com> --- Local-branch: ticket/master/8644-host-provider lib/puppet/provider/host/parsed.rb | 3 +++ spec/unit/provider/host/parsed_spec.rb | 2 +- spec/unit/type/host_spec.rb | 2 +- spec/unit/type/resources_spec.rb | 6 +++--- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/puppet/provider/host/parsed.rb b/lib/puppet/provider/host/parsed.rb index 2ba01a4..1a2bdb4 100644 --- a/lib/puppet/provider/host/parsed.rb +++ b/lib/puppet/provider/host/parsed.rb @@ -3,6 +3,9 @@ require 'puppet/provider/parsedfile' hosts = nil case Facter.value(:operatingsystem) when "Solaris"; hosts = "/etc/inet/hosts" +when "windows" + require 'win32/resolv' + hosts = Win32::Resolv.get_hosts_path else hosts = "/etc/hosts" end diff --git a/spec/unit/provider/host/parsed_spec.rb b/spec/unit/provider/host/parsed_spec.rb index fa41d82..9cb5890 100755 --- a/spec/unit/provider/host/parsed_spec.rb +++ b/spec/unit/provider/host/parsed_spec.rb @@ -6,7 +6,7 @@ require 'puppet_spec/files' provider_class = Puppet::Type.type(:host).provider(:parsed) -describe provider_class, :fails_on_windows => true do +describe provider_class do include PuppetSpec::Files before do diff --git a/spec/unit/type/host_spec.rb b/spec/unit/type/host_spec.rb index 145fb27..602c428 100755 --- a/spec/unit/type/host_spec.rb +++ b/spec/unit/type/host_spec.rb @@ -34,7 +34,7 @@ describe host do end - describe "when validating values", :fails_on_windows => true do + describe "when validating values" do it "should support present as a value for ensure" do proc { @class.new(:name => "foo", :ensure => :present) }.should_not raise_error end diff --git a/spec/unit/type/resources_spec.rb b/spec/unit/type/resources_spec.rb index 5e9396b..f596968 100755 --- a/spec/unit/type/resources_spec.rb +++ b/spec/unit/type/resources_spec.rb @@ -21,7 +21,7 @@ describe resources do end end - describe "#generate", :fails_on_windows => true do + describe "#generate" do before do @host1 = Puppet::Type.type(:host).new(:name => 'localhost', :ip => '127.0.0.1') @catalog = Puppet::Resource::Catalog.new @@ -51,7 +51,7 @@ describe resources do @resources.generate.collect { |r| r.ref }.should_not include(@host1.ref) end - it "should not include the skipped users", :'fails_on_ruby_1.9.2' => true do + it "should not include the skipped users", :'fails_on_ruby_1.9.2' => true, :fails_on_windows => true do res = Puppet::Type.type(:resources).new :name => :user, :purge => true res.catalog = Puppet::Resource::Catalog.new @@ -72,7 +72,7 @@ describe resources do end end - describe "when the instance's do not have an ensure property" do + describe "when the instance's do not have an ensure property", :fails_on_windows => true do it "should not be included in the generated resources" do @no_ensure_resource = Puppet::Type.type(:exec).new(:name => '/usr/bin/env echo') Puppet::Type.type(:host).stubs(:instances).returns [@no_ensure_resource] -- 1.7.5.4 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to puppet-dev@googlegroups.com. To unsubscribe from this group, send email to puppet-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.