packaging 0.99.71 → 0.99.76

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc55afd9bcd5d03c49cd0ce6f89ae31a209356058fb3462bafc8c65fe49d4797
4
- data.tar.gz: 502621e9b2c3596626e56e0a38855ced2b118bcf501dc8a87381fda4f1c06f76
3
+ metadata.gz: 0d737ac46704906a2bc986128797b3db649dd3e35e1432f2a98f362da67ffa56
4
+ data.tar.gz: 7a1ae857ec7a92940499a60c9d649f5e5e40fd8f2340aa95d2751f0de29d9fbd
5
5
  SHA512:
6
- metadata.gz: cb7d531d46d326390769e3c1f27210b3ae65907d9e48adae43248a13b850b5688e008f4d229267d0d936b8d80c6b0c8569b5823e41c55d60ed0145d4b47a9ec6
7
- data.tar.gz: 5c9c2ee3f31fdfc657efb40e17ff9f5283707a883cc1c2bea3ec81dafed9da39a56ae58d6e791f657759ae419c96cfb726a1a30332dba174ab36a6087c50d4a7
6
+ metadata.gz: cacbbdc7c63c443a6a6bb6c0bc7f77367343b22b8356c4d99c00fe67a1fd448af0c7e0647d616ec533d1cb1cdfb6412fbff953bfb6926dbb4a06911d08da20df
7
+ data.tar.gz: 39ada32cc8dde4df7d661d00807ba937667338278191391ec534c98423228c594a49e2c74bedd10e9c8bd18601dae6bdff54804d48f2e255bc995b198bef4c13
data/README.md CHANGED
@@ -404,7 +404,7 @@ deb_build_mirrors:
404
404
  # Who is packaging. Turns up in various packaging artifacts
405
405
  packager: 'puppetlabs'
406
406
  # GPG key ID of the signer
407
- gpg_key: '7F438280EF8D349F'
407
+ gpg_key: '4528B6CD9E61EF26'
408
408
  # Whether to require tarball signing as a prerequisite of other package building
409
409
  sign_tar: false
410
410
  # a space separated list of mock configs. These are the rpm distributions to package for. If a noarch package, only one arch of each is needed.
@@ -6,6 +6,7 @@ module Pkg
6
6
  #
7
7
  class Config
8
8
  require 'packaging/config/params.rb'
9
+ require 'packaging/config/validations.rb'
9
10
  require 'yaml'
10
11
 
11
12
  class << self
@@ -389,6 +390,31 @@ module Pkg
389
390
  end
390
391
  end
391
392
 
393
+ ##
394
+ # Ask for validation of BUILD_PARAMS
395
+ #
396
+ # Issued as warnings initially but the intent is to turn this into
397
+ # a failure.
398
+ #
399
+ def perform_validations
400
+ error_count = 0
401
+ Pkg::Params::VALIDATIONS.each do |v|
402
+ variable_name = v[:var]
403
+ variable_value = self.instance_variable_get("@#{v[:var]}")
404
+ validations = v[:validations]
405
+ validations.each do |validation|
406
+ unless Pkg::ConfigValidations.send(validation, variable_value)
407
+ warn "Warning: variable \"#{variable_name}\" failed validation \"#{validation}\""
408
+ error_count += 1
409
+ end
410
+ end
411
+ end
412
+
413
+ if error_count != 0
414
+ warn "Warning: #{error_count} validation failure(s)."
415
+ end
416
+ end
417
+
392
418
  def string_to_array(str)
393
419
  delimiters = /[,\s;]/
394
420
  return str if str.respond_to?('each')
@@ -298,6 +298,7 @@ module Pkg::Params
298
298
  { :var => :team, :envvar => :TEAM },
299
299
  { :var => :update_version_file, :envvar => :NEW_STYLE_PACKAGE },
300
300
  { :var => :vanagon_project, :envvar => :VANAGON_PROJECT, :type => :bool },
301
+ { :var => :version, :envvar => :PACKAGING_PACKAGE_VERSION },
301
302
  { :var => :yum_archive_path, :envvar => :YUM_ARCHIVE_PATH },
302
303
  { :var => :yum_host, :envvar => :YUM_HOST },
303
304
  { :var => :yum_repo_path, :envvar => :YUM_REPO },
@@ -362,6 +363,7 @@ module Pkg::Params
362
363
  { :oldvar => :yum_host, :newvar => :tar_host },
363
364
  ]
364
365
 
366
+
365
367
  # These are variables that we have deprecated. If they are encountered in a
366
368
  # project's config, we issue deprecations for them.
367
369
  #
