packaging 0.99.70 → 0.99.75

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: 11a0840913fb57a680da0e10106eb365509f12aac800cd4690ec7a8699a502db
4
- data.tar.gz: a6e0fc9121f5210bcae05b7d5fd3e9ae6261b5f6f6976bcb9d7afbe334abfae6
3
+ metadata.gz: d4eba143d4627b1c6ce1eb694894a79987fb4c9eb169a8de3dfe756c037f2cfd
4
+ data.tar.gz: fc772076ec4a28f57e2a99afb51a29ecba0d20b6b0eea0d32d16f43575f8c8d4
5
5
  SHA512:
6
- metadata.gz: 468ce0b532e9c2d75c046c8784d1b349ffbbe49b53d9b1a76b3469fa79542daa2c039370856d3fe4ae9b6dce85d107542fb19c747f39742fd5d0cfbbd8d2f160
7
- data.tar.gz: 12ecb0cd44da2ba10ef452b8a23702954099db2d2003e17cdb65e71956b84e189265268f422a6b592019772588fa22713a543a24b2ee7df808240ea285822da3
6
+ metadata.gz: 5e6b6a56070e12ea898725f030d2cf95b6e04f6ac329f6dab38a20ab9aa765a3a7667f6967373dbde8cf8686403784ad9ca4e49bc83923e260a7c9517e457329
7
+ data.tar.gz: 5a3cadefed6983b5bcacf0f2abb117b8f2c5aa829dc8567a041b4e4b679d1489d8a2badb80a1c7c1b0a51cbda94ad07d8f00d9378dcaca9ab02b4cd831aeab2f
@@ -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 },
@@ -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,30 +302,53 @@ 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).include? repo_name
326
+ return File.join(remote_repo_path, 'pool', code_name, repo_name, project[0], project)
327
+ end
328
+
329
+ raise "Error: Cannot determine apt_package_base_path for repo: \"#{repo_name}\"."
299
330
  end
300
331
 
301
332
  def release_package_link_path(platform_tag, nonfinal = false)
302
- platform, version, arch = Pkg::Platforms.parse_platform_tag(platform_tag)
333
+ platform, version, _ = Pkg::Platforms.parse_platform_tag(platform_tag)
303
334
  package_format = Pkg::Platforms.package_format_for_tag(platform_tag)
304
335
  case package_format
305
336
  when 'rpm'
306
- return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal), "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
337
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal),
338
+ "#{repo_name(nonfinal)}-release-#{platform}-#{version}.noarch.rpm")
307
339
  when 'deb'
308
340
  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")
341
+ return File.join(remote_repo_base(platform_tag, nonfinal: nonfinal),
342
+ "#{repo_name(nonfinal)}-release-#{codename}.deb")
310
343
  else
311
- warn "No release packages for package format '#{package_format}', skipping . . ."
344
+ warn "No release packages for package format '#{package_format}', skipping."
312
345
  return nil
313
346
  end
314
347
  end
315
348
 
316
349
  def debian_component_from_path(path)
317
350
  # substitute '.' and '/' since those aren't valid characters for debian components
318
- matches = path.match(/([\d+\.\d+|master|main])\/(\w+)/)
351
+ matches = path.match(/(\d+\.\d+|master|main)\/(\w+)/)
319
352
  regex_for_substitution = /[\.\/]/
320
353
  fail "Error: Could not determine Debian Component from path #{path}" if matches.nil?
321
354
  base_component = matches[1]
@@ -328,4 +361,15 @@ module Pkg::Paths
328
361
  return base_component if component_qualifier == 'repos'
329
362
  return full_component
330
363
  end
364
+
365
+ #for ubuntu-20.04-aarch64, debian package architecture is arm64
366
+ def package_arch(platform, arch)
367
+ if platform == 'ubuntu' && arch == 'aarch64'
368
+ return 'arm64'
369
+ end
370
+ arch
371
+ end
372
+
373
+ private :package_arch
374
+
331
375
  end
