rspec-puppet 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,53 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RSpec::Puppet
4
- if defined?(::Puppet::Pops::Types::PSensitiveType::Sensitive)
5
- # A wrapper representing Sensitive data type, eg. in class params.
6
- class Sensitive < ::Puppet::Pops::Types::PSensitiveType::Sensitive
7
- # Create a new Sensitive object
8
- # @param [Object] value to wrap
9
- def initialize(value)
10
- @value = value
11
- end
4
+ # A wrapper representing Sensitive data type, eg. in class params.
5
+ class Sensitive < ::Puppet::Pops::Types::PSensitiveType::Sensitive
6
+ # Create a new Sensitive object
7
+ # @param [Object] value to wrap
8
+ def initialize(value)
9
+ @value = value
10
+ end
12
11
 
13
- # @return the wrapped value
14
- def unwrap
15
- @value
16
- end
12
+ # @return the wrapped value
13
+ def unwrap
14
+ @value
15
+ end
17
16
 
18
- # @return true
19
- def sensitive?
20
- true
21
- end
17
+ # @return true
18
+ def sensitive?
19
+ true
20
+ end
22
21
 
23
- # @return inspect of the wrapped value, inside Sensitive()
24
- def inspect
25
- "Sensitive(#{@value.inspect})"
26
- end
22
+ # @return inspect of the wrapped value, inside Sensitive()
23
+ def inspect
24
+ "Sensitive(#{@value.inspect})"
25
+ end
27
26
 
28
- # Check for equality with another value.
29
- # If compared to Puppet Sensitive type, it compares the wrapped values.
27
+ # Check for equality with another value.
28
+ # If compared to Puppet Sensitive type, it compares the wrapped values.
30
29
 
31
- # @param other [#unwrap, Object] value to compare to
32
- def ==(other)
33
- if other.respond_to? :unwrap
34
- if unwrap.is_a?(Regexp)
35
- unwrap =~ other.unwrap
36
- else
37
- unwrap == other.unwrap
38
- end
30
+ # @param other [#unwrap, Object] value to compare to
31
+ def ==(other)
32
+ if other.respond_to? :unwrap
33
+ if unwrap.is_a?(Regexp)
34
+ unwrap =~ other.unwrap
39
35
  else
40
- super
36
+ unwrap == other.unwrap
41
37
  end
38
+ else
39
+ super
42
40
  end
43
41
  end
44
- else
45
- # :nocov:
46
- class Sensitive
47
- def initialize(_value)
48
- raise 'The use of the Sensitive data type is not supported by this Puppet version'
49
- end
50
- end
51
- # :nocov:
52
42
  end
53
43
  end
@@ -91,14 +91,8 @@ module RSpec::Puppet
91
91
  end
92
92
 
93
93
  def self.get_module_name_from_file(file)
94
- # FIXME: see discussion at
95
- # https://github.com/rodjek/rspec-puppet/issues/290
96
- if Puppet.version.to_f >= 4.0 || RSpec.configuration.parser == 'future'
97
- require 'puppet/pops'
98
- p = Puppet::Pops::Parser::Lexer2.new
99
- else
100
- p = Puppet::Parser::Lexer.new
101
- end
94
+ require 'puppet/pops'
95
+ p = Puppet::Pops::Parser::Lexer2.new
102
96
  module_name = nil
103
97
  p.string = File.read(file)
104
98
  tokens = p.fullscan
@@ -2,11 +2,8 @@
2
2
 
3
3
  require 'rspec-puppet'
4
4
 
5
- fixture_path = File.join(File.dirname(File.expand_path(__FILE__)), 'fixtures')
6
-
7
5
  RSpec.configure do |c|
8
6
  c.module_path = File.join(fixture_path, 'modules')
9
- c.manifest_dir = File.join(fixture_path, 'manifests')
10
7
  c.manifest = File.join(fixture_path, 'manifests', 'site.pp')
11
8
  c.environmentpath = File.join(Dir.pwd, 'spec')
12
9
  end
@@ -21,11 +21,7 @@ module RSpec::Puppet
21
21
  end
22
22
 
23
23
  def build_code(type, manifest_opts)
