Skip to content

Commit 3cdca1b

Browse files
authored
Merge pull request #112 from puppetlabs/CAT-2398-Puppetcore_update
(CAT-2398) Puppetcore update
2 parents a407fd8 + b8848d2 commit 3cdca1b

File tree

10 files changed

+135
-96
lines changed

10 files changed

+135
-96
lines changed

.fixtures.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
fixtures:
22
repositories:
33
facts: 'https://github.com/puppetlabs/puppetlabs-facts.git'
4-
puppet_agent:
5-
repo: 'https://github.com/puppetlabs/puppetlabs-puppet_agent.git'
6-
ref: v4.13.0
7-
stdlib: https://github.com/puppetlabs/puppetlabs-stdlib.git
8-
registry: https://github.com/puppetlabs/puppetlabs-registry.git
4+
puppet_agent: 'https://github.com/puppetlabs/puppetlabs-puppet_agent.git'
5+
stdlib: 'https://github.com/puppetlabs/puppetlabs-stdlib.git'
6+
registry: 'https://github.com/puppetlabs/puppetlabs-registry.git'
97
provision: 'https://github.com/puppetlabs/provision.git'

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ jobs:
1414
Acceptance:
1515
needs: Spec
1616
uses: "puppetlabs/cat-github-actions/.github/workflows/module_acceptance.yml@main"
17+
with:
18+
flags: "--latest-agent"
1719
secrets: "inherit"

.github/workflows/nightly.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ jobs:
1313
Acceptance:
1414
needs: Spec
1515
uses: "puppetlabs/cat-github-actions/.github/workflows/module_acceptance.yml@main"
16+
with:
17+
flags: "--latest-agent"
1618
secrets: "inherit"

.puppet-lint.rc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1+
--fail-on-warnings
12
--relative
3+
--no-80chars-check
4+
--no-140chars-check
5+
--no-class_inherits_from_params_class-check
6+
--no-autoloader_layout-check
7+
--no-documentation-check
8+
--no-single_quote_string_with_variables-check
9+
--ignore-paths=.vendor/**/*.pp,.bundle/**/*.pp,pkg/**/*.pp,spec/**/*.pp,tests/**/*.pp,types/**/*.pp,vendor/**/*.pp