@@ -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,
@@ -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
@@ -2,88 +2,112 @@ require 'spec_helper'
2
2
 
3
3
  describe '#Pkg::Util::Ship' do
4
4
  describe '#collect_packages' do
5
- msi_pkgs = [
6
- 'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
7
- 'pkg/windows/puppet5/puppet-agent-x86.msi',
8
- 'pkg/windowsfips/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x64.msi',
9
- 'pkg/windowsfips/puppet5/puppet-agent-x64.msi'
5
+ msi_packages = %w[
6
+ pkg/windows/puppet6/puppet-agent-6.19.0-x64.msi
7
+ pkg/windows/puppet6/puppet-agent-6.19.0-x86.msi
8
+ pkg/windowsfips/puppet6/puppet-agent-6.19.0-x64.msi
9
+ pkg/windows/puppet6/puppet-agent-x86.msi
10
+ pkg/windowsfips/puppet6/puppet-agent-x64.msi
10
11
  ]
11
- swix_pkgs = [
12
- 'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
13
- 'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
12
+ solaris_packages = %w[
13
+ pkg/solaris/10/puppet6/puppet-agent-6.9.0-1.sparc.pkg.gz
14
+ pkg/solaris/10/puppet6/puppet-agent-6.9.0-1.sparc.pkg.gz.asc
14
15
  ]
15
16
 
16
17
  it 'returns an array of packages found on the filesystem' do
17
- allow(Dir).to receive(:glob).with('pkg/**/*.swix*').and_return(swix_pkgs)
18
- expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.swix*'])).to eq(swix_pkgs)
18
+ allow(Dir).to receive(:glob).with('pkg/**/*.sparc*').and_return(solaris_packages)
19
+ expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.sparc*'])).to eq(solaris_packages)
19
20
  end
20
21
 
21
- describe 'define excludes' do
22
+ context 'excluding packages' do
22
23
  before :each do
23
- allow(Dir).to receive(:glob).with('pkg/**/*.msi').and_return(msi_pkgs)
24
+ allow(Dir).to receive(:glob).with('pkg/**/*.msi').and_return(msi_packages)
24
25
  end
25
26
  it 'correctly excludes any packages that match a passed excludes argument' do
26
- expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi'])).not_to include('pkg/windows/puppet5/puppet-agent-x86.msi')
27
+ expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi']))
28
+ .not_to include('pkg/windows/puppet6/puppet-agent-x86.msi')
29
+ expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi']))
30
+ .not_to include('pkg/windows/puppet6/puppet-agent-x64.msi')
27
31
  end
28
32
  it 'correctly includes packages that do not match a passed excluded argument' do
29
- expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'], ['puppet-agent-x(86|64).msi'])).to \
30
- match_array(
31
- [
32
- 'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
33
- 'pkg/windowsfips/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x64.msi',
34
- ]
35
- )
33
+ expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.msi'],
34
+ ['bogus-puppet-agent-x(86|64).msi']))
35
+ .to match_array(msi_packages)
36
36
  end
37
37
  end
38
38
 
39
- it 'fails when it cannot find any packages at all' do
39
+ it 'returns an empty array when it cannot find any packages' do
40
40
  allow(Dir).to receive(:glob).with('pkg/**/*.html').and_return([])
41
41
  expect(Pkg::Util::Ship.collect_packages(['pkg/**/*.html'])).to be_empty
42
42
  end
43
43
  end
44
44
 