24
- if (Puppet.version.to_f >= 4.0) || (Puppet[:parser] == 'future')
25
- [site_pp_str, pre_cond, test_manifest(type, manifest_opts), post_cond].compact.join("\n")
26
- else
27
- [import_str, pre_cond, test_manifest(type, manifest_opts), post_cond].compact.join("\n")
28
- end
24
+ [site_pp_str, pre_cond, test_manifest(type, manifest_opts), post_cond].compact.join("\n")
29
25
  end
30
26
 
31
27
  def guess_type_from_path(path)
@@ -44,8 +40,6 @@ module RSpec::Puppet
44
40
  :type_alias
45
41
  when %r{spec/provider}
46
42
  :provider
47
- when %r{spec/applications}
48
- :application
49
43
  else
50
44
  :unknown
51
45
  end
@@ -90,7 +84,6 @@ module RSpec::Puppet
90
84
  hiera_data_value = respond_to?(:hiera_data) ? hiera_data : nil
91
85
 
92
86
  rspec_config_values = %i[
93
- trusted_server_facts
94
87
  disable_module_hiera
95
88
  use_fixture_spec_hiera
96
89
  fixture_hiera_configs
@@ -128,30 +121,6 @@ module RSpec::Puppet
128
121
  end
129
122
  end
130
123
 
131
- def import_str
132
- import_str = ''
133
- adapter.modulepath.each do |d|
134
- if File.exist?(File.join(d, 'manifests', 'init.pp'))
135
- path_to_manifest = File.join([
136
- d,
137
- 'manifests',
138
- class_name.split('::')[1..]
139
- ].flatten)
140
- import_str = [
141
- "import '#{d}/manifests/init.pp'",
142
- "import '#{path_to_manifest}.pp'",
143
- ''
144
- ].join("\n")
145
- break
146
- elsif File.exist?(d)
147
- import_str = "import '#{adapter.manifest}'\n"
148
- break
149
- end
150
- end
151
-
152
- import_str
153
- end
154
-
155
124
  def site_pp_str
156
125
  return '' unless (path = adapter.manifest)
157
126
 
@@ -177,11 +146,6 @@ module RSpec::Puppet
177
146
  else
178
147
  "class { '#{class_name}': #{param_str(opts[:params])} }"
179
148
  end
180
- when :application
181
- raise ArgumentError, 'You need to provide params for an application' unless opts.key?(:params)
182
-
183
- "site { #{class_name} { #{sanitise_resource_title(title)}: #{param_str(opts[:params])} } }"
184
-
185
149
  when :define
186
150
  title_str = if title.is_a?(Array)
187
151
  '[' + title.map { |r| sanitise_resource_title(r) }.join(', ') + ']'
@@ -207,7 +171,7 @@ module RSpec::Puppet
207
171
  def nodename(type)
208
172
  return node if respond_to?(:node)
209
173
 
210
- if %i[class define function application].include? type
174
+ if %i[class define function].include? type
211
175
  Puppet[:certname]
212
176
  else
213
177
  class_name
@@ -248,10 +212,18 @@ module RSpec::Puppet
248
212
  'hostname' => node.split('.').first,
249
213
  'fqdn' => node,
250
214
  'domain' => node.split('.', 2).last,
251
- 'clientcert' => node,
252
- 'ipaddress6' => 'FE80:0000:0000:0000:AAAA:AAAA:AAAA'
215
+ 'clientcert' => node
253
216
  }
254
217
 
