|
98 | 98 | end |
99 | 99 |
|
100 | 100 | context 'rich data' do |
| 101 | + let(:deferred_file) { tmpfile('deferred') } |
| 102 | + let(:deferred_manifest) do <<~END |
| 103 | + file { '#{deferred_file}': |
| 104 | + ensure => file, |
| 105 | + content => '123', |
| 106 | + } -> |
| 107 | + notify { 'deferred': |
| 108 | + message => Deferred('binary_file', ['#{deferred_file}']) |
| 109 | + } |
| 110 | + END |
| 111 | + end |
| 112 | + |
101 | 113 | it "calls a deferred 4x function" do |
102 | 114 | catalog_handler = -> (req, res) { |
103 | 115 | catalog = compile_to_catalog(<<-MANIFEST, node) |
|
142 | 154 | end |
143 | 155 | end |
144 | 156 |
|
| 157 | + it "fails to apply a deferred function with an unsatified prerequisite" do |
| 158 | + catalog_handler = -> (req, res) { |
| 159 | + catalog = compile_to_catalog(deferred_manifest, node) |
| 160 | + res.body = formatter.render(catalog) |
| 161 | + res['Content-Type'] = formatter.mime |
| 162 | + } |
| 163 | + |
| 164 | + server.start_server(mounts: {catalog: catalog_handler}) do |port| |
| 165 | + Puppet[:serverport] = port |
| 166 | + expect { |
| 167 | + agent.command_line.args << '--test' |
| 168 | + agent.run |
| 169 | + }.to exit_with(1) |
| 170 | + .and output(%r{Using environment}).to_stdout |
| 171 | + .and output(%r{The given file '#{deferred_file}' does not exist}).to_stderr |
| 172 | + end |
| 173 | + end |
| 174 | + |
| 175 | + it "applies a deferred function and its prerequisite in the same run" do |
| 176 | + Puppet[:preprocess_deferred] = false |
| 177 | + |
| 178 | + catalog_handler = -> (req, res) { |
| 179 | + catalog = compile_to_catalog(deferred_manifest, node) |
| 180 | + res.body = formatter.render(catalog) |
| 181 | + res['Content-Type'] = formatter.mime |
| 182 | + } |
| 183 | + |
| 184 | + server.start_server(mounts: {catalog: catalog_handler}) do |port| |
| 185 | + Puppet[:serverport] = port |
| 186 | + expect { |
| 187 | + agent.command_line.args << '--test' |
| 188 | + agent.run |
| 189 | + }.to exit_with(2) |
| 190 | + .and output(%r{defined 'message' as Binary\("MTIz"\)}).to_stdout |
| 191 | + end |
| 192 | + end |
| 193 | + |
145 | 194 | it "re-evaluates a deferred function in a cached catalog" do |
146 | 195 | Puppet[:report] = false |
147 | 196 | Puppet[:use_cached_catalog] = true |
|
0 commit comments