45
- local_pkgs = [
46
- 'pkg/deb/stretch/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1stretch_i386.deb',
47
- 'pkg/el/5/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
48
- 'pkg/sles/11/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
49
- 'pkg/sles/12/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.sles12.x86_64.rpm',
50
- 'pkg/mac/10.15/puppet5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.15.dmg',
51
- 'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
52
- 'pkg/eos/4/puppet5/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
53
- 'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
54
- ]
55
- new_pkgs = [
56
- 'pkg/stretch/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1stretch_i386.deb',
57
- 'pkg/puppet5/el/5/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.el5.x86_64.rpm',
58
- 'pkg/puppet5/sles/11/i386/puppet-agent-1.4.1.2904.g8023dd1-1.sles11.i386.rpm',
59
- 'pkg/puppet5/sles/12/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.sles12.x86_64.rpm',
60
- 'pkg/mac/puppet5/10.15/x86_64/puppet-agent-1.4.1.2904.g8023dd1-1.osx10.15.dmg',
61
- 'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix',
62
- 'pkg/eos/puppet5/4/i386/puppet-agent-1.4.1.2904.g8023dd1-1.eos4.i386.swix.asc',
63
- 'pkg/windows/puppet5/puppet-agent-1.4.1.2904.g8023dd1-x86.msi',
64
- ]
45
+ # Sample data for #reorganize_packages and #ship_pkgs specs
46
+ retrieved_packages = %w[
47
+ pkg/deb/bionic/puppet6/puppet-agent_6.19.0-1bionic_amd64.deb
48
+ pkg/el/7/puppet6/aarch64/puppet-agent-6.19.0-1.el7.aarch64.rpm
49
+ pkg/el/7/puppet6/ppc64le/puppet-agent-6.19.0-1.el7.ppc64le.rpm
50
+ pkg/el/7/puppet6/x86_64/puppet-agent-6.19.0-1.el7.x86_64.rpm
51
+ pkg/sles/12/puppet6/ppc64le/puppet-agent-6.19.0-1.sles12.ppc64le.rpm
52
+ pkg/sles/12/puppet6/x86_64/puppet-agent-6.19.0-1.sles12.x86_64.rpm
53
+ pkg/sles/15/puppet6/x86_64/puppet-agent-6.19.0-1.sles15.x86_64.rpm
54
+ pkg/apple/10.14/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.14.dmg
55
+ pkg/apple/10.15/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg
56
+ pkg/fedora/32/puppet6/x86_64/puppet-agent-6.19.0-1.fc32.x86_64.rpm
57
+ pkg/windows/puppet-agent-6.19.0-x64.msi
58
+ pkg/windows/puppet-agent-6.19.0-x86.msi
59
+ pkg/windowsfips/puppet-agent-6.19.0-x64.msi
60
+ pkg/windows/puppet6/puppet-agent-x86.msi
61
+ pkg/windowsfips/puppet6/puppet-agent-x64.msi
62
+ ]
63
+
64
+ # After reorganization, the packages should look like this.
65
+ # Beware apple->mac transforms.
66
+ expected_reorganized_packages = %w[
67
+ pkg/bionic/puppet6/puppet-agent_6.19.0-1bionic_amd64.deb
68
+ pkg/puppet6/el/7/aarch64/puppet-agent-6.19.0-1.el7.aarch64.rpm
69
+ pkg/puppet6/el/7/ppc64le/puppet-agent-6.19.0-1.el7.ppc64le.rpm
70
+ pkg/puppet6/el/7/x86_64/puppet-agent-6.19.0-1.el7.x86_64.rpm
71
+ pkg/puppet6/sles/12/ppc64le/puppet-agent-6.19.0-1.sles12.ppc64le.rpm
72
+ pkg/puppet6/sles/12/x86_64/puppet-agent-6.19.0-1.sles12.x86_64.rpm
73
+ pkg/puppet6/sles/15/x86_64/puppet-agent-6.19.0-1.sles15.x86_64.rpm
74
+ pkg/mac/puppet6/10.14/x86_64/puppet-agent-6.19.0-1.osx10.14.dmg
75
+ pkg/mac/puppet6/10.15/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg
76
+ pkg/puppet6/fedora/32/x86_64/puppet-agent-6.19.0-1.fc32.x86_64.rpm
77
+ pkg/windows/puppet6/puppet-agent-6.19.0-x64.msi
78
+ pkg/windows/puppet6/puppet-agent-6.19.0-x86.msi
79
+ pkg/windowsfips/puppet6/puppet-agent-6.19.0-x64.msi
80
+ pkg/windows/puppet6/puppet-agent-x86.msi
81
+ pkg/windowsfips/puppet6/puppet-agent-x64.msi
82
+ ]
65
83
 