@@ -372,4 +374,14 @@ module Pkg::Params
372
374
  { :var => :gpg_name, :message => "
373
375
  DEPRECATED, 29-Jul-2014: 'gpg_name' has been replaced with 'gpg_key'.
374
376
  Please update this field in your build_defaults.yaml" }]
377
+
378
+ # Provide an open-ended template for validating BUILD_PARAMS.
379
+ #
380
+ # Each validatation contains the variable name as ':var' and a list of validations it
381
+ # must pass from the Pkg::Params::Validations class.
382
+ #
383
+ VALIDATIONS = [
384
+ { :var => :project, :validations => [:not_empty?] }
385
+ ]
386
+
375
387
  end
@@ -0,0 +1,13 @@
1
+ module Pkg
2
+ class ConfigValidations
3
+
4
+ class << self
5
+
6
+ # As a validation, this one is kindof lame but is intended as a seed pattern for possibly
7
+ # more robust ones.
8
+ def not_empty?(value)
9
+ value.to_s.empty? ? false : true
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/packaging/gem.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  require 'json'
2
2
  module Pkg::Gem
3
3
  class << self
4
- # This is preserved because I don't want to update the deprecated code path
5
- # yet; I'm not entirely sure I've fixed everything that might attempt
6
- # to call this method so this is now a wrapper for a wrapper.
7
4
  def ship(file)
8
5
  rsync_to_downloads(file)
9
6
  ship_to_rubygems(file)
@@ -13,17 +10,21 @@ module Pkg::Gem
13
10
  # checksums, or other glob-able artifacts to an external download server.
14
11
  def rsync_to_downloads(file)
15
12
  Pkg::Util.deprecate('Pkg::Gem.rsync_to_downloads', 'Pkg::Util::Ship.ship_pkgs')
16
- Pkg::Util::Ship.ship_pkgs(["#{file}*"], Pkg::Config.gem_host, Pkg::Config.gem_path, platform_independent: true)
13
+ Pkg::Util::Ship.ship_pkgs(["#{file}*"], Pkg::Config.gem_host,
14
+ Pkg::Config.gem_path, platform_independent: true)
17
15
  end
18
16
 
19
17
  def shipped_to_rubygems?(gem_name, gem_version, gem_platform)
20
- gem_data = JSON.parse(`curl https://rubygems.org/api/v1/versions/#{gem_name}.json`)
21
- gem = gem_data.select { |data| data['number'] == gem_version && data['platform'] == gem_platform }
18
+ rubygems_url = "https://rubygems.org/api/v1/versions/#{gem_name}.json"
19
+ gem_data = JSON.parse(%x(curl --silent #{rubygems_url}))
20
+ gem = gem_data.select do |data|
21
+ data['number'] == gem_version && data['platform'] == gem_platform
22
+ end
22
23
  return !gem.empty?
23
24
  rescue => e
24
- puts "Uh oh, something went wrong searching for gem '#{gem_name}':"
25
+ puts "Something went wrong searching for gem '#{gem_name}':"
25
26
  puts e
26
- puts "Perhaps you're shipping gem '#{gem_name}' for the first time? Congrats!"
27
+ puts "Perhaps you're shipping '#{gem_name}' for the first time?"
27
28
  return false
28
29
  end
29
30
 
@@ -40,7 +41,7 @@ module Pkg::Gem
40
41
  gem_platform ||= 'ruby'
41
42
 
42
43
  if shipped_to_rubygems?(Pkg::Config.gem_name, Pkg::Config.gemversion, gem_platform)
43
- puts "#{file} has already been shipped to rubygems, skipping . . ."
44
+ puts "#{file} has already been shipped to rubygems, skipping."
44
45
  return
45
46
  end
46
47
  Pkg::Util::File.file_exists?("#{ENV['HOME']}/.gem/credentials", :required => true)
@@ -60,7 +61,10 @@ module Pkg::Gem
60
61
 
61
62
  def ship_to_internal_mirror(file)
62
63
  internal_mirror_api_key_name = 'artifactory_api_key'
63
- ship_to_rubygems(file, { :host => Pkg::Config.internal_gem_host, :key => internal_mirror_api_key_name })
64
+ ship_to_rubygems(file, {
65
+ host: Pkg::Config.internal_gem_host,
66
+ key: internal_mirror_api_key_name
67
+ })
64
68
  end
65
69
  end
66
70
  end
@@ -16,9 +16,9 @@ module Pkg::Paths
16
16
  if source_formats.find { |fmt| path =~ /#{fmt}$/ }
17
17
  return Pkg::Platforms.get_attribute_for_platform_version(platform, version, :source_architecture)
18
18
  end
19
- arches.find { |a| path.include?(a) } || arches[0]
19
+ arches.find { |a| path.include?(package_arch(platform, a)) } || arches[0]
20
20
  rescue
21
- arches.find { |a| path.include?(a) } || arches[0]
21
+ arches.find { |a| path.include?(package_arch(platform, a)) } || arches[0]
22
22
  end
23
23
 
24
24
  # Given a path to an artifact, divine the appropriate platform tag associated
@@ -109,9 +109,19 @@ module Pkg::Paths
109
109
  platform_name = path_data[:platform_name]
110
110
  platform_tag = path_data[:platform_tag]
111
111
 
112
+ repo_name = Pkg::Config.repo_name
113
+
112
114
  case package_format
113
115
  when 'deb'
114
116
  debian_code_name = Pkg::Platforms.get_attribute(platform_tag, :codename)
117
+
118
+ # In puppet7 and beyond, we moved the repo_name to the top to allow each
119
+ # puppet major release to have its own apt repo.
120
+ if %w(FUTURE-puppet7 FUTURE-puppet7-nightly).include? repo_name
121
+ return File.join(prefix, apt_repo_name(is_nonfinal), debian_code_name)
122
+ end
123
+
124
+ # For puppet6 and prior
115
125
  return File.join(prefix, debian_code_name, apt_repo_name(is_nonfinal))
116
126
  when 'dmg'
117
127
  return File.join(prefix, 'mac', repo_name(is_nonfinal))
@@ -292,23 +302,47 @@ module Pkg::Paths
292
302
 
293
303
  # This is where deb packages end up after freight repo updates
294
304
  def apt_package_base_path(platform_tag, repo_name, project, nonfinal = false)
295
- fail "Can't determine path for non-debian platform #{platform_tag}." unless Pkg::Platforms.package_format_for_tag(platform_tag) == 'deb'
305
+ unless Pkg::Platforms.package_format_for_tag(platform_tag) == 'deb'
306
+ fail "Can't determine path for non-debian platform #{platform_tag}."
307
+ end
308
+
296
309
  platform, version, _ = Pkg::Platforms.parse_platform_tag(platform_tag)
297
- codename = Pkg::Platforms.codename_for_platform_version(platform, version)
298
- return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), 'pool', codename, repo_name, project[0], project)
310
+ code_name = Pkg::Platforms.codename_for_platform_version(platform, version)
311
+ remote_repo_path = remote_repo_base(platform_tag, nonfinal: nonfinal)
312
+
313
+ # In puppet7 and beyond, we moved the puppet major version to near the top to allow each
314
+ # puppet major release to have its own apt repo, for example:
315
+ # /opt/repository/apt/puppet7/pool/bionic/p/puppet-agent
316
+ if %w(FUTURE-puppet7 FUTURE-puppet7-nightly).include? repo_name
317
+ return File.join(remote_repo_path, repo_name, 'pool', code_name, project[0], project)
318
+ end
319
+
320
+ # For repos prior to puppet7, the puppet version was part of the repository
321
+ # For example: /opt/repository/apt/pool/bionic/puppet6/p/puppet-agent
322
+ if %w(puppet7 puppet7-nightly
323
+ puppet6 puppet6-nightly
324
+ puppet5 puppet5-nightly
325
+ puppet puppet-nightly
326
+ puppet-tools).include? repo_name
327
+ return File.join(remote_repo_path, 'pool', code_name, repo_name, project[0], project)
328
+ end
329
+
330
+ raise "Error: Cannot determine apt_package_base_path for repo: \"#{repo_name}\"."
299
331
  end
300
332
 
301
333
  def release_package_link_path(platform_tag, nonfinal = false)
302
- platform, version, arch = Pkg::Platforms.parse_platform_tag(platform_tag)
334
+ platform, version, _ = Pkg::Platforms.parse_platform_tag(platform_tag)
303
335
  package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
304
336
  case package_format
305
337
  when 'rpm'
306
- return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
338
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal),
339
+ "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
307
340
  when 'deb'
308
341
  codename = Pkg::Platforms.codename_for_platform_version(platform, version)
309
- return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), "#{repo_name(nonfinal)}-release-#{codename}.deb")
342
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal),
343
+ "#{repo_name(nonfinal)}-release-#{codename}.deb")
310
344
  else
