Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / acceptance / deprecation_spec.rb
diff --git a/3rdparty/modules/stdlib/spec/acceptance/deprecation_spec.rb b/3rdparty/modules/stdlib/spec/acceptance/deprecation_spec.rb
new file mode 100644 (file)
index 0000000..7a0b34c
--- /dev/null
@@ -0,0 +1,102 @@
+#! /usr/bin/env ruby -S rspec
+require 'spec_helper_acceptance'
+
+describe 'deprecation function' do
+
+  if fact('operatingsystem') == 'windows'
+    test_file = 'C:/deprecation'
+    else
+    test_file = "/tmp/deprecation"
+  end
+
+  # It seems that Windows needs everything to be on one line when using puppet apply -e, otherwise the manifests would be in an easier format
+  add_file_manifest = "\"deprecation('key', 'message') file { '#{test_file}': ensure => present, content => 'test', }\""
+  remove_file_manifest = "file { '#{test_file}': ensure => absent }"
+
+  before :all do
+    apply_manifest(remove_file_manifest)
+  end
+
+  context 'with --strict=error', if: get_puppet_version =~ /^4/ do
+    before :all do
+      @result = on(default, puppet('apply', '--strict=error', '-e', add_file_manifest), acceptable_exit_codes: (0...256))
+    end
+
+    after :all do
+      apply_manifest(remove_file_manifest)
+    end
+
+    it "should return an error" do
+      expect(@result.exit_code).to eq(1)
+    end
+
+    it "should show the error message" do
+      expect(@result.stderr).to match(/deprecation. key. message/)
+    end
+
+    describe file("#{test_file}") do
+      it { is_expected.not_to be_file }
+    end
+  end
+
+  context 'with --strict=warning', if: get_puppet_version =~ /^4/ do
+    before :all do
+      @result = on(default, puppet('apply', '--strict=warning', '-e', add_file_manifest), acceptable_exit_codes: (0...256))
+    end
+
+    after :all do
+      apply_manifest(remove_file_manifest)
+    end
+
+    it "should not return an error" do
+      expect(@result.exit_code).to eq(0)
+    end
+
+    it "should show the error message" do
+      expect(@result.stderr).to match(/Warning: message/)
+    end
+
+    describe file("#{test_file}") do
+      it { is_expected.to be_file }
+    end
+  end
+
+  context 'with --strict=off', if: get_puppet_version =~ /^4/ do
+    before :all do
+      @result = on(default, puppet('apply', '--strict=off', '-e', add_file_manifest), acceptable_exit_codes: (0...256))
+    end
+
+    after :all do
+      apply_manifest(remove_file_manifest)
+    end
+
+    it "should not return an error" do
+      expect(@result.exit_code).to eq(0)
+    end
+
+    it "should not show the error message" do
+      expect(@result.stderr).not_to match(/Warning: message/)
+    end
+
+    describe file("#{test_file}") do
+      it { is_expected.to be_file }
+    end
+  end
+
+  context 'puppet 3 test', if: get_puppet_version =~ /^3/ do
+    before :all do
+      @result = on(default, puppet('apply', '--parser=future', '-e', add_file_manifest), acceptable_exit_codes: (0...256))
+    end
+    after :all do
+      apply_manifest(remove_file_manifest)
+    end
+
+    it "should return a deprecation error" do
+      expect(@result.stderr).to match(/Warning: message/)
+    end
+    it "should pass without error" do
+      expect(@result.exit_code).to eq(0)
+    end
+  end
+
+end