puppet_litmus 2.7.0 → 2.8.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae343528c6aa1a501ab3a74a35413af6fa597549117eabeb8187c34620ace77b
4
- data.tar.gz: '084246ae80f218ff9fee07e7dc207ffafca0d1c88e4d7bf43f4698857465098c'
3
+ metadata.gz: a42ef3d3e0ba9f5001c6d2c38ca780fc3d339c0ea42f421e366b6f382f26ba9f
4
+ data.tar.gz: 857f51a782da81d1f9739c20f254838e9434fa13c35e482980dbc26334585c5c
5
5
  SHA512:
6
- metadata.gz: b04fdf66b039df83064c3a2e658990269994a4916cba170b06b47bcf94c0ec45cc536fdc627aa7ca51b49ce6a394baa13a4c42e3ef568ed6175f6f5dc1181abe
7
- data.tar.gz: c130ece42862fbc1434971b153b8ff3e5e0a8a8a9c397dbe423ccf5b347c621c656d9c0e8544d704b95de4257ab0dc13db0fe5870da5e81b814a6f18ace93b5c
6
+ metadata.gz: 184d79c640c841d8438ec469a52b2c061f987f095f844a257823e035a039dfa9b8efe562ca0212e087bbe4b768c67b01de680cd7a18dee6473f93973f7de44b2
7
+ data.tar.gz: 95b07a6b131bfcccfc440137e82fb87ac2188baf1748c2aa3660d7b651f4309958c04e202fb7622643e9223db5f997d5c091022427b9f75449746a7626cd9a35
data/README.md CHANGED
@@ -68,6 +68,7 @@ in the project module root directory run `bundle exec matrix_from_metadata_v3`
68
68
  | --puppet-exclude | MAJOR | | Filter puppet major version |
69
69
  | --platform-include | REGEX | | Select platform |
70
70
  | --platform-exclude | REGEX | | Filter platform |
71
+ | --collection-platform-exclude | MAJOR:REGEX | | Filter a platform for one puppet major only, emitted as a GitHub Actions matrix exclude so the platform stays in other collections. Repeatable |
71
72
  | --arch-include | REGEX | | Select architecture |
72
73
  | --arch-exclude | REGEX | | Filter architecture |
73
74
  | --provision-prefer | NAME | docker | Prefer provisioner |
@@ -88,6 +89,10 @@ in the project module root directory run `bundle exec matrix_from_metadata_v3`
88
89
  ```sh
89
90
  matrix_from_metadata_v3 --platform-exclude redhat-7 --platform-exclude ubuntu-18.04
90
91
  ```
92
+ * Exclude a platform for one puppet major only (kept in other collections). E.g. ubuntu-20.04 has no Puppet 9 agent but is valid on Puppet 8:
93
+ ```sh
94
+ matrix_from_metadata_v3 --nightly --collection-platform-exclude 9:ubuntu-20.04
95
+ ```
91
96
  * Exclude architecture