311
- warn "No release packages for package format '#{package_format}', skipping . . ."
345
+ warn "No release packages for package format '#{package_format}', skipping."
312
346
  return nil
313
347
  end
314
348
  end
@@ -328,4 +362,15 @@ module Pkg::Paths
328
362
  return base_component if component_qualifier == 'repos'
329
363
  return full_component
330
364
  end
365
+
366
+ #for ubuntu-20.04-aarch64, debian package architecture is arm64
367
+ def package_arch(platform, arch)
368
+ if platform == 'ubuntu' && arch == 'aarch64'
369
+ return 'arm64'
370
+ end
371
+ arch
372
+ end
373
+
374
+ private :package_arch
375
+
331
376
  end
@@ -100,7 +100,7 @@ module Pkg
100
100
  repo: true,
101
101
  },
102
102
  '8' => {
103
- architectures: ['x86_64', 'aarch64'],
103
+ architectures: ['x86_64', 'ppc64le', 'aarch64'],
104
104
  source_architecture: 'SRPMS',
105
105
  package_format: 'rpm',
106
106
  source_package_formats: ['src.rpm'],
@@ -248,7 +248,7 @@ module Pkg
248
248
  },
249
249
  '20.04' => {
250
250
  codename: 'focal',
251
- architectures: ['amd64'],
251
+ architectures: ['amd64', 'aarch64'],
252
252
  source_architecture: 'source',
253
253
  package_format: 'deb',
254
254
  source_package_formats: DEBIAN_SOURCE_FORMATS,
@@ -71,9 +71,8 @@ for msipath in #{msis.join(" ")}; do
71
71
  echo "$msi is already signed, skipping . . ." ;
72
72
  else
73
73
  tries=5
74
- sha1Servers=(http://timestamp.verisign.com/scripts/timstamp.dll
75
- http://timestamp.globalsign.com/scripts/timstamp.dll
76
- http://www.startssl.com/timestamp)
74
+ sha1Servers=(http://timestamp.digicert.com/sha1/timestamp
75
+ http://timestamp.comodoca.com/authenticode)
77
76
  for timeserver in "${sha1Servers[@]}"; do
78
77
  for ((try=1; try<=$tries; try++)) do
79
78
  ret=$(/cygdrive/c/tools/osslsigncode-fork/osslsigncode.exe sign \
@@ -6,7 +6,7 @@ module Pkg::Util::Git
6
6
  # Git utility to create a new git commit
7
7
  def commit_file(file, message = 'changes')
8
8
  fail_unless_repo
9
- puts 'Commiting changes:'
9
+ puts 'Committing changes:'
10
10
  puts
11
11
  diff, = Pkg::Util::Execution.capture3("#{Pkg::Util::Tool::GIT} diff HEAD #{file}")
12
12
  puts diff
@@ -372,7 +372,7 @@ DOC
372
372
  def remote_bundle_install_command
373
373
  export_packaging_location = ''
374
374
  export_packaging_location = "export PACKAGING_LOCATION='#{ENV['PACKAGING_LOCATION']}';" if ENV['PACKAGING_LOCATION'] && !ENV['PACKAGING_LOCATION'].empty?
375
- command = "source /usr/local/rvm/scripts/rvm; rvm use ruby-2.4.1; #{export_packaging_location} bundle install --path .bundle/gems ;"
375
+ command = "source /usr/local/rvm/scripts/rvm; rvm use ruby-2.5.1; #{export_packaging_location} bundle install --path .bundle/gems ;"
376
376
  end
377
377
 
378
378
  # Given a BuildInstance object and a host, send its params to the host. Return
@@ -105,12 +105,22 @@ module Pkg::Util::Ship
105
105
  end
106
106
 
107
107
  def ship_rpms(local_staging_directory, remote_path, opts = {})
108
- ship_pkgs(["#{local_staging_directory}/**/*.rpm", "#{local_staging_directory}/**/*.srpm"], Pkg::Config.yum_staging_server, remote_path, opts)
108
+ things_to_ship = [
109
+ "#{local_staging_directory}/**/*.rpm",
110
+ "#{local_staging_directory}/**/*.srpm"
111
+ ]
112
+ ship_pkgs(things_to_ship, Pkg::Config.yum_staging_server, remote_path, opts)
109
113
  end
110
114
 
111
115
  def ship_debs(local_staging_directory, remote_path, opts = {})
112
- ship_pkgs(["#{local_staging_directory}/**/*.debian.tar.gz", "#{local_staging_directory}/**/*.orig.tar.gz" "#{local_staging_directory}/**/*.dsc", "#{local_staging_directory}/**/*.deb", "#{local_staging_directory}/**/*.changes"], Pkg::Config.apt_signing_server, remote_path, opts)
113
-
116
+ things_to_ship = [
117
+ "#{local_staging_directory}/**/*.debian.tar.gz",
118
+ "#{local_staging_directory}/**/*.orig.tar.gz",
119
+ "#{local_staging_directory}/**/*.dsc",
120
+ "#{local_staging_directory}/**/*.deb",
121
+ "#{local_staging_directory}/**/*.changes"
122
+ ]
123
+ ship_pkgs(things_to_ship, Pkg::Config.apt_signing_server, remote_path, opts)
114
124
  end
115
125
 
116
126
  def ship_svr4(local_staging_directory, remote_path, opts = {})
@@ -122,12 +132,17 @@ module Pkg::Util::Ship
122
132
  end
123
133
 
124
134
  def ship_dmg(local_staging_directory, remote_path, opts = {})
125
- packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.dmg"], Pkg::Config.dmg_staging_server, remote_path, opts)
135
+ packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.dmg"],
136
+ Pkg::Config.dmg_staging_server, remote_path, opts)
126
137
 
127
138
  if packages_have_shipped
128
139
  Pkg::Platforms.platform_tags_for_package_format('dmg').each do |platform_tag|
129
140
  # Create the latest symlink for the current supported repo
130
- Pkg::Util::Net.remote_create_latest_symlink(Pkg::Config.project, Pkg::Paths.artifacts_path(platform_tag, remote_path, opts[:nonfinal]), 'dmg')
141
+ Pkg::Util::Net.remote_create_latest_symlink(
142
+ Pkg::Config.project,
143
+ Pkg::Paths.artifacts_path(platform_tag, remote_path, opts[:nonfinal]),
144
+ 'dmg'
145
+ )
131
146
  end
132
147
  end
133
148
  end
@@ -3,42 +3,39 @@ require 'spec_helper'
3
3
  describe 'Pkg::Paths' do
4
4
  describe '#arch_from_artifact_path' do
5
5
  arch_transformations = {
6
- ['artifacts/aix/6.1/PC1/ppc/puppet-agent-5.1.0.79.g782e03c-1.aix6.1.ppc.rpm', 'aix', '6.1'] => 'power',
7
- ['pkg/el-7-x86_64/puppet-agent-4.99.0-1.el7.x86_64.rpm', 'el', '7'] => 'x86_64',
8
- ['artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz', 'ubuntu', '16.04'] => 'source',
9
- ['http://saturn.puppetlabs.net/deb_repos/1234abcd/repos/apt/xenial', 'ubuntu', '16.04'] => 'amd64',
6
+ ['artifacts/aix/6.1/puppet6/ppc/puppet-agent-6.9.0-1.aix6.1.ppc.rpm', 'aix', '6.1'] => 'power',
7
+ ['pkg/el-8-x86_64/puppet-agent-6.9.0-1.el8.x86_64.rpm', 'el', '8'] => 'x86_64',
8
+ ['pkg/el/8/puppet6/aarch64/puppet-agent-6.5.0.3094.g16b6fa6f-1.el8.aarch64.rpm', 'el', '8'] => 'aarch64',
9
+ ['artifacts/fedora/32/puppet6/x86_64/puppet-agent-6.9.0-1.fc30.x86_64.rpm', 'fedora', '32'] => 'x86_64',
10
10
  ['pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb', 'ubuntu', '16.04'] => 'amd64',
11
+ ['artifacts/deb/focal/puppet6/puppet-agent_6.5.0.3094.g16b6fa6f-1focal_arm64.deb', 'ubuntu', '20.04'] => 'aarch64',
12
+
13
+ ['artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz', 'ubuntu', '16.04'] => 'source',
11
14
  ['artifacts/deb/jessie/PC1/puppetserver_5.0.1.master.orig.tar.gz', 'debian', '8'] => 'source',
12
15
  ['artifacts/el/6/PC1/SRPMS/puppetserver-5.0.1.master-0.1SNAPSHOT.2017.08.18T0951.el6.src.rpm', 'el', '6'] => 'SRPMS'
13
16
  }
14
17
  arch_transformations.each do |path_array, arch|
15
18
  it "should correctly return #{arch} for #{path_array[0]}" do
16
- expect(Pkg::Paths.arch_from_artifact_path(path_array[1], path_array[2], path_array[0])).to eq(arch)
19
+ expect(Pkg::Paths.arch_from_artifact_path(path_array[1], path_array[2], path_array[0]))
20
+ .to eq(arch)
17
21
  end
18
22
  end
19
23
  end
20
24
 
21
25
  describe '#tag_from_artifact_path' do
22
26
  path_tranformations = {
23
- 'artifacts/aix/6.1/PC1/ppc/puppet-agent-5.1.0.79.g782e03c-1.aix6.1.ppc.rpm' => 'aix-6.1-power',
24
- 'pkg/el-7-x86_64/puppet-agent-4.99.0-1.el7.x86_64.rpm' => 'el-7-x86_64',
25
- 'pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb' => 'ubuntu-16.04-amd64',
26
- 'pkg/windows-x64/puppet-agent-4.99.0-x64.msi' => 'windows-2012-x64',
27
+ 'artifacts/aix/6.1/puppet6/ppc/puppet-agent-6.9.0-1.aix6.1.ppc.rpm' => 'aix-6.1-power',
28
+ 'pkg/el-7-x86_64/puppet-agent-5.5.22-1.el8.x86_64.rpm' => 'el-7-x86_64',
29
+ 'pkg/ubuntu-20.04-amd64/puppet-agent_5.5.22-1xenial_amd64.deb' => 'ubuntu-20.04-amd64',
30
+ 'pkg/windows/puppet-agent-5.5.22-x86.msi' => 'windows-2012-x86',
27
31
  'artifacts/el/6/products/x86_64/pe-r10k-2.5.4.3-1.el6.x86_64.rpm' => 'el-6-x86_64',
28
32
  'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.noarch.rpm' => 'el-6-i386',
29
- 'pkg/deb/trusty/pe-r10k_2.5.4.3-1trusty_amd64.deb' => 'ubuntu-14.04-amd64',
30
- 'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1_all.deb' => 'ubuntu-16.04-amd64',
31
- 'pkg/pe/deb/xenial/super-trusty-package_1.0.0-1puppet1_all.deb' => 'ubuntu-16.04-amd64',
32
- 'artifacts/deb/stretch/PC1/puppetdb_4.3.1-1puppetlabs1_all.deb' => 'debian-9-amd64',
33
- 'pkg/el/7/PC1/x86_64/puppetdb-4.3.1-1.el7.noarch.rpm' => 'el-7-x86_64',
34
- 'pkg/apple/10.14/PC1/x86_64/puppet-agent-1.9.0-1.osx10.14.dmg' => 'osx-10.14-x86_64',
35
- 'artifacts/mac/10.15/PC1/x86_64/puppet-agent-1.9.0-1.osx10.15.dmg' => 'osx-10.15-x86_64',
36
- 'artifacts/eos/4/PC1/i386/puppet-agent-1.9.0-1.eos4.i386.swix' => 'eos-4-i386',
33
+ 'pkg/deb/bionic/pe-r10k_3.5.2.0-1bionic_amd64.deb' => 'ubuntu-18.04-amd64',
34
+ 'pkg/deb/buster/pe-r10k_3.5.2.0-1buster_amd64.deb' => 'debian-10-amd64',
35
+ 'pkg/pe/deb/bionic/pe-puppetserver_2019.8.2.32-1bionic_all.deb' => 'ubuntu-18.04-amd64',
36
+ 'artifacts/deb/focal/puppet6/puppetdb_6.13.0-1focal_all.deb' => 'ubuntu-20.04-amd64',
37
+ 'pkg/apple/10.15/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg' => 'osx-10.15-x86_64',
37
38
  'pkg/windows/puppet-agent-1.9.0-x86.msi' => 'windows-2012-x86',
38
- 'artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz' => 'ubuntu-16.04-source',
39
- 'http://saturn.puppetlabs.net/deb_repos/1234abcd/repos/apt/xenial' => 'ubuntu-16.04-amd64',
40
- 'http://builds.puppetlabs.lan/puppet-agent/0ce4e6a0448366e01537323bbab77f834d7035c7/repos/el/6/PC1/x86_64/' => 'el-6-x86_64',
41
- 'http://builds.puppetlabs.lan/puppet-agent/0ce4e6a0448366e01537323bbab77f834d7035c7/repos/el/6/PC1/x86_64/' => 'el-6-x86_64',
42
39
  'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.src.rpm' => 'el-6-SRPMS',
43
40
  'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1.orig.tar.gz' => 'ubuntu-16.04-source',
44
41
  'pkg/puppet-agent-5.1.0.79.g782e03c.gem' => nil,
@@ -63,10 +60,14 @@ describe 'Pkg::Paths' do
63
60
  end
64
61
 
65
62
  describe '#repo_name' do
63
+ it 'should return repo_name for final version' do
64
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
65
+ expect(Pkg::Paths.repo_name).to eq('puppet6')
66
+ end
66
67
 
67
68
  it 'should return repo_name for final version' do
68
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
69
- expect(Pkg::Paths.repo_name).to eq('puppet5')
69
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
70
+ expect(Pkg::Paths.repo_name).to eq('FUTURE-puppet7')
70
71
  end
71
72
 
72
73
  it 'should be empty string if repo_name is not set for final version' do
@@ -75,56 +76,84 @@ describe 'Pkg::Paths' do
75
76
  end
76
77
 
77
78
  it 'should return nonfinal_repo_name for non-final version' do
78
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet5-nightly')
79
- expect(Pkg::Paths.repo_name(true)).to eq('puppet5-nightly')
79
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet6-nightly')
80
+ expect(Pkg::Paths.repo_name(true)).to eq('puppet6-nightly')
80
81
  end
81
82
 
82
83
  it 'should fail if nonfinal_repo_name is not set for non-final version' do
83
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
84
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
84
85
  allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
85
86
  expect { Pkg::Paths.repo_name(true) }.to raise_error
86
87
  end
87
88
  end
88
89
 
89
90
  describe '#artifacts_path' do
90
- before :each do
91
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
92
- end
91
+ context 'all puppet versions' do
92
+ before :each do
93
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
94
+ end
93
95
 
94
- it 'should be correct for el7' do
95
- expect(Pkg::Paths.artifacts_path('el-7-x86_64')).to eq('artifacts/puppet5/el/7/x86_64')
96
+ it 'should work on all current platforms' do
97
+ Pkg::Platforms.platform_tags.each do |tag|
98
+ expect { Pkg::Paths.artifacts_path(tag) }.not_to raise_error
99
+ end
100
+ end
96
101
  end
97
102
 
98
- it 'should be correct for bionic' do
99
- expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64')).to eq('artifacts/bionic/puppet5')
100
- end
103
+ context 'for puppet 6 and prior' do
104
+ before :each do
105
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
106
+ end
101
107
 
102
- it 'should be correct for solaris 11' do
103
- expect(Pkg::Paths.artifacts_path('solaris-11-sparc')).to eq('artifacts/solaris/puppet5/11')
104
- end
108
+ it 'should be correct for el7' do
109
+ expect(Pkg::Paths.artifacts_path('el-7-x86_64'))
110
+ .to eq('artifacts/puppet6/el/7/x86_64')
111
+ end
105
112
 
106
- it 'should be correct for osx' do
107
- expect(Pkg::Paths.artifacts_path('osx-10.15-x86_64')).to eq('artifacts/mac/puppet5/10.15/x86_64')
108
- end
113
+ it 'should be correct for bionic' do
114
+ expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64'))
115
+ .to eq('artifacts/bionic/puppet6')
116
+ end
117
+
118
+ it 'should be correct for solaris 11' do
119
+ expect(Pkg::Paths.artifacts_path('solaris-11-sparc'))
120
+ .to eq('artifacts/solaris/puppet6/11')
121
+ end
109
122
 
110
- it 'should be correct for windows' do
111
- expect(Pkg::Paths.artifacts_path('windows-2012-x64')).to eq('artifacts/windows/puppet5')
123
+ it 'should be correct for osx' do
124
+ expect(Pkg::Paths.artifacts_path('osx-10.15-x86_64'))
125
+ .to eq('artifacts/mac/puppet6/10.15/x86_64')
126
+ end
127
+
128
+ it 'should be correct for windows' do
129
+ expect(Pkg::Paths.artifacts_path('windows-2012-x64'))
130
+ .to eq('artifacts/windows/puppet6')
131
+ end
112
132
  end
113
133
 
114
- it 'should work on all current platforms' do
115
- Pkg::Platforms.platform_tags.each do |tag|
116
- expect { Pkg::Paths.artifacts_path(tag) }.not_to raise_error
134
+ context 'after puppet 7 apt changes' do
135
+ before :each do
136
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
137
+ end
138
+
139
+ it 'should be correct for bionic' do
140
+ expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64'))
141
+ .to eq('artifacts/FUTURE-puppet7/bionic')
142
+ end
143
+ it 'should be correct for focal' do
144
+ expect(Pkg::Paths.artifacts_path('ubuntu-20.04-amd64'))
145
+ .to eq('artifacts/FUTURE-puppet7/focal')
117
146
  end
118
147
  end
119
148
  end
120
149
 
121
150
  describe '#repo_path' do
122
151
  before :each do
123
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
152
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
124
153
  end
125
154
 
126
155
  it 'should be correct' do
127
- expect(Pkg::Paths.repo_path('el-7-x86_64')).to eq('repos/puppet5/el/7/x86_64')
156
+ expect(Pkg::Paths.repo_path('el-7-x86_64')).to eq('repos/puppet6/el/7/x86_64')
128
157
  end
129
158
 
130
159
  it 'should work on all current platforms' do
@@ -135,8 +164,16 @@ describe 'Pkg::Paths' do
135
164
  end
136
165
 
137
166
  describe '#repo_config_path' do
138
- it 'should be correct' do
139
- expect(Pkg::Paths.repo_config_path('el-7-x86_64')).to eq('repo_configs/rpm/*el-7-x86_64*.repo')
167
+ it 'should construct rpm/deb-specific repo configs' do
168
+ expect(Pkg::Paths.repo_config_path('el-7-x86_64'))
169
+ .to eq('repo_configs/rpm/*el-7-x86_64*.repo')
170
+ expect(Pkg::Paths.repo_config_path('ubuntu-18.04-amd64'))
171
+ .to eq('repo_configs/deb/*bionic*.list')
172
+ end
173
+
174
+ it 'should raise a RuntimeError with unfamilar repo configs' do
175
+ expect { Pkg::Paths.repo_config_path('bogus') }
176
+ .to raise_error(/Could not verify that 'bogus' is a valid tag/)
140
177
  end
141
178
 
142
179
  it 'should work on all current platforms' do
@@ -148,15 +185,15 @@ describe 'Pkg::Paths' do
148
185
 
149
186
  describe '#apt_repo_name' do
150
187
  it 'should return `Pkg::Config.repo_name` if set' do
151
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
152
- allow(Pkg::Config).to receive(:apt_repo_name).and_return('PC1')
153
- expect(Pkg::Paths.apt_repo_name).to eq('puppet5')
188
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
189
+ allow(Pkg::Config).to receive(:apt_repo_name).and_return('stuff')
190
+ expect(Pkg::Paths.apt_repo_name).to eq('puppet6')
154
191
  end
155
192
 
156
193
  it 'should return `Pkg::Config.apt_repo_name` if `Pkg::Config.repo_name` is not set' do
157
194
  allow(Pkg::Config).to receive(:repo_name).and_return(nil)
158
- allow(Pkg::Config).to receive(:apt_repo_name).and_return('PC1')
159
- expect(Pkg::Paths.apt_repo_name).to eq('PC1')
195
+ allow(Pkg::Config).to receive(:apt_repo_name).and_return('puppet6')
196
+ expect(Pkg::Paths.apt_repo_name).to eq('puppet6')
160
197
  end
161
198
 
162
199
  it 'should return \'main\' if nothing is set' do
@@ -164,14 +201,15 @@ describe 'Pkg::Paths' do
164
201
  allow(Pkg::Config).to receive(:apt_repo_name).and_return(nil)
165
202
  expect(Pkg::Paths.apt_repo_name).to eq('main')
166
203
  end
204
+
167
205
  it 'should return nonfinal_repo_name for nonfinal version' do
168
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
169
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet5-nightly')
170
- expect(Pkg::Paths.apt_repo_name(true)).to eq('puppet5-nightly')
206
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
207
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
208
+ expect(Pkg::Paths.apt_repo_name(true)).to eq('FUTURE-puppet7-nightly')
171
209
  end
172
210
 
173
211
  it 'should fail if nonfinal_repo_name is not set for non-final version' do
174
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
212
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
175
213
  allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
176
214
  expect { Pkg::Paths.apt_repo_name(true) }.to raise_error
177
215
  end
@@ -179,15 +217,15 @@ describe 'Pkg::Paths' do
179
217
 
180
218
  describe '#yum_repo_name' do
181
219
  it 'should return `Pkg::Config.repo_name` if set' do
182
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
183
- allow(Pkg::Config).to receive(:yum_repo_name).and_return('PC1')
184
- expect(Pkg::Paths.yum_repo_name).to eq('puppet5')
220
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
221
+ allow(Pkg::Config).to receive(:yum_repo_name).and_return('stuff')
222
+ expect(Pkg::Paths.yum_repo_name).to eq('puppet6')
185
223
  end
186
224
 
187
225
  it 'should return `Pkg::Config.yum_repo_name` if `Pkg::Config.repo_name` is not set' do
188
226
  allow(Pkg::Config).to receive(:repo_name).and_return(nil)
189
- allow(Pkg::Config).to receive(:yum_repo_name).and_return('PC1')
190
- expect(Pkg::Paths.yum_repo_name).to eq('PC1')
227
+ allow(Pkg::Config).to receive(:yum_repo_name).and_return('FUTURE-puppet7')
228
+ expect(Pkg::Paths.yum_repo_name).to eq('FUTURE-puppet7')
191
229
  end
192
230
 
193
231
  it 'should return \'products\' if nothing is set' do
@@ -197,40 +235,50 @@ describe 'Pkg::Paths' do
197
235
  end
198
236
 
199
237
  it 'should return nonfinal_repo_name for nonfinal version' do
200
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
201
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet5-nightly')
202
- expect(Pkg::Paths.yum_repo_name(true)).to eq('puppet5-nightly')
238
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
239
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
240
+ expect(Pkg::Paths.yum_repo_name(true)).to eq('FUTURE-puppet7-nightly')
203
241
  end
204
242
 
205
243
  it 'should fail if nonfinal_repo_name is not set for non-final version' do
206
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
244
+ allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
207
245
  allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
208
246
  expect { Pkg::Paths.yum_repo_name(true) }.to raise_error
209
247
  end
210
248
  end
211
249
 
212
250
  describe '#remote_repo_base' do
251
+ fake_yum_repo_path = '/fake/yum'
252
+ fake_yum_nightly_repo_path = '/fake/yum-nightly'
253
+ fake_apt_repo_path = '/fake/apt'
254
+ fake_apt_nightly_repo_path = '/fake/apt-nightly'
255
+
213
256
  before :each do
214
- allow(Pkg::Config).to receive(:yum_repo_path).and_return('foo')
215
- allow(Pkg::Config).to receive(:apt_repo_path).and_return('bar')
257
+ allow(Pkg::Config).to receive(:yum_repo_path).and_return(fake_yum_repo_path)
258
+ allow(Pkg::Config).to receive(:apt_repo_path).and_return(fake_apt_repo_path)
216
259
  allow(Pkg::Config).to receive(:dmg_path).and_return('/opt/downloads/mac')
217
- allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return('foo-nightly')
218
- allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return('bar-nightly')
260
+ allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(fake_yum_nightly_repo_path)
261
+ allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(fake_apt_nightly_repo_path)
219
262
  end
220
263
  it 'returns yum_repo_path for rpms' do
221
- expect(Pkg::Paths.remote_repo_base('el-7-x86_64')).to eq('foo')
264
+ expect(Pkg::Paths.remote_repo_base('el-7-x86_64'))
265
+ .to eq(fake_yum_repo_path)
222
266
  end
223
267
  it 'returns apt_repo_path for debs' do
224
- expect(Pkg::Paths.remote_repo_base('ubuntu-18.04-amd64')).to eq('bar')
268
+ expect(Pkg::Paths.remote_repo_base('ubuntu-18.04-amd64'))
269
+ .to eq(fake_apt_repo_path)
225
270
  end
226
271
  it 'returns nonfinal_yum_repo_path for nonfinal rpms' do
227
- expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', nonfinal: true)).to eq('foo-nightly')
272
+ expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', nonfinal: true))
273
+ .to eq(fake_yum_nightly_repo_path)
228
274
  end
229
275
  it 'returns nonfinal_apt_repo_path for nonfinal debs' do
230
- expect(Pkg::Paths.remote_repo_base('debian-9-amd64', nonfinal: true)).to eq('bar-nightly')
276
+ expect(Pkg::Paths.remote_repo_base('debian-9-amd64', nonfinal: true))
277
+ .to eq(fake_apt_nightly_repo_path)
231
278
  end
232
279
  it 'fails if neither tag nor package_format is provided' do
233
- expect { Pkg::Paths.remote_repo_base }.to raise_error(/Pkg::Paths.remote_repo_base must have/)
280
+ expect { Pkg::Paths.remote_repo_base }
281
+ .to raise_error(/Pkg::Paths.remote_repo_base must have/)
234
282
  end
235
283
 
236
284
  it 'returns /opt/downloads if the path is /opt/downloads/<something>' do
@@ -238,56 +286,127 @@ describe 'Pkg::Paths' do
238
286
  end
239
287
 
240
288
  it 'fails for all other package formats' do
241
- expect { Pkg::Paths.remote_repo_base('solaris-11-i386') }.to raise_error(/Can't determine remote repo base path/)
289
+ expect { Pkg::Paths.remote_repo_base('solaris-11-i386') }
290
+ .to raise_error(/Can't determine remote repo base path/)
242
291
  end
243
292
  end
244
293
 
245
294
  describe '#apt_package_base_path' do
246
295
  it 'fails for non-debian platforms' do
247
- expect { Pkg::Paths.apt_package_base_path('el-7-x86_64', 'puppet6', 'puppet-agent') }.to raise_error(/Can't determine path for non-debian platform/)
296
+ expect { Pkg::Paths.apt_package_base_path('el-7-x86_64', 'puppet6', 'puppet-agent') }
297
+ .to raise_error(/Can't determine path for non-debian platform/)
248
298
  end
249
- it 'returns the approprate apt repo path' do
250
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
251
- expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6', 'puppet-agent')).to eq('/opt/repository/apt/pool/bionic/puppet6/p/puppet-agent')
252
- expect(Pkg::Paths.apt_package_base_path('debian-9-amd64', 'puppet6', 'razor-server')).to eq('/opt/repository/apt/pool/stretch/puppet6/r/razor-server')
299
+
300
+ context 'for puppet 6 and prior' do
301
+ it 'returns the approprate apt repo path' do
302
+ allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
303
+ expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6', 'puppet-agent'))
304
+ .to eq('/opt/repository/apt/pool/bionic/puppet6/p/puppet-agent')
305
+ expect(Pkg::Paths.apt_package_base_path('debian-9-amd64', 'puppet6', 'bolt-server'))
306
+ .to eq('/opt/repository/apt/pool/stretch/puppet6/b/bolt-server')
307
+
308
+
309
+ end
310
+ it 'returns the appropriate nonfinal repo path' do
311
+ allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
312
+ expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6-nightly',
313
+ 'puppet-agent', true))
314
+ .to eq('/opt/repository-nightlies/apt/pool/bionic/puppet6-nightly/p/puppet-agent')
315
+ expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'puppet6-nightly',
316
+ 'pdk', true))
317
+ .to eq('/opt/repository-nightlies/apt/pool/buster/puppet6-nightly/p/pdk')
318
+ end
253
319
  end
254
- it 'returns the appropriate nonfinal repo path' do
255
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
256
- expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6-nightly', 'puppet-agent', true)).to eq('/opt/repository-nightlies/apt/pool/bionic/puppet6-nightly/p/puppet-agent')
257
- expect(Pkg::Paths.apt_package_base_path('debian-9-amd64', 'puppet6-nightly', 'razor-server', true)).to eq('/opt/repository-nightlies/apt/pool/stretch/puppet6-nightly/r/razor-server')
320
+
321
+ context 'for puppet 7 and after' do
322
+ it 'returns the approprate apt repo path' do
323
+ allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
324
+ expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
325
+ .to eq('/opt/repository/apt/FUTURE-puppet7/pool/bionic/p/puppet-agent')
326
+ expect(Pkg::Paths.apt_package_base_path('ubuntu-20.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
327
+ .to eq('/opt/repository/apt/FUTURE-puppet7/pool/focal/p/puppet-agent')
328
+ end
329
+ it 'returns the appropriate nonfinal repo path' do
330
+ allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
331
+ expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'FUTURE-puppet7-nightly', 'pdk', true))
332
+ .to eq('/opt/repository-nightlies/apt/FUTURE-puppet7-nightly/pool/buster/p/pdk')
333
+ end
258
334
  end
259
335
  end
260
336
 
261
337
  describe '#release_package_link_path' do
262
- repo_name = 'puppet6'
263
- nonfinal_repo_name = 'puppet6-nightly'
264
- yum_repo_path = '/opt/repository/yum'
265
- apt_repo_path = '/opt/repository/apt'
266
- nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
267
- nonfinal_apt_repo_path = '/opt/repository-nightlies/apt'
268
- before :each do
269
- allow(Pkg::Config).to receive(:repo_name).and_return(repo_name)
270
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nonfinal_repo_name)
271
- allow(Pkg::Config).to receive(:yum_repo_path).and_return(yum_repo_path)
272
- allow(Pkg::Config).to receive(:apt_repo_path).and_return(apt_repo_path)
273
- allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(nonfinal_yum_repo_path)
274
- allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(nonfinal_apt_repo_path)
275
- end
276
- it 'returns the appropriate link path for rpm release packages' do
277
- expect(Pkg::Paths.release_package_link_path('sles-12-ppc64le')).to eq("#{yum_repo_path}/#{repo_name}-release-sles-12.noarch.rpm")
278
- end
279
- it 'returns the appropriate link path for deb release packages' do
280
- expect(Pkg::Paths.release_package_link_path('ubuntu-16.04-amd64')).to eq("#{apt_repo_path}/#{repo_name}-release-xenial.deb")
281
- end
282
- it 'returns the appropriate link path for nonfinal rpm release packages' do
283
- expect(Pkg::Paths.release_package_link_path('el-7-x86_64', true)).to eq("#{nonfinal_yum_repo_path}/#{nonfinal_repo_name}-release-el-7.noarch.rpm")
284
- end
285
- it 'returns the appropriate link path for nonfinal deb release packages' do
286
- expect(Pkg::Paths.release_package_link_path('debian-9-i386', true)).to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-stretch.deb")
338
+ context 'for puppet 6' do
339
+ repo_name = 'puppet6'
340
+ nonfinal_repo_name = 'puppet6-nightly'
341
+ yum_repo_path = '/opt/repository/yum'
342
+ apt_repo_path = '/opt/repository/apt'
343
+ nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
344
+ nonfinal_apt_repo_path = '/opt/repository-nightlies/apt'
345
+ before :each do
346
+ allow(Pkg::Config).to receive(:repo_name).and_return(repo_name)
347
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nonfinal_repo_name)
348
+ allow(Pkg::Config).to receive(:yum_repo_path).and_return(yum_repo_path)
349
+ allow(Pkg::Config).to receive(:apt_repo_path).and_return(apt_repo_path)
350
+ allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(nonfinal_yum_repo_path)
351
+ allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(nonfinal_apt_repo_path)
352
+ end
353
+ it 'returns the appropriate link path for rpm release packages' do
354
+ expect(Pkg::Paths.release_package_link_path('sles-12-ppc64le'))
355
+ .to eq("#{yum_repo_path}/#{repo_name}-release-sles-12.noarch.rpm")
356
+ end
357
+ it 'returns the appropriate link path for deb release packages' do
358
+ expect(Pkg::Paths.release_package_link_path('ubuntu-16.04-amd64'))
359
+ .to eq("#{apt_repo_path}/#{repo_name}-release-xenial.deb")
360
+ end
361
+ it 'returns the appropriate link path for nonfinal rpm release packages' do
362
+ expect(Pkg::Paths.release_package_link_path('el-7-x86_64', true))
363
+ .to eq("#{nonfinal_yum_repo_path}/#{nonfinal_repo_name}-release-el-7.noarch.rpm")
364
+ end
365
+ it 'returns the appropriate link path for nonfinal deb release packages' do
366
+ expect(Pkg::Paths.release_package_link_path('debian-9-i386', true))
367
+ .to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-stretch.deb")
368
+ end
369
+ it 'returns nil for package formats that do not have release packages' do
370
+ expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
371
+ expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
372
+ end
287
373
  end
288
- it 'returns nil for package formats that do not have release packages' do
289
- expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
290
- expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
374
+
375
+ context 'for puppet 7' do
376
+ repo_name = 'FUTURE-puppet7'
377
+ nonfinal_repo_name = 'FUTURE-puppet7-nightly'
378
+ yum_repo_path = '/opt/repository/yum'
379
+ apt_repo_path = '/opt/repository/apt'
380
+ nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
381
+ nonfinal_apt_repo_path = '/opt/repository-nightlies/apt'
382
+ before :each do
383
+ allow(Pkg::Config).to receive(:repo_name).and_return(repo_name)
384
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nonfinal_repo_name)
385
+ allow(Pkg::Config).to receive(:yum_repo_path).and_return(yum_repo_path)
386
+ allow(Pkg::Config).to receive(:apt_repo_path).and_return(apt_repo_path)
387
+ allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(nonfinal_yum_repo_path)
388
+ allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(nonfinal_apt_repo_path)
389
+ end
390
+ it 'returns the appropriate link path for rpm release packages' do
391
+ expect(Pkg::Paths.release_package_link_path('sles-12-ppc64le'))
392
+ .to eq("#{yum_repo_path}/#{repo_name}-release-sles-12.noarch.rpm")
393
+ end
394
+ it 'returns the appropriate link path for deb release packages' do
395
+ expect(Pkg::Paths.release_package_link_path('ubuntu-20.04-amd64'))
396
+ .to eq("#{apt_repo_path}/#{repo_name}-release-focal.deb")
397
+ end
398
+ it 'returns the appropriate link path for nonfinal rpm release packages' do
399
+ expect(Pkg::Paths.release_package_link_path('el-8-x86_64', true))
400
+ .to eq("#{nonfinal_yum_repo_path}/#{nonfinal_repo_name}-release-el-8.noarch.rpm")
401
+ end
402
+ it 'returns the appropriate link path for nonfinal deb release packages' do
403
+ expect(Pkg::Paths.release_package_link_path('debian-10-i386', true))
404
+ .to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-buster.deb")
405
+ end
406
+ it 'returns nil for package formats that do not have release packages' do
407
+ expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
408
+ expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
409
+ end
291
410
  end
292
411
  end
293
412
  end