66
84
  describe '#reorganize_packages' do
67
- tmpdir = Dir.mktmpdir
85
+ # This is a sampling of packages found on builds.delivery.puppetlabs.net in
86
+ # '/opt/jenkins-builds/puppet-agent/<version>/artifacts'
87
+ # pl:jenkins:retrieve replaces 'artifacts' with 'pkg', so we pick up the
88
+ # action from that point by pretending that we've scanned the directory and
89
+ # made this list:
90
+
91
+ scratch_directory = Dir.mktmpdir
68
92
 
69
93
  before :each do
70
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
71
- expect(FileUtils).to receive(:cp).at_least(:once)
94
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
95
+ expect(FileUtils).to receive(:cp).at_least(:once).and_return(true)
72
96
  end
73
97
 
74
- it 'makes a temporary directory' do
75
- expect(FileUtils).to receive(:mkdir_p).at_least(:once)
76
- Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)
77
- end
98
+ original_packages = retrieved_packages
78
99
 
79
100
  it 'leaves the old packages in place' do
80
- orig = local_pkgs
81
- Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)
82
- expect(local_pkgs).to eq(orig)
101
+ reorganized_packages = Pkg::Util::Ship
102
+ .reorganize_packages(retrieved_packages, scratch_directory)
103
+
104
+ expect(retrieved_packages).to eq(original_packages)
83
105
  end
84
106
 
85
- it 'returns a list of packages that do not have the temp dir in the path' do
86
- expect(Pkg::Util::Ship.reorganize_packages(local_pkgs, tmpdir)).to eq(new_pkgs)
107
+ it 'returns a list of properly reorganized packages' do
108
+ reorganized_packages = Pkg::Util::Ship
109
+ .reorganize_packages(retrieved_packages, scratch_directory)
110
+ expect(reorganized_packages).to eq(expected_reorganized_packages)
87
111
  end
88
112
  end
89
113
 
@@ -92,38 +116,84 @@ new_pkgs = [
92
116
  test_remote_path = '/opt/repository/yum'
93
117
 
94
118
  it 'ships the packages to the staging server' do
95
- allow(Pkg::Util::Ship).to receive(:collect_packages).and_return(local_pkgs)
96
- allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return(new_pkgs)
119
+ allow(Pkg::Util::Ship)
120
+ .to receive(:collect_packages)
121
+ .and_return(retrieved_packages)
122
+ allow(Pkg::Util::Ship)
123
+ .to receive(:reorganize_packages)
124
+ .and_return(expected_reorganized_packages)
97
125
  allow(Pkg::Util).to receive(:ask_yes_or_no).and_return(true)
98
126
  # All of these expects must be called in the same block in order for the
99
127
  # tests to work without actually shipping anything
100
- expect(Pkg::Util::Net).to receive(:remote_ssh_cmd).with(test_staging_server, /#{test_remote_path}/).exactly(local_pkgs.count).times
101
- expect(Pkg::Util::Net).to receive(:rsync_to).with(anything, test_staging_server, /#{test_remote_path}/, anything).exactly(local_pkgs.count).times
102
- expect(Pkg::Util::Net).to receive(:remote_set_ownership).with(test_staging_server, 'root', 'release', anything).exactly(local_pkgs.count).times
103
- expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '775', anything).exactly(local_pkgs.count).times
104
- expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '0664', anything).exactly(local_pkgs.count).times
105
- expect(Pkg::Util::Net).to receive(:remote_set_immutable).with(test_staging_server, anything).exactly(local_pkgs.count).times
106
- expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path)).to eq(true)
128
+ expect(Pkg::Util::Net)
129
+ .to receive(:remote_ssh_cmd)
130
+ .with(test_staging_server, /#{test_remote_path}/)
131
+ .exactly(retrieved_packages.count).times
132
+ expect(Pkg::Util::Net)
133
+ .to receive(:rsync_to)
134
+ .with(anything, test_staging_server, /#{test_remote_path}/, anything)
135
+ .exactly(retrieved_packages.count).times
136
+ expect(Pkg::Util::Net)
137
+ .to receive(:remote_set_ownership)
138
+ .with(test_staging_server, 'root', 'release', anything)
139
+ .exactly(retrieved_packages.count).times
140
+ expect(Pkg::Util::Net)
141
+ .to receive(:remote_set_permissions)
142
+ .with(test_staging_server, '775', anything)
143
+ .exactly(retrieved_packages.count).times
144
+ expect(Pkg::Util::Net)
145
+ .to receive(:remote_set_permissions)
146
+ .with(test_staging_server, '0664', anything)
147
+ .exactly(retrieved_packages.count).times
148
+ expect(Pkg::Util::Net)
149
+ .to receive(:remote_set_immutable)
150
+ .with(test_staging_server, anything)
151
+ .exactly(retrieved_packages.count).times
152
+ expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path))
153
+ .to eq(true)
107
154
  end