218
+ # Puppet 6.9.0 started setting a `serverip6` server fact which is set
219
+ # using the value of the `ipaddress6` fact. If the fact set(s) provided
220
+ # by FacterDB don't have an `ipaddress6` fact set, then the normal Facter
221
+ # fact will be resolved, which can result in Ruby trying to load Windows
222
+ # only gems on Linux. This is only a problem if facter is used.
223
+ if RSpec.configuration.facter_implementation.to_sym == :facter
224
+ node_facts['ipaddress6'] = 'FE80:0000:0000:0000:AAAA:AAAA:AAAA'
225
+ end
226
+
255
227
  networking_facts = {
256
228
  'hostname' => node_facts['hostname'],
257
229
  'fqdn' => node_facts['fqdn'],
@@ -301,8 +273,6 @@ module RSpec::Puppet
301
273
  end
302
274
 
303
275
  def trusted_facts_hash(_node_name)
304
- return {} unless Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0
305
-
306
276
  extensions = {}
307
277
 
308
278
  if RSpec.configuration.default_trusted_facts.any?
@@ -314,8 +284,6 @@ module RSpec::Puppet
314
284
  end
315
285
 
316
286
  def trusted_external_data_hash
317
- return {} unless Puppet::Util::Package.versioncmp(Puppet.version, '6.14.0') >= 0
318
-
319
287
  external_data = {}
320
288
 
321
289
  if RSpec.configuration.default_trusted_external_data.any?
@@ -335,7 +303,7 @@ module RSpec::Puppet
335
303
  # And then add the server name and IP
336
304
  { 'servername' => 'fqdn',
337
305
  'serverip' => 'ipaddress' }.each do |var, fact|
338
- if (value = FacterImpl.value(fact))
306
+ if (value = Puppet.runtime[:facter].value(fact))
339
307
  server_facts[var] = value
340
308
  else
341
309
  warn "Could not retrieve fact #{fact}"
@@ -343,8 +311,8 @@ module RSpec::Puppet
343
311
  end
344
312
 
345
313
  if server_facts['servername'].nil?
346
- host = FacterImpl.value(:hostname)
347
- server_facts['servername'] = if (domain = FacterImpl.value(:domain))
314
+ host = Puppet.runtime[:facter].value(:hostname)
315
+ server_facts['servername'] = if (domain = Puppet.runtime[:facter].value(:domain))
348
316
  [host, domain].join('.')
349
317
  else
350
318
  host
@@ -388,11 +356,6 @@ module RSpec::Puppet
388
356
  vardir = Dir.mktmpdir
389
357
  Puppet[:vardir] = vardir
390
358
 
391
- # Enable app_management by default for Puppet versions that support it
392
- if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0 && Puppet.version.to_i < 5
393
- Puppet[:app_management] = !ENV.include?('PUPPET_NOAPP_MANAGMENT')
394
- end
395
-
396
359
  adapter.modulepath.map do |d|
397
360
  Dir["#{d}/*/lib"].entries
398
361
  end.flatten.each do |lib|
@@ -404,7 +367,7 @@ module RSpec::Puppet
404
367
 
405
368
  def with_vardir
406
369
  vardir = setup_puppet
407
- return yield(vardir) if block_given?
370
+ yield(vardir) if block_given?
408
371
  ensure
409
372
  FileUtils.rm_rf(vardir) if vardir && File.directory?(vardir)
410
373
  end
@@ -456,25 +419,23 @@ module RSpec::Puppet
456
419
  node_obj = Puppet::Node.new(nodename, { parameters: node_params, facts: node_facts })
457
420
 
458
421
  trusted_info = ['remote', nodename, trusted_facts_val]
459
- trusted_info.push(trusted_external_data) if Puppet::Util::Package.versioncmp(Puppet.version, '6.14.0') >= 0
460
- if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0
461
- Puppet.push_context(
462
- {
463
- trusted_information: Puppet::Context::TrustedInformation.new(*trusted_info)
464
- },
465
- 'Context for spec trusted hash'
466
- )
422
+ trusted_info.push(trusted_external_data)
423
+ Puppet.push_context(
424
+ {
425
+ trusted_information: Puppet::Context::TrustedInformation.new(*trusted_info)
426
+ },
427
+ 'Context for spec trusted hash'
428
+ )
467
429
 
468
- node_obj.add_server_facts(server_facts_hash) if RSpec.configuration.trusted_server_facts
469
- end
430
+ node_obj.add_server_facts(server_facts_hash)
470
431
 
471
432
  adapter.catalog(node_obj, exported)
472
433
  end
473
434
 
474
435
  def stub_facts!(facts)
475
436
  Puppet.settings[:autosign] = false if Puppet.settings.include? :autosign
476
- FacterImpl.clear
477
- facts.each { |k, v| FacterImpl.add(k, weight: 999) { setcode { v } } }
437
+ Puppet.runtime[:facter].clear
438
+ facts.each { |k, v| Puppet.runtime[:facter].add(k, weight: 999) { setcode { v } } }
478
439
  end
479
440
 
480
441
  def build_catalog(*args)
@@ -504,15 +465,7 @@ module RSpec::Puppet
504
465
  end
505
466
 
506
467
  def escape_special_chars(string)
507
- string.gsub(/\$/, '\\$')
508
- end
509
-
510
- def rspec_compatibility
511
- return unless RSpec::Version::STRING < '3'
512
-
513
- # RSpec 2 compatibility:
514
- alias_method :failure_message_for_should, :failure_message
515
- alias_method :failure_message_for_should_not, :failure_message_when_negated
468
+ string.gsub('$', '\\$')
516
469
  end
517
470
 
518
471
  def fixture_spec_hiera_conf(mod)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RSpecPuppet
4
- VERSION = '3.0.0'
4
+ VERSION = '4.0.0'
5
5
  end
data/lib/rspec-puppet.rb CHANGED
@@ -36,9 +36,7 @@ require 'rspec-puppet/monkey_patches'
36
36
  RSpec.configure do |c|
37
37
  c.add_setting :environmentpath, default: Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
38
38
  c.add_setting :module_path, default: nil
39
- c.add_setting :manifest_dir, default: nil
40
39
  c.add_setting :manifest, default: nil
41
- c.add_setting :template_dir, default: nil
42
40
  c.add_setting :config, default: nil
43
41
  c.add_setting :confdir, default: Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
44
42
  c.add_setting :default_facts, default: {}
@@ -47,9 +45,6 @@ RSpec.configure do |c|
47
45
  c.add_setting :default_trusted_external_data, default: {}
48
46
  c.add_setting :facter_implementation, default: :facter
49
47
  c.add_setting :hiera_config, default: Puppet::Util::Platform.actually_windows? ? 'c:/nul/' : '/dev/null'
50
- c.add_setting :parser, default: 'current'
51
- c.add_setting :trusted_node_data, default: false
52
- c.add_setting :ordering, default: 'title-hash'
53
48
  c.add_setting :stringify_facts, default: true
54
49
  c.add_setting :strict_variables, default: false
55
50
  c.add_setting :setup_fixtures, default: true
@@ -63,17 +58,6 @@ RSpec.configure do |c|
63
58
  c.add_setting :use_fixture_spec_hiera, default: false
64
59
  c.add_setting :fallback_to_default_hiera, default: true
65
60
 
66
- c.instance_eval do
67
- def trusted_server_facts
68
- @trusted_server_facts.nil? ? false : @trusted_server_facts
69
- end
70
-
71
- def trusted_server_facts=(value)
72
- @trusted_server_facts = value
73
- adapter&.setup_puppet(RSpec::Puppet.current_example)
74
- end
75
- end
76
-
77
61
  c.before(:all) do
78
62
  RSpec::Puppet::Setup.safe_setup_directories(nil, false) if RSpec.configuration.setup_fixtures?
79
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Sharpe
@@ -10,23 +10,26 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-04-25 00:00:00.000000000 Z
13
+ date: 2023-10-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ">="
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ">="
26
+ - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '0'
29
- description: RSpec tests for your Puppet manifests
28
+ version: '3.0'
29
+ description: |2
30
+ RSpec tests for your Puppet manifests.
31
+ Note: Support for this gem has been moved under a new namespace and as such any future updates from
32
+ the Puppet team will be released as `puppetlabs-rspec-puppet`.
30
33
  email:
31
34
  - tim@sharpe.id.au
32
35
  - modules-team@puppet.com
@@ -45,7 +48,6 @@ files:
45
48
  - lib/rspec-puppet/coverage.rb
46
49
  - lib/rspec-puppet/errors.rb
47
50
  - lib/rspec-puppet/example.rb
48
- - lib/rspec-puppet/example/application_example_group.rb
49
51
  - lib/rspec-puppet/example/class_example_group.rb
50
52
  - lib/rspec-puppet/example/define_example_group.rb
51
53
  - lib/rspec-puppet/example/function_example_group.rb
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RSpec::Puppet
4
- # This module provides support for the application type
5
- module ApplicationExampleGroup
6
- include RSpec::Puppet::ManifestMatchers
7
- include RSpec::Puppet::Support
8
-
9
- def catalogue
10
- @catalogue ||= load_catalogue(:application)
11
- end
12
-
13
- def exported_resources
14
- -> { load_catalogue(:application, true) }
15
- end
16
-
17
- def rspec_puppet_cleanup
18
- @catalogue = nil
19
- end
20
- end
21
- end