.rubocop.yml

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
---
2-
require:
2+
plugins:
33
- rubocop-performance
44
- rubocop-rspec
5+
- rubocop-rspec_rails
6+
- rubocop-factory_bot
7+
- rubocop-capybara
58
AllCops:
69
NewCops: enable
710
DisplayCopNames: true
8-
TargetRubyVersion: '2.6'
11+
TargetRubyVersion: 3.1
912
Include:
1013
- "**/*.rb"
1114
Exclude:
@@ -20,6 +23,9 @@ AllCops:
2023
- "**/Vagrantfile"
2124
- "**/Guardfile"
2225
inherit_from: ".rubocop_todo.yml"
26+
inherit_mode:
27+
merge:
28+
- Exclude
2329
Layout/LineLength:
2430
Description: People have wide screens, use them.
2531
Max: 200
@@ -79,7 +85,6 @@ Style/Documentation:
7985
Exclude:
8086
- lib/puppet/parser/functions/**/*
8187
- spec/**/*
82-
- lib/puppet/provider/windows_env/windows_env.rb
8388
Style/WordArray:
8489
EnforcedStyle: brackets
8590
Performance/AncestorsInclude:
@@ -122,6 +127,12 @@ Capybara/CurrentPathExpectation:
122127
Enabled: false
123128
Capybara/VisibilityMatcher:
124129
Enabled: false
130+
FactoryBot/AttributeDefinedStatically:
131+
Enabled: false
132+
FactoryBot/CreateList:
133+
Enabled: false
134+
FactoryBot/FactoryClassName:
135+
Enabled: false
125136
Gemspec/DuplicatedAssignment:
126137
Enabled: false
127138
Gemspec/OrderedDependencies:
@@ -296,8 +307,6 @@ Performance/UriDefaultParser:
296307
Enabled: false
297308
RSpec/Be:
298309
Enabled: false
299-
RSpec/Capybara/FeatureMethods:
300-
Enabled: false
301310
RSpec/ContainExactly:
302311
Enabled: false
303312
RSpec/ContextMethod:
@@ -306,6 +315,8 @@ RSpec/ContextWording:
306315
Enabled: false
307316
RSpec/DescribeClass:
308317
Enabled: false
318+
RSpec/Dialect:
319+
Enabled: false
309320
RSpec/EmptyHook:
310321
Enabled: false
311322
RSpec/EmptyLineAfterExample:
@@ -322,12 +333,6 @@ RSpec/ExpectChange:
322333
Enabled: false
323334
RSpec/ExpectInHook:
324335
Enabled: false
325-
RSpec/FactoryBot/AttributeDefinedStatically:
326-
Enabled: false
327-
RSpec/FactoryBot/CreateList:
328-
Enabled: false
329-
RSpec/FactoryBot/FactoryClassName:
330-
Enabled: false
331336
RSpec/HooksBeforeExamples:
332337
Enabled: false
333338
RSpec/ImplicitBlockExpectation:
@@ -502,6 +507,12 @@ Capybara/SpecificFinders:
502507
Enabled: false
503508
Capybara/SpecificMatcher:
504509
Enabled: false
510+
FactoryBot/ConsistentParenthesesStyle:
511+
Enabled: false
512+
FactoryBot/FactoryNameStyle:
513+
Enabled: false
514+
FactoryBot/SyntaxMethods:
515+
Enabled: false
505516
Gemspec/DeprecatedAttributeAssignment:
506517
Enabled: false
507518
Gemspec/DevelopmentDependencies:
@@ -602,28 +613,12 @@ RSpec/DuplicatedMetadata:
602613
Enabled: false
603614
RSpec/ExcessiveDocstringSpacing:
604615
Enabled: false
605-
RSpec/FactoryBot/ConsistentParenthesesStyle:
606-
Enabled: false
607-
RSpec/FactoryBot/FactoryNameStyle:
608-
Enabled: false
609-
RSpec/FactoryBot/SyntaxMethods:
610-
Enabled: false
611616
RSpec/IdenticalEqualityAssertion:
612617
Enabled: false
613618
RSpec/NoExpectationExample:
614619
Enabled: false
615620
RSpec/PendingWithoutReason:
616621
Enabled: false
617-
RSpec/Rails/AvoidSetupHook:
618-
Enabled: false
619-
RSpec/Rails/HaveHttpStatus:
620-
Enabled: false
621-
RSpec/Rails/InferredSpecType:
622-
Enabled: false
623-
RSpec/Rails/MinitestAssertions:
624-
Enabled: false
625-
RSpec/Rails/TravelAround:
626-
Enabled: false
627622
RSpec/RedundantAround:
628623
Enabled: false
629624
RSpec/SkipBlockInsideExample:
@@ -634,6 +629,16 @@ RSpec/SubjectDeclaration:
634629
Enabled: false
635630
RSpec/VerifiedDoubleReference:
636631
Enabled: false
632+
RSpecRails/AvoidSetupHook:
633+
Enabled: false
634+
RSpecRails/HaveHttpStatus:
635+
Enabled: false
636+
RSpecRails/InferredSpecType:
637+
Enabled: false
638+
RSpecRails/MinitestAssertions:
639+
Enabled: false
640+
RSpecRails/TravelAround:
641+
Enabled: false
637642
Security/CompoundHash:
638643
Enabled: false
639644
Security/IoMethods:

.rubocop_todo.yml

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
# This configuration was generated by
22
# `rubocop --auto-gen-config`
3-
# on 2023-12-21 10:51:41 UTC using RuboCop version 1.48.1.
3+
# on 2025-11-12 08:55:00 UTC using RuboCop version 1.73.2.
44
# The point is for the user to remove these configuration records
55
# one by one as the offenses are removed from the code base.
66
# Note that changes in the inspected code, or installation of new
77
# versions of RuboCop, may require this file to be generated again.
88

9-
# Offense count: 1
10-
# This cop supports safe autocorrection (--autocorrect).
11-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
12-
# URISchemes: http, https
13-
Layout/LineLength:
14-
Max: 301
15-
169
# Offense count: 2
1710
# This cop supports unsafe autocorrection (--autocorrect-all).
1811
# Configuration parameters: EnforcedStyle.
@@ -21,6 +14,14 @@ Style/ClassAndModuleChildren:
2114
Exclude:
2215
- 'lib/puppet/provider/windows_env/windows_env.rb'
2316

17+
# Offense count: 2
18+
# Configuration parameters: AllowedConstants.
19+
Style/Documentation:
20+
Exclude:
21+
- 'lib/puppet/parser/functions/**/*'
22+
- 'spec/**/*'
23+
- 'lib/puppet/provider/windows_env/windows_env.rb'
24+
2425
# Offense count: 2
2526
# This cop supports safe autocorrection (--autocorrect).
2627
# Configuration parameters: EnforcedStyle, AllowInnerSlashes.
@@ -29,13 +30,6 @@ Style/RegexpLiteral:
2930
Exclude:
3031
- 'lib/puppet/type/windows_env.rb'
3132