92
97
  ```sh
93
98
  matrix_from_metadata_v3 --arch-exclude x86_64
data/exe/matrix.json CHANGED
@@ -41,7 +41,7 @@
41
41
  "15": { "x86_64": "sles-15" }
42
42
  },
43
43
  "Ubuntu": {
44
- "20.04": { "x86_64": "ubuntu-2004-lts" },
44
+ "20.04": { "x86_64": "ubuntu-os-pro-cloud/ubuntu-pro-2004-lts" },
45
45
  "22.04": { "x86_64": "ubuntu-2204-lts", "arm": "ubuntu-2204-lts-arm64" },
46
46
  "24.04": { "x86_64": "ubuntu-2404-lts", "arm": "ubuntu-2404-lts-arm64" }
47
47
  },
@@ -91,7 +91,8 @@
91
91
  "18.04": { "x86_64": "litmusimage/ubuntu:18.04" },
92
92
  "20.04": { "x86_64": "litmusimage/ubuntu:20.04" },
93
93
  "22.04": { "x86_64": "litmusimage/ubuntu:22.04" },
94
- "24.04": { "x86_64": "litmusimage/ubuntu:24.04" }
94
+ "24.04": { "x86_64": "litmusimage/ubuntu:24.04" },
95
+ "26.04": { "x86_64": "litmusimage/ubuntu:26.04" }
95
96
  }
96
97
  }
97
98
  },
@@ -66,7 +66,8 @@ DOCKER_PLATFORMS = {
66
66
  'Ubuntu-18.04' => 'litmusimage/ubuntu:18.04',
67
67
  'Ubuntu-20.04' => 'litmusimage/ubuntu:20.04',
68
68
  'Ubuntu-22.04' => 'litmusimage/ubuntu:22.04',
69
- 'Ubuntu-24.04' => 'litmusimage/ubuntu:24.04'
69
+ 'Ubuntu-24.04' => 'litmusimage/ubuntu:24.04',
70
+ 'Ubuntu-26.04' => 'litmusimage/ubuntu:26.04'
70
71
  }.freeze
71
72
 
72
73
  # This table uses the latest version in each collection for accurate
@@ -125,7 +126,7 @@ if ARGV.include?('--provision-service')
125
126
  'Debian-11' => 'debian-11',
126
127
  'Debian-12' => 'debian-12',
127
128
  'Debian-13' => 'debian-13',
128
- 'Ubuntu-20.04' => 'ubuntu-2004-lts',
129
+ 'Ubuntu-20.04' => 'ubuntu-os-pro-cloud/ubuntu-pro-2004-lts',
129
130
  'Ubuntu-22.04' => 'ubuntu-2204-lts',
130
131
  'Ubuntu-24.04' => 'ubuntu-2404-lts'
131
132
  }
@@ -86,6 +86,7 @@ options = OpenStruct.new(
86
86
  puppet_include: [],
87
87
  platform_exclude: [],
88
88
  platform_include: [],
89
+ collection_platform_exclude: [],
89
90
  arch_include: [],
90
91
  arch_exclude: [],
91
92
  provision_prefer: [],
@@ -155,6 +156,21 @@ begin
155
156
  opt.on('--platform-include REGEX', Regexp, 'Select platform') { |o| options.platform_include << o }
156
157
  opt.on('--platform-exclude REGEX', Regexp, 'Filter platform') { |o| options.platform_exclude << o }
157
158
 
159
+ opt.on('--collection-platform-exclude SPEC', String,
160
+ 'Filter a platform for one puppet major only, as MAJOR:PLATFORM_REGEX (e.g. 9:ubuntu-20.04). ' \
161
+ 'Emitted as a GitHub Actions matrix exclude so the platform stays in other collections. Repeatable.') do |o|
162
+ major, regex = o.split(':', 2)
163
+ raise OptionParser::InvalidArgument, "--collection-platform-exclude '#{o}' must be MAJOR:PLATFORM_REGEX" \
164
+ if regex.nil? || regex.empty? || major !~ /\A\d+\z/
165
+
166
+ begin
167
+ platform = Regexp.new(regex, Regexp::IGNORECASE)
168
+ rescue RegexpError => e
169
+ raise OptionParser::InvalidArgument, "--collection-platform-exclude '#{o}' has an invalid PLATFORM_REGEX: #{e.message}"
170
+ end
171
+ options.collection_platform_exclude << { major: major.to_i, platform: }
172
+ end
173
+
158
174
  opt.on('--arch-include REGEX', Regexp, 'Select architecture') { |o| options.arch_include << o }
159
175
  opt.on('--arch-exclude REGEX', Regexp, 'Filter architecture') { |o| options.arch_exclude << o }
160
176
 
@@ -370,6 +386,29 @@ options[:metadata]['operatingsystem_support'].each do |os_sup|
370
386
  end
371
387
  end
372
388
 
389
+ # Exclude specific platform x collection combinations (e.g. an OS a given puppet
390
+ # major ships no agent package for, such as ubuntu-20.04 on puppet 9). The platform
391
+ # and collection remain valid on their own, so this is emitted as a GitHub Actions
392
+ # matrix `exclude` that only drops the matching combinations.
393
+ unless options[:collection_platform_exclude].empty?
394
+ exclude = []
395
+ matrix[:collection].each do |coll|
396
+ coll_name = coll.is_a?(Hash) ? coll[:collection] : coll
397
+ major = coll_name.to_s[/\d+/]&.to_i
398
+ next if major.nil?
399
+
400
+ matrix[:platforms].each do |platform|
401
+ next unless options[:collection_platform_exclude].any? do |spec|
402
+ spec[:major] == major && platform[:label].match?(spec[:platform])
403
+ end
404
+
405
+ Action.notice("collection-platform-exclude filtered #{platform[:label]} x #{coll_name}")
406
+ exclude << { platforms: platform, collection: coll }
407
+ end
408
+ end
409
+ matrix[:exclude] = exclude unless exclude.empty?
410
+ end
411
+
373
412
  Action.group('matrix', matrix, pretty: true).group('spec_matrix', spec_matrix, pretty: true) if Action.type == 'github' && Action.notice
374
413
 
375
414
  Action.error('no supported puppet versions') if matrix[:collection].empty?
@@ -2,5 +2,5 @@
2
2
 
3
3
  # version of this gem
4
4
  module PuppetLitmus
5
- VERSION = '2.7.0'
5
+ VERSION = '2.8.1'
6
6
  end
@@ -40,7 +40,8 @@
40
40
  "operatingsystemrelease": [
41
41
  "14.04",
42
42
  "18.04",
43
- "22.04"
43
+ "22.04",
44
+ "26.04"
44
45
  ]
45
46
  }
46
47
  ],
@@ -32,7 +32,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
32
32
  '{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
33
33
  '{"label":"Ubuntu-18.04","provider":"docker","image":"litmusimage/ubuntu:18.04"},',
34
34
  '{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
35
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
35
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
36
+ '{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
36
37
  '],',
37
38
  '"collection":[',
38
39
  '"puppetcore8"',
@@ -43,7 +44,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
43
44
  expect(github_output_content).to include(
44
45
  'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
45
46
  )
46
- expect(result.stdout).to include("Created matrix with 11 cells:\n - Acceptance Test Cells: 10\n - Spec Test Cells: 1")
47
+ expect(result.stdout).to include("Created matrix with 12 cells:\n - Acceptance Test Cells: 11\n - Spec Test Cells: 1")
47
48
  end
48
49
  end
49
50
 
@@ -76,7 +77,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
76
77
  '{"label":"RedHat-9","provider":"provision_service","image":"rhel-9"},',
77
78
  '{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
78
79
  '{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
79
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
80
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
81
+ '{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
80
82
  '],',
81
83
  '"collection":[',
82
84
  '"puppetcore8"',
@@ -87,7 +89,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
87
89
  expect(github_output_content).to include(
88
90
  'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
89
91
  )
90
- expect(result.stdout).to include("Created matrix with 10 cells:\n - Acceptance Test Cells: 9\n - Spec Test Cells: 1")
92
+ expect(result.stdout).to include("Created matrix with 11 cells:\n - Acceptance Test Cells: 10\n - Spec Test Cells: 1")
91
93
  end
92
94
  end
93
95
 
@@ -117,7 +119,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
117
119
  '{"label":"RedHat-10","provider":"provision_service","image":"rhel-10"},',
118
120
  '{"label":"RedHat-10-arm","provider":"provision_service","image":"rhel-10-arm64"},',
119
121
  '{"label":"RedHat-9-arm","provider":"provision_service","image":"rhel-9-arm64"},',
120
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"}',
122
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","image":"ubuntu-2204-lts-arm64"},',
123
+ '{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
121
124
  '],',
122
125
  '"collection":[',
123
126
  '"puppetcore8"',
@@ -128,7 +131,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
128
131
  expect(github_output_content).to include(
129
132
  'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
130
133
  )
131
- expect(result.stdout).to include("Created matrix with 5 cells:\n - Acceptance Test Cells: 4\n - Spec Test Cells: 1")
134
+ expect(result.stdout).to include("Created matrix with 6 cells:\n - Acceptance Test Cells: 5\n - Spec Test Cells: 1")
132
135
  end
133
136
  end
134
137
 
@@ -156,7 +159,8 @@ RSpec.describe 'matrix_from_metadata_v2' do
156
159
  '{"label":"AmazonLinux-2","provider":"docker","image":"litmusimage/amazonlinux:2"},',
157
160
  '{"label":"AmazonLinux-2023","provider":"docker","image":"litmusimage/amazonlinux:2023"},',
158
161
  '{"label":"Ubuntu-18.04","provider":"docker","image":"litmusimage/ubuntu:18.04"},',
159
- '{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"}',
162
+ '{"label":"Ubuntu-22.04","provider":"docker","image":"litmusimage/ubuntu:22.04"},',
163
+ '{"label":"Ubuntu-26.04","provider":"docker","image":"litmusimage/ubuntu:26.04"}',
160
164
  '],',
161
165
  '"collection":[',
162
166
  '"puppetcore8"',
@@ -167,7 +171,7 @@ RSpec.describe 'matrix_from_metadata_v2' do
167
171
  expect(github_output_content).to include(
168
172
  'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2}]}'
169
173
  )
170
- expect(result.stdout).to include("Created matrix with 5 cells:\n - Acceptance Test Cells: 4\n - Spec Test Cells: 1")
174
+ expect(result.stdout).to include("Created matrix with 6 cells:\n - Acceptance Test Cells: 5\n - Spec Test Cells: 1")
171
175
  end
172
176
  end
173
177
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
+ require 'json'
4
5
 
5
6
  RSpec.describe 'matrix_from_metadata_v3' do
6
7
  let(:github_output) { Tempfile.new('github_output') }
@@ -27,7 +28,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
27
28
  '{"label":"AmazonLinux-2","provider":"docker","arch":"x86_64","image":"litmusimage/amazonlinux:2","runner":"ubuntu-22.04"},',
28
29
  '{"label":"AmazonLinux-2023","provider":"docker","arch":"x86_64","image":"litmusimage/amazonlinux:2023","runner":"ubuntu-22.04"},',
29
30
  '{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
30
- '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"}',
31
+ '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
32
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
31
33
  '],',
32
34
  '"collection":[',
33
35
  '"puppetcore8","puppetcore9"',
@@ -62,7 +64,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
62
64
  '{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
63
65
  '{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
64
66
  '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
65
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
67
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
68
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
66
69
  '],',
67
70
  '"collection":[',
68
71
  '"puppetcore8","puppetcore9"',
@@ -104,7 +107,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
104
107
  '{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
105
108
  '{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
106
109
  '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
107
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
110
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
111
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
108
112
  '],',
109
113
  '"collection":[',
110
114
  '"puppetcore8","puppetcore9"',
@@ -145,7 +149,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
145
149
  '{"label":"RedHat-10","provider":"provision_service","arch":"x86_64","image":"rhel-10","runner":"ubuntu-latest"},',
146
150
  '{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
147
151
  '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
148
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
152
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
153
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
149
154
  '],',
150
155
  '"collection":[',
151
156
  '"puppetcore8","puppetcore9"',
@@ -179,6 +184,7 @@ RSpec.describe 'matrix_from_metadata_v3' do
179
184
  [
180
185
  'matrix={',
181
186
  '"platforms":[',
187
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
182
188
  '],',
183
189
  '"collection":[',
184
190
  '"puppetcore8","puppetcore9"',
@@ -239,7 +245,7 @@ RSpec.describe 'matrix_from_metadata_v3' do
239
245
  '::group::matrix',
240
246
  '::group::spec_matrix'
241
247
  )
242
- expect(github_output_content).to match(/"collection":\[(?:"\d{4}\.\d\.\d-puppet_enterprise",)+"puppetcore8","puppetcore9"/)
248
+ expect(github_output_content).to match(/"collection":\[(?:"\d{4}\.\d+\.\d+-puppet_enterprise",)+"puppetcore8","puppetcore9"/)
243
249
  expect(github_output_content).to include(
244
250
  'spec_matrix={"include":[{"puppet_version":"~> 8.0","ruby_version":3.2},{"puppet_version":"~> 9.0","ruby_version":4.0}]}'
245
251
  )
@@ -261,7 +267,8 @@ RSpec.describe 'matrix_from_metadata_v3' do
261
267
  '{"label":"RedHat-10-arm","provider":"provision_service","arch":"arm","image":"rhel-10-arm64","runner":"ubuntu-latest"},',
262
268
  '{"label":"Ubuntu-18.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:18.04","runner":"ubuntu-22.04"},',
263
269
  '{"label":"Ubuntu-22.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:22.04","runner":"ubuntu-latest"},',
264
- '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"}',
270
+ '{"label":"Ubuntu-22.04-arm","provider":"provision_service","arch":"arm","image":"ubuntu-2204-lts-arm64","runner":"ubuntu-latest"},',
271
+ '{"label":"Ubuntu-26.04","provider":"docker","arch":"x86_64","image":"litmusimage/ubuntu:26.04","runner":"ubuntu-latest"}',
265
272
  '],',
266
273
  '"collection":[',
267
274
  '"puppetcore8-nightly","puppetcore9-nightly"',
@@ -335,4 +342,52 @@ RSpec.describe 'matrix_from_metadata_v3' do
335
342
  )
336
343
  end
337
344
  end
345
+
346
+ context 'with --collection-platform-exclude' do
347
+ let(:result) do
348
+ run_matrix_from_metadata_v3(
349
+ ['--collection-platform-exclude', '9:ubuntu-18.04'],
350
+ env: { 'PUPPET_FORGE_TOKEN' => 'fake' }
351
+ )
352
+ end
353
+
354
+ it 'runs successfully' do
355
+ expect(result.status_code).to eq 0
356
+ end
357
+
358
+ it 'emits a matrix exclude for only the matching platform x collection' do
359
+ result
360
+ matrix = JSON.parse(github_output_content[/^matrix=(.+)$/, 1])
361
+ expect(matrix['exclude']).to contain_exactly(
362
+ 'platforms' => {
363
+ 'label' => 'Ubuntu-18.04', 'provider' => 'docker', 'arch' => 'x86_64',
364
+ 'image' => 'litmusimage/ubuntu:18.04', 'runner' => 'ubuntu-22.04'
365
+ },
366
+ 'collection' => 'puppetcore9'
367
+ )
368
+ end
369
+
370
+ it 'keeps the platform and the collection usable in other combinations' do
371
+ # Ubuntu-18.04 is still a platform and puppetcore9 is still a collection;
372
+ # only the single pair is excluded (so Ubuntu-18.04 still runs on puppetcore8).
373
+ result
374
+ expect(github_output_content).to include('{"label":"Ubuntu-18.04","provider":"docker",')
375
+ expect(github_output_content).to include('"collection":["puppetcore8","puppetcore9"]')
376
+ end
377
+
378
+ it 'logs the exclusion' do
379
+ expect(result.stdout).to include('::notice::collection-platform-exclude filtered Ubuntu-18.04 x puppetcore9')
380
+ end
381
+ end
382
+
383
+ context 'with an invalid --collection-platform-exclude spec' do
384
+ let(:result) do
385
+ run_matrix_from_metadata_v3(['--collection-platform-exclude', 'ubuntu-18.04'])
386
+ end
387
+
388
+ it 'fails with a helpful error' do
389
+ expect(result.status_code).not_to eq 0
390
+ expect(result.stdout).to include("--collection-platform-exclude 'ubuntu-18.04' must be MAJOR:PLATFORM_REGEX")
391
+ end
392
+ end
338
393
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_litmus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-06-25 00:00:00.000000000 Z
11
+ date: 2026-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bolt