108
155
 
109
156
  it 'ships packages containing the string `pkg` to the right place' do
110
- allow(Pkg::Util::Ship).to receive(:collect_packages).and_return(['pkg/el/5/puppet5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm' ])
111
- allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return(['pkg/puppet5/el/5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm'])
157
+ retrieved_package = 'pkg/el/7/puppet6/x86_64/puppet-agent-6.19.0-1.el7.x86_64.rpm'
158
+ reorganized_package = 'pkg/puppet6/el/7/x86_64/puppet-agent-6.19.0-1.el7.x86_64.rpm'
159
+ package_basename = File.basename(reorganized_package)
160
+ repository_base_path = '/opt/repository/yum/puppet6/el/7/x86_64'
161
+
162
+ allow(Pkg::Util::Ship).to receive(:collect_packages).and_return([retrieved_package])
163
+ allow(Pkg::Util::Ship).to receive(:reorganize_packages).and_return([reorganized_package])
112
164
  allow(Pkg::Util).to receive(:ask_yes_or_no).and_return(true)
113
165
  allow(Dir).to receive(:mktmpdir).and_return('/tmp/test')
166
+
114
167
  # All of these expects must be called in the same block in order for the
115
168
  # tests to work without actually shipping anything
116
- expect(Pkg::Util::Net).to receive(:remote_ssh_cmd).with(test_staging_server, /#{test_remote_path}/)
117
- expect(Pkg::Util::Net).to receive(:rsync_to).with(anything, test_staging_server, /#{test_remote_path}/, anything)
118
- expect(Pkg::Util::Net).to receive(:remote_set_ownership).with(test_staging_server, 'root', 'release', ['/opt/repository/yum/puppet5/el/5/x86_64', '/opt/repository/yum/puppet5/el/5/x86_64/my-super-sweet-pkg-1.0.0-1.el5.x86_64.rpm'])
119
- expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '775', anything)
120
- expect(Pkg::Util::Net).to receive(:remote_set_permissions).with(test_staging_server, '0664', anything)
121
- expect(Pkg::Util::Net).to receive(:remote_set_immutable).with(test_staging_server, anything)
122
- expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server, test_remote_path, excludes: ['puppet-agent'])).to eq(true)
169
+ expect(Pkg::Util::Net)
170
+ .to receive(:remote_ssh_cmd)
171
+ .with(test_staging_server, /#{test_remote_path}/)
172
+ expect(Pkg::Util::Net)
173
+ .to receive(:rsync_to)
174
+ .with(anything, test_staging_server, /#{test_remote_path}/, anything)
175
+ expect(Pkg::Util::Net)
176
+ .to receive(:remote_set_ownership)
177
+ .with(test_staging_server, 'root', 'release',
178
+ [repository_base_path, "#{repository_base_path}/#{package_basename}"])
179
+ expect(Pkg::Util::Net)
180
+ .to receive(:remote_set_permissions)
181
+ .with(test_staging_server, '775', anything)
182
+ expect(Pkg::Util::Net)
183
+ .to receive(:remote_set_permissions)
184
+ .with(test_staging_server, '0664', anything)
185
+ expect(Pkg::Util::Net)
186
+ .to receive(:remote_set_immutable)
187
+ .with(test_staging_server, anything)
188
+ expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.rpm'], test_staging_server,
189
+ test_remote_path, excludes: ['puppet-agent']))
190
+ .to eq(true)
123
191
  end
124
192
 
125
193
  it 'returns false if there are no packages to ship' do
126
- expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.msi'], test_staging_server, test_remote_path)).to eq(false)
194
+ expect(Pkg::Util::Ship.ship_pkgs(['pkg/**/*.msi'],
195
+ test_staging_server, test_remote_path))
196
+ .to eq(false)
127
197
  end
128
198
  end
129
199
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.99.70
4
+ version: 0.99.75
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-01 00:00:00.000000000 Z
11
+ date: 2020-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -259,28 +259,28 @@ signing_key:
259
259
  specification_version: 4
260
260
  summary: Puppet Labs' packaging automation
261
261
  test_files:
262
- - spec/lib/packaging/artifactory_spec.rb
263
- - spec/lib/packaging/sign_spec.rb
264
- - spec/lib/packaging/platforms_spec.rb
262
+ - spec/lib/packaging_spec.rb
265
263
  - spec/lib/packaging/rpm/repo_spec.rb
266
- - spec/lib/packaging/repo_spec.rb
267
- - spec/lib/packaging/config_spec.rb
268
- - spec/lib/packaging/gem_spec.rb
269
- - spec/lib/packaging/util/execution_spec.rb
264
+ - spec/lib/packaging/paths_spec.rb
265
+ - spec/lib/packaging/deb/repo_spec.rb
270
266
  - spec/lib/packaging/util/gpg_spec.rb
267
+ - spec/lib/packaging/util/os_spec.rb
268
+ - spec/lib/packaging/util/file_spec.rb
269
+ - spec/lib/packaging/util/ship_spec.rb
271
270
  - spec/lib/packaging/util/git_spec.rb
272
- - spec/lib/packaging/util/jenkins_spec.rb
273
- - spec/lib/packaging/util/rake_utils_spec.rb
274
- - spec/lib/packaging/util/net_spec.rb
275
- - spec/lib/packaging/util/git_tag_spec.rb
271
+ - spec/lib/packaging/util/execution_spec.rb
276
272
  - spec/lib/packaging/util/misc_spec.rb
277
- - spec/lib/packaging/util/ship_spec.rb
278
- - spec/lib/packaging/util/file_spec.rb
273
+ - spec/lib/packaging/util/rake_utils_spec.rb
279
274
  - spec/lib/packaging/util/version_spec.rb
280
- - spec/lib/packaging/util/os_spec.rb
281
- - spec/lib/packaging/paths_spec.rb
275
+ - spec/lib/packaging/util/git_tag_spec.rb
276
+ - spec/lib/packaging/util/jenkins_spec.rb
277
+ - spec/lib/packaging/util/net_spec.rb
282
278
  - spec/lib/packaging/deb_spec.rb
283
- - spec/lib/packaging/retrieve_spec.rb
279
+ - spec/lib/packaging/config_spec.rb
280
+ - spec/lib/packaging/artifactory_spec.rb
281
+ - spec/lib/packaging/gem_spec.rb
284
282
  - spec/lib/packaging/tar_spec.rb
285
- - spec/lib/packaging/deb/repo_spec.rb
286
- - spec/lib/packaging_spec.rb
283
+ - spec/lib/packaging/sign_spec.rb
284
+ - spec/lib/packaging/repo_spec.rb
285
+ - spec/lib/packaging/platforms_spec.rb
286
+ - spec/lib/packaging/retrieve_spec.rb