32-
# Offense count: 8
33-
# This cop supports safe autocorrection (--autocorrect).
34-
# Configuration parameters: MinSize.
35-
# SupportedStyles: percent, brackets
36-
Style/SymbolArray:
37-
EnforcedStyle: percent
38-
3933
# Offense count: 1
4034
# This cop supports safe autocorrection (--autocorrect).
4135
# Configuration parameters: EnforcedStyle, AllowSafeAssignment.
@@ -44,17 +38,10 @@ Style/TernaryParentheses:
4438
Exclude:
4539
- 'lib/puppet/provider/windows_env/windows_env.rb'
4640

47-
# Offense count: 1
41+
# Offense count: 2
4842
# This cop supports safe autocorrection (--autocorrect).
4943
# Configuration parameters: EnforcedStyleForMultiline.
50-
# SupportedStylesForMultiline: comma, consistent_comma, no_comma
44+
# SupportedStylesForMultiline: comma, consistent_comma, diff_comma, no_comma
5145
Style/TrailingCommaInArrayLiteral:
5246
Exclude:
5347
- 'spec/unit/puppet/type/windows_env_type_spec.rb'
54-
55-
# Offense count: 1
56-
# This cop supports safe autocorrection (--autocorrect).
57-
# Configuration parameters: MinSize, WordRegex.
58-
# SupportedStyles: percent, brackets
59-
Style/WordArray:
60-
EnforcedStyle: percent

Gemfile

Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,106 @@
1-
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
1+
# frozen_string_literal: true
22

3-
def location_for(place_or_version, fake_version = nil)
4-
git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
5-
file_url_regex = %r{\Afile:\/\/(?<path>.*)}
3+
# For puppetcore, set GEM_SOURCE_PUPPETCORE = 'https://rubygems-puppetcore.puppet.com'
4+
gemsource_default = ENV['GEM_SOURCE'] || 'https://rubygems.org'
5+
gemsource_puppetcore = if ENV['PUPPET_FORGE_TOKEN']
6+
'https://rubygems-puppetcore.puppet.com'
7+
else
8+
ENV['GEM_SOURCE_PUPPETCORE'] || gemsource_default
9+
end
10+
source gemsource_default
11+
12+
def location_for(place_or_constraint, fake_constraint = nil, opts = {})
13+
git_url_regex = /\A(?<url>(?:https?|git)[:@][^#]*)(?:#(?<branch>.*))?/
14+
file_url_regex = %r{\Afile://(?<path>.*)}
15+
16+
if place_or_constraint && (git_url = place_or_constraint.match(git_url_regex))
17+
# Git source → ignore :source, keep fake_constraint
18+
[fake_constraint, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
19+
20+
elsif place_or_constraint && (file_url = place_or_constraint.match(file_url_regex))
21+
# File source → ignore :source, keep fake_constraint or default >= 0
22+
[fake_constraint || '>= 0', { path: File.expand_path(file_url[:path]), require: false }]
623

7-
if place_or_version && (git_url = place_or_version.match(git_url_regex))
8-
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
9-
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
10-
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
1124
else
12-
[place_or_version, { require: false }]
25+
# Plain version constraint → merge opts (including :source if provided)
26+
[place_or_constraint, { require: false }.merge(opts)]
27+
end
28+
end
29+
30+
# Print debug information if DEBUG_GEMS or VERBOSE is set
31+
def print_gem_statement_for(gems)
32+
puts 'DEBUG: Gem definitions that will be generated:'
33+
gems.each do |gem_name, gem_params|
34+
puts "DEBUG: gem #{([gem_name.inspect] + gem_params.map(&:inspect)).join(', ')}"
1335
end
1436
end
1537

1638
group :development do
17-
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
18-
gem "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
19-
gem "json", '= 2.5.1', require: false if Gem::Requirement.create(['>= 3.0.0', '< 3.0.5']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2039
gem "json", '= 2.6.1', require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2140
gem "json", '= 2.6.3', require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2241
gem "racc", '~> 1.4.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2342
gem "deep_merge", '~> 1.2.2', require: false
2443
gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false
25-
gem "facterdb", '~> 2.1', require: false
44+
gem "facterdb", '~> 2.1', require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
45+
gem "facterdb", '~> 3.0', require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2646
gem "metadata-json-lint", '~> 4.0', require: false
27-
gem "rspec-puppet-facts", '~> 4.0', require: false
47+
gem "json-schema", '< 5.1.1', require: false
48+
gem "rspec-puppet-facts", '~> 4.0', require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
49+
gem "rspec-puppet-facts", '~> 5.0', require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
2850
gem "dependency_checker", '~> 1.0.0', require: false
2951
gem "parallel_tests", '= 3.12.1', require: false
3052
gem "pry", '~> 0.10', require: false
3153
gem "simplecov-console", '~> 0.9', require: false
32-
gem "puppet-debugger", '~> 1.0', require: false
33-
gem "rubocop", '~> 1.50.0', require: false
34-
gem "rubocop-performance", '= 1.16.0', require: false
35-
gem "rubocop-rspec", '= 2.19.0', require: false
54+
gem "puppet-debugger", '~> 1.6', require: false
55+
gem "rubocop", '~> 1.73.0', require: false
56+
gem "rubocop-performance", '~> 1.24.0', require: false
57+
gem "rubocop-rspec", '~> 3.5.0', require: false
58+
gem "rubocop-rspec_rails", '~> 2.31.0', require: false
59+
gem "rubocop-factory_bot", '~> 2.27.0', require: false
60+
gem "rubocop-capybara", '~> 2.22.0', require: false
3661
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
37-
gem "rexml", '>= 3.3.9', require: false
62+
gem "bigdecimal", '< 3.2.2', require: false, platforms: [:mswin, :mingw, :x64_mingw]
3863
end
3964
group :development, :release_prep do
4065
gem "puppet-strings", '~> 4.0', require: false
41-
gem "puppetlabs_spec_helper", '~> 7.0', require: false
66+
gem "puppetlabs_spec_helper", '~> 8.0', require: false
67+
gem "puppet-blacksmith", '~> 7.0', require: false
4268
end
4369
group :system_tests do
44-
gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw]
70+
gem "puppet_litmus", '~> 2.0', require: false, platforms: [:ruby, :x64_mingw] if !ENV['PUPPET_FORGE_TOKEN'].to_s.empty?
71+
gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw] if ENV['PUPPET_FORGE_TOKEN'].to_s.empty?
4572
gem "CFPropertyList", '< 3.0.7', require: false, platforms: [:mswin, :mingw, :x64_mingw]
4673
gem "serverspec", '~> 2.41', require: false
4774
end
4875

49-
puppet_version = ENV['PUPPET_GEM_VERSION']
50-
facter_version = ENV['FACTER_GEM_VERSION']
51-
hiera_version = ENV['HIERA_GEM_VERSION']
52-
5376
gems = {}
77+
bolt_version = ENV.fetch('BOLT_GEM_VERSION', nil)
78+
puppet_version = ENV.fetch('PUPPET_GEM_VERSION', nil)
79+
facter_version = ENV.fetch('FACTER_GEM_VERSION', nil)
80+
hiera_version = ENV.fetch('HIERA_GEM_VERSION', nil)
5481

55-
gems['puppet'] = location_for(puppet_version)
56-
57-
# If facter or hiera versions have been specified via the environment
58-
# variables
59-
60-
gems['facter'] = location_for(facter_version) if facter_version
61-
gems['hiera'] = location_for(hiera_version) if hiera_version
82+
gems['bolt'] = location_for(bolt_version, nil, { source: gemsource_puppetcore })
83+
gems['puppet'] = location_for(puppet_version, nil, { source: gemsource_puppetcore })
84+
gems['facter'] = location_for(facter_version, nil, { source: gemsource_puppetcore })
85+
gems['hiera'] = location_for(hiera_version, nil, {}) if hiera_version
6286

87+
# Generate the gem definitions
88+
print_gem_statement_for(gems) if ENV['DEBUG']
6389
gems.each do |gem_name, gem_params|
6490
gem gem_name, *gem_params
6591
end
6692

6793
# Evaluate Gemfile.local and ~/.gemfile if they exist
6894
extra_gemfiles = [
6995
"#{__FILE__}.local",
70-
File.join(Dir.home, '.gemfile'),
96+
File.join(Dir.home, '.gemfile')
7197
]
7298

7399
extra_gemfiles.each do |gemfile|
74-
if File.file?(gemfile) && File.readable?(gemfile)
75-
eval(File.read(gemfile), binding)
76-
end
100+
next unless File.file?(gemfile) && File.readable?(gemfile)
101+
102+
# rubocop:disable Security/Eval
103+
eval(File.read(gemfile), binding)
104+
# rubocop:enable Security/Eval
77105
end
78106
# vim: syntax=ruby

Rakefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,12 @@ require 'puppet-syntax/tasks/puppet-syntax'
77
require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings'
88

99
PuppetLint.configuration.send('disable_relative')
10+
PuppetLint.configuration.send('disable_80chars')
11+
PuppetLint.configuration.send('disable_140chars')
12+
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
13+
PuppetLint.configuration.send('disable_autoloader_layout')
14+
PuppetLint.configuration.send('disable_documentation')
15+
PuppetLint.configuration.send('disable_single_quote_string_with_variables')
16+
PuppetLint.configuration.fail_on_warnings = true
17+
PuppetLint.configuration.ignore_paths = [".vendor/**/*.pp", ".bundle/**/*.pp", "pkg/**/*.pp", "spec/**/*.pp", "tests/**/*.pp", "types/**/*.pp", "vendor/**/*.pp"]
18+

0 commit comments

Comments
 (0)