summaryrefslogtreecommitdiff
path: root/spec/acceptance/deprecation_spec.rb
blob: 7a0b34c467f0dcf7a3766865e9d7f889b50503c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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