Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / spec_helper_acceptance.rb
index 3203ce9..4d85e7d 100755 (executable)
@@ -1,50 +1,55 @@
 #! /usr/bin/env ruby -S rspec
+require 'puppet'
 require 'beaker-rspec'
+require 'beaker/puppet_install_helper'
+require 'beaker/module_install_helper'
 
-UNSUPPORTED_PLATFORMS = []
+run_puppet_install_helper
+install_ca_certs unless ENV['PUPPET_INSTALL_TYPE'] =~ /pe/i
+install_module_on(hosts)
+install_module_dependencies_on(hosts)
 
-unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no'
-  foss_opts = {
-    :default_action => 'gem_install',
-    :version        => (ENV['PUPPET_VERSION'] ? ENV['PUPPET_VERSION'] : '3.7.2'),
-  }
+RSpec.configure do |c|
+  # Readable test descriptions
+  c.formatter = :documentation
+
+  # Configure all nodes in nodeset
+  c.before :suite do
+  end
+end
 
-  if default.is_pe?; then install_pe; else install_puppet( foss_opts ); end
+def get_puppet_version
+  (on default, puppet('--version')).output.chomp
+end
 
-  hosts.each do |host|
-    if host['platform'] !~ /windows/i
-      if host.is_pe?
-        on host, 'mkdir -p /etc/puppetlabs/facter/facts.d'
+RSpec.shared_context "with faked facts" do
+  let(:facts_d) do
+    puppet_version = get_puppet_version
+    if fact('osfamily') =~ /windows/i
+      if fact('kernelmajversion').to_f < 6.0
+        'C:/Documents and Settings/All Users/Application Data/PuppetLabs/facter/facts.d'
       else
-        on host, "/bin/touch #{host['puppetpath']}/hiera.yaml"
-        on host, "mkdir -p #{host['distmoduledir']}"
-        on host, 'mkdir -p /etc/facter/facts.d'
+        'C:/ProgramData/PuppetLabs/facter/facts.d'
       end
+    elsif Puppet::Util::Package.versioncmp(puppet_version, '4.0.0') < 0 and fact('is_pe', '--puppet') == "true"
+      '/etc/puppetlabs/facter/facts.d'
+    else
+      '/etc/facter/facts.d'
     end
   end
-end
 
-RSpec.configure do |c|
-  # Project root
-  proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
-
-  # Readable test descriptions
-  c.formatter = :documentation
-
-  # Configure all nodes in nodeset
-  c.before :suite do
-    if ENV['FUTURE_PARSER'] == 'true'
-      default[:default_apply_opts] ||= {}
-      default[:default_apply_opts].merge!({:parser => 'future'})
+  before :each do
+    #No need to create on windows, PE creates by default
+    if fact('osfamily') !~ /windows/i
+      shell("mkdir -p '#{facts_d}'")
     end
+  end
 
-    copy_root_module_to(default, :source => proj_root, :module_name => 'stdlib')
+  after :each do
+    shell("rm -f '#{facts_d}/fqdn.txt'", :acceptable_exit_codes => [0,1])
   end
-end
 
-def is_future_parser_enabled?
-  if default[:default_apply_opts]
-    return default[:default_apply_opts][:parser] == 'future'
+  def fake_fact(name, value)
+    shell("echo #{name}=#{value} > '#{facts_d}/#{name}.txt'")
   end
-  return false
 end