packaging 0.88.77 → 0.99.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +128 -74
  3. data/lib/packaging/artifactory.rb +60 -433
  4. data/lib/packaging/config/params.rb +7 -28
  5. data/lib/packaging/config.rb +50 -150
  6. data/lib/packaging/deb/repo.rb +19 -20
  7. data/lib/packaging/gem.rb +83 -41
  8. data/lib/packaging/ips.rb +57 -0
  9. data/lib/packaging/msi.rb +89 -0
  10. data/lib/packaging/nuget.rb +1 -1
  11. data/lib/packaging/osx.rb +36 -0
  12. data/lib/packaging/paths.rb +87 -225
  13. data/lib/packaging/platforms.rb +416 -443
  14. data/lib/packaging/repo.rb +22 -122
  15. data/lib/packaging/retrieve.rb +7 -36
  16. data/lib/packaging/rpm/repo.rb +8 -5
  17. data/lib/packaging/tar.rb +0 -9
  18. data/lib/packaging/util/date.rb +0 -5
  19. data/lib/packaging/util/execution.rb +2 -2
  20. data/lib/packaging/util/git.rb +1 -1
  21. data/lib/packaging/util/gpg.rb +1 -5
  22. data/lib/packaging/util/net.rb +37 -79
  23. data/lib/packaging/util/rake_utils.rb +0 -1
  24. data/lib/packaging/util/ship.rb +13 -142
  25. data/lib/packaging/util/tool.rb +1 -1
  26. data/lib/packaging/util/version.rb +0 -8
  27. data/lib/packaging/util.rb +2 -2
  28. data/lib/packaging.rb +3 -3
  29. data/spec/fixtures/config/params.yaml +2 -0
  30. data/spec/lib/packaging/artifactory_spec.rb +16 -66
  31. data/spec/lib/packaging/config_spec.rb +29 -49
  32. data/spec/lib/packaging/deb/repo_spec.rb +7 -16
  33. data/spec/lib/packaging/paths_spec.rb +56 -321
  34. data/spec/lib/packaging/platforms_spec.rb +21 -46
  35. data/spec/lib/packaging/repo_spec.rb +40 -78
  36. data/spec/lib/packaging/retrieve_spec.rb +8 -47
  37. data/spec/lib/packaging/rpm/repo_spec.rb +4 -4
  38. data/spec/lib/packaging/tar_spec.rb +40 -34
  39. data/spec/lib/packaging/util/git_tag_spec.rb +1 -1
  40. data/spec/lib/packaging/util/gpg_spec.rb +1 -1
  41. data/spec/lib/packaging/util/net_spec.rb +15 -35
  42. data/spec/lib/packaging/util/ship_spec.rb +63 -145
  43. data/spec/spec_helper.rb +14 -0
  44. data/tasks/00_utils.rake +6 -4
  45. data/tasks/apple.rake +0 -2
  46. data/tasks/config.rake +0 -5
  47. data/tasks/education.rake +5 -5
  48. data/tasks/fetch.rake +14 -17
  49. data/tasks/gem.rake +121 -134
  50. data/tasks/jenkins.rake +7 -51
  51. data/tasks/nightly_repos.rake +69 -20
  52. data/tasks/pe_ship.rake +11 -16
  53. data/tasks/retrieve.rake +6 -13
  54. data/tasks/ship.rake +256 -196
  55. data/tasks/sign.rake +135 -63
  56. data/tasks/tar.rake +6 -0
  57. data/templates/packaging.xml.erb +7 -9
  58. data/templates/repo.xml.erb +3 -6
  59. metadata +27 -80
  60. data/lib/packaging/archive.rb +0 -126
  61. data/lib/packaging/artifactory/extensions.rb +0 -94
  62. data/lib/packaging/config/validations.rb +0 -13
  63. data/lib/packaging/metrics.rb +0 -15
  64. data/lib/packaging/sign/deb.rb +0 -9
  65. data/lib/packaging/sign/dmg.rb +0 -41
  66. data/lib/packaging/sign/ips.rb +0 -57
  67. data/lib/packaging/sign/msi.rb +0 -124
  68. data/lib/packaging/sign/rpm.rb +0 -115
  69. data/lib/packaging/sign.rb +0 -8
  70. data/spec/lib/packaging/gem_spec.rb +0 -86
  71. data/spec/lib/packaging/sign_spec.rb +0 -133
  72. data/tasks/archive.rake +0 -69
@@ -92,10 +92,10 @@ describe "Pkg::Deb::Repo" do
92
92
  Pkg::Repo.should_receive(:directories_that_contain_packages).and_return(pkg_directories)
93
93
  Pkg::Repo.should_receive(:populate_repo_directory)
94
94
  Pkg::Deb::Repo.should_receive(:repo_creation_command).and_return(command)
95
- Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, command)
95
+ Pkg::Util::Net.should_receive(:remote_ssh_cmd).with(Pkg::Config.distribution_server, command)
96
96
  Pkg::Deb::Repo.should_receive(:generate_repo_configs)
97
97
  Pkg::Deb::Repo.should_receive(:ship_repo_configs)
98
- Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, "rm -f #{artifact_directory}/repos/.lock" )
98
+ Pkg::Util::Net.should_receive(:remote_ssh_cmd).with(Pkg::Config.distribution_server, "rm -f #{artifact_directory}/repos/.lock" )
99
99
  Pkg::Deb::Repo.create_repos
100
100
  end
101
101
  end
@@ -114,8 +114,8 @@ describe "Pkg::Deb::Repo" do
114
114
  Pkg::Config.distribution_server = "a.host.that.wont.exist"
115
115
  repo_dir = "#{Pkg::Config.jenkins_repo_path}/#{Pkg::Config.project}/#{Pkg::Config.ref}/repo_configs/deb"
116
116
  Pkg::Util::File.should_receive(:empty_dir?).with("pkg/repo_configs/deb").and_return(false)
117
- Pkg::Util::RakeUtils.should_receive(:invoke_task).with("pl:fetch")
118
- Pkg::Util::Net.should_receive(:remote_execute).with(Pkg::Config.distribution_server, "mkdir -p #{repo_dir}")
117
+ Pkg::Deb::Repo.should_receive(:invoke_task).with("pl:fetch")
118
+ Pkg::Util::Net.should_receive(:remote_ssh_cmd).with(Pkg::Config.distribution_server, "mkdir -p #{repo_dir}")
119
119
  Pkg::Util::Execution.should_receive(:retry_on_fail).with(:times => 3)
120
120
  Pkg::Deb::Repo.ship_repo_configs
121
121
  end
@@ -128,21 +128,12 @@ describe "Pkg::Deb::Repo" do
128
128
  end
129
129
 
130
130
  it "makes a repo for each dist" do
131
- # stub out start_keychain to prevent actual keychain starts.
132
- Pkg::Util::Gpg.stub(:start_keychain)
133
-
134
131
  dists = cows.reject { |cow| cow.empty? }
135
132
  distfiles = {}
133
+ reprepro = "/bin/reprepro"
136
134
  Pkg::Util::File.should_receive(:directories).with("repos/apt").and_return(dists)
137
-
138
- # Let the keychain command happen if find_tool('keychain') finds it
139
- keychain_command = "/usr/bin/keychain -k mine"
140
- allow(Pkg::Util::Execution).to receive(:capture3) { keychain_command }
141
-
142
- # Enforce reprepro
143
- reprepro_command = "/bin/reprepro"
144
- Pkg::Util::Tool.should_receive(:check_tool).with("reprepro").and_return(reprepro_command)
145
- Pkg::Util::Execution.should_receive(:capture3).at_least(1).times.with("#{reprepro_command} -vvv --confdir ./conf --dbdir ./db --basedir ./ export")
135
+ Pkg::Util::Tool.should_receive(:check_tool).with("reprepro").and_return(reprepro)
136
+ Pkg::Util::Execution.should_receive(:capture3).at_least(1).times.with("#{reprepro} -vvv --confdir ./conf --dbdir ./db --basedir ./ export")
146
137
 
147
138
  dists.each do |dist|
148
139
  distfiles[dist] = double
@@ -3,38 +3,43 @@ require 'spec_helper'
3
3
  describe 'Pkg::Paths' do
4
4
  describe '#arch_from_artifact_path' do
5
5
  arch_transformations = {
6
- ['pkg/el-8-x86_64/puppet-agent-6.9.0-1.el8.x86_64.rpm', 'el', '8'] => 'x86_64',
7
- ['pkg/el/8/puppet6/aarch64/puppet-agent-6.5.0.3094.g16b6fa6f-1.el8.aarch64.rpm', 'el', '8'] => 'aarch64',
8
- ['artifacts/fedora/32/puppet6/x86_64/puppet-agent-6.9.0-1.fc30.x86_64.rpm', 'fedora', '32'] => 'x86_64',
9
- ['pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb', 'ubuntu', '16.04'] => 'amd64',
10
- ['artifacts/deb/focal/puppet6/puppet-agent_6.5.0.3094.g16b6fa6f-1focal_arm64.deb', 'ubuntu', '20.04'] => 'aarch64',
11
-
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',
12
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'] => 'i386',
10
+ ['pkg/ubuntu-16.04-amd64/puppet-agent_4.99.0-1xenial_amd64.deb', 'ubuntu', '16.04'] => 'amd64',
13
11
  ['artifacts/deb/jessie/PC1/puppetserver_5.0.1.master.orig.tar.gz', 'debian', '8'] => 'source',
14
12
  ['artifacts/el/6/PC1/SRPMS/puppetserver-5.0.1.master-0.1SNAPSHOT.2017.08.18T0951.el6.src.rpm', 'el', '6'] => 'SRPMS'
15
13
  }
16
14
  arch_transformations.each do |path_array, arch|
17
15
  it "should correctly return #{arch} for #{path_array[0]}" do
18
- expect(Pkg::Paths.arch_from_artifact_path(path_array[1], path_array[2], path_array[0]))
19
- .to eq(arch)
16
+ expect(Pkg::Paths.arch_from_artifact_path(path_array[1], path_array[2], path_array[0])).to eq(arch)
20
17
  end
21
18
  end
22
19
  end
23
20
 
24
21
  describe '#tag_from_artifact_path' do
25
22
  path_tranformations = {
26
- 'pkg/el-7-x86_64/puppet-agent-5.5.22-1.el8.x86_64.rpm' => 'el-7-x86_64',
27
- 'pkg/ubuntu-20.04-amd64/puppet-agent_5.5.22-1xenial_amd64.deb' => 'ubuntu-20.04-amd64',
28
- 'pkg/windows/puppet-agent-5.5.22-x86.msi' => 'windows-2012-x86',
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',
29
27
  'artifacts/el/6/products/x86_64/pe-r10k-2.5.4.3-1.el6.x86_64.rpm' => 'el-6-x86_64',
28
+ 'pkg/deb/trusty/pe-r10k_2.5.4.3-1trusty_amd64.deb' => 'ubuntu-14.04-amd64',
30
29
  'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.noarch.rpm' => 'el-6-i386',
31
- 'pkg/deb/bionic/pe-r10k_3.5.2.0-1bionic_amd64.deb' => 'ubuntu-18.04-amd64',
32
- 'pkg/deb/buster/pe-r10k_3.5.2.0-1buster_amd64.deb' => 'debian-10-amd64',
33
- 'pkg/pe/deb/bionic/pe-puppetserver_2019.8.2.32-1bionic_all.deb' => 'ubuntu-18.04-amd64',
34
- 'artifacts/deb/focal/puppet6/puppetdb_6.13.0-1focal_all.deb' => 'ubuntu-20.04-amd64',
35
- 'pkg/apple/10.15/puppet6/x86_64/puppet-agent-6.19.0-1.osx10.15.dmg' => 'osx-10.15-x86_64',
36
- 'pkg/apple/11/puppet6/x86_64/puppet-agent-6.19.0-1.osx11.dmg' => 'osx-11-x86_64',
30
+ 'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1_all.deb' => 'ubuntu-16.04-i386',
31
+ 'pkg/pe/deb/xenial/super-trusty-package_1.0.0-1puppet1_all.deb' => 'ubuntu-16.04-i386',
32
+ 'artifacts/deb/wheezy/PC1/puppetdb_4.3.1-1puppetlabs1_all.deb' => 'debian-7-i386',
33
+ 'pkg/el/7/PC1/x86_64/puppetdb-4.3.1-1.el7.noarch.rpm' => 'el-7-x86_64',
34
+ 'pkg/apple/10.11/PC1/x86_64/puppet-agent-1.9.0-1.osx10.11.dmg' => 'osx-10.11-x86_64',
35
+ 'artifacts/mac/10.11/PC1/x86_64/puppet-agent-1.9.0-1.osx10.11.dmg' => 'osx-10.11-x86_64',
36
+ 'artifacts/eos/4/PC1/i386/puppet-agent-1.9.0-1.eos4.i386.swix' => 'eos-4-i386',
37
+ 'pkg/deb/cumulus/puppet5/puppet-agent_1.4.1.2904.g8023dd1-1cumulus_amd64.deb' => 'cumulus-2.2-amd64',
37
38
  'pkg/windows/puppet-agent-1.9.0-x86.msi' => 'windows-2012-x86',
39
+ 'artifacts/ubuntu-16.04-i386/puppetserver_5.0.1-0.1SNAPSHOT.2017.07.27T2346puppetlabs1.debian.tar.gz' => 'ubuntu-16.04-source',
40
+ 'http://saturn.puppetlabs.net/deb_repos/1234abcd/repos/apt/xenial' => 'ubuntu-16.04-i386',
41
+ 'http://builds.puppetlabs.lan/puppet-agent/0ce4e6a0448366e01537323bbab77f834d7035c7/repos/el/6/PC1/x86_64/' => 'el-6-x86_64',
42
+ 'http://builds.puppetlabs.lan/puppet-agent/0ce4e6a0448366e01537323bbab77f834d7035c7/repos/el/6/PC1/x86_64/' => 'el-6-x86_64',
38
43
  'pkg/pe/rpm/el-6-i386/pe-puppetserver-2017.3.0.3-1.el6.src.rpm' => 'el-6-SRPMS',
39
44
  'pkg/pe/deb/xenial/pe-puppetserver_2017.3.0.3-1puppet1.orig.tar.gz' => 'ubuntu-16.04-source',
40
45
  'pkg/puppet-agent-5.1.0.79.g782e03c.gem' => nil,
@@ -59,105 +64,72 @@ describe 'Pkg::Paths' do
59
64
  end
60
65
 
61
66
  describe '#repo_name' do
62
- it 'should return repo_name for final version' do
63
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
64
- expect(Pkg::Paths.repo_name).to eq('puppet6')
65
- end
66
67
 
67
68
  it 'should return repo_name for final version' do
68
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
69
- expect(Pkg::Paths.repo_name).to eq('FUTURE-puppet7')
69
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
70
+ allow(Pkg::Util::Version).to receive(:final?).and_return(true)
71
+ expect(Pkg::Paths.repo_name).to eq('puppet5')
70
72
  end
71
73
 
72
74
  it 'should be empty string if repo_name is not set for final version' do
73
75
  allow(Pkg::Config).to receive(:repo_name).and_return(nil)
76
+ allow(Pkg::Util::Version).to receive(:final?).and_return(true)
74
77
  expect(Pkg::Paths.repo_name).to eq('')
75
78
  end
76
79
 
77
80
  it 'should return nonfinal_repo_name for non-final version' do
78
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet6-nightly')
79
- expect(Pkg::Paths.repo_name(true)).to eq('puppet6-nightly')
81
+ allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('puppet5-nightly')
82
+ allow(Pkg::Util::Version).to receive(:final?).and_return(false)
83
+ expect(Pkg::Paths.repo_name).to eq('puppet5-nightly')
80
84
  end
81
85
 
82
- 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('puppet6')
86
+ it 'should return repo_name if nonfinal_repo_name is not set for non-final version' do
87
+ allow(Pkg::Config).to receive(:repo_name).and_return('puppet5')
84
88
  allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
85
- expect { Pkg::Paths.repo_name(true) }.to raise_error
89
+ allow(Pkg::Util::Version).to receive(:final?).and_return(false)
90
+ expect(Pkg::Paths.repo_name).to eq('puppet5')
86
91
  end
87
92
  end
88
93
 
89
94
  describe '#artifacts_path' do
90
- context 'all puppet versions' do
91
- before :each do
92
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
93
- end
94
-
95
- it 'should work on all current platforms' do
96
- Pkg::Platforms.platform_tags.each do |tag|
97
- expect { Pkg::Paths.artifacts_path(tag) }.not_to raise_error
98
- end
99
- end
95
+ before :each do
96
+ allow(Pkg::Paths).to receive(:repo_name).and_return('puppet5')
100
97
  end
101
98
 
102
- context 'for puppet 6 and prior' do
103
- before :each do
104
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
105
- end
106
-
107
- it 'should be correct for el7' do
108
- expect(Pkg::Paths.artifacts_path('el-7-x86_64'))
109
- .to eq('artifacts/puppet6/el/7/x86_64')
110
- end
111
-
112
- it 'should be correct for bionic' do
113
- expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64'))
114
- .to eq('artifacts/bionic/puppet6')
115
- end
116
-
117
- it 'should be correct for solaris 11' do
118
- expect(Pkg::Paths.artifacts_path('solaris-11-sparc'))
119
- .to eq('artifacts/solaris/puppet6/11')
120
- end
99
+ it 'should be correct for el7' do
100
+ expect(Pkg::Paths.artifacts_path('el-7-x86_64')).to eq('artifacts/puppet5/el/7/x86_64')
101
+ end
121
102
 
122
- it 'should be correct for osx' do
123
- expect(Pkg::Paths.artifacts_path('osx-10.15-x86_64'))
124
- .to eq('artifacts/mac/puppet6/10.15/x86_64')
125
- end
103
+ it 'should be correct for trusty' do
104
+ expect(Pkg::Paths.artifacts_path('ubuntu-14.04-amd64')).to eq('artifacts/trusty/puppet5')
105
+ end
126
106
 
127
- it 'should be correct for osx11' do
128
- expect(Pkg::Paths.artifacts_path('osx-11-x86_64'))
129
- .to eq('artifacts/mac/puppet6/11/x86_64')
130
- end
107
+ it 'should be correct for solaris 11' do
108
+ expect(Pkg::Paths.artifacts_path('solaris-11-sparc')).to eq('artifacts/solaris/puppet5/11')
109
+ end
131
110
 
132
- it 'should be correct for windows' do
133
- expect(Pkg::Paths.artifacts_path('windows-2012-x64'))
134
- .to eq('artifacts/windows/puppet6')
135
- end
111
+ it 'should be correct for osx' do
112
+ expect(Pkg::Paths.artifacts_path('osx-10.10-x86_64')).to eq('artifacts/mac/puppet5/10.10/x86_64')
136
113
  end
137
114
 
138
- context 'after puppet 7 apt changes' do
139
- before :each do
140
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
141
- end
115
+ it 'should be correct for windows' do
116
+ expect(Pkg::Paths.artifacts_path('windows-2012-x64')).to eq('artifacts/windows/puppet5')
117
+ end
142
118
 
143
- it 'should be correct for bionic' do
144
- expect(Pkg::Paths.artifacts_path('ubuntu-18.04-amd64'))
145
- .to eq('artifacts/FUTURE-puppet7/bionic')
146
- end
147
- it 'should be correct for focal' do
148
- expect(Pkg::Paths.artifacts_path('ubuntu-20.04-amd64'))
149
- .to eq('artifacts/FUTURE-puppet7/focal')
119
+ it 'should work on all current platforms' do
120
+ Pkg::Platforms.platform_tags.each do |tag|
121
+ expect { Pkg::Paths.artifacts_path(tag) }.not_to raise_error
150
122
  end
151
123
  end
152
124
  end
153
125
 
154
126
  describe '#repo_path' do
155
127
  before :each do
156
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
128
+ allow(Pkg::Paths).to receive(:repo_name).and_return('puppet5')
157
129
  end
158
130
 
159
131
  it 'should be correct' do
160
- expect(Pkg::Paths.repo_path('el-7-x86_64')).to eq('repos/puppet6/el/7/x86_64')
132
+ expect(Pkg::Paths.repo_path('el-7-x86_64')).to eq('repos/puppet5/el/7/x86_64')
161
133
  end
162
134
 
163
135
  it 'should work on all current platforms' do
@@ -168,16 +140,8 @@ describe 'Pkg::Paths' do
168
140
  end
169
141
 
170
142
  describe '#repo_config_path' do
171
- it 'should construct rpm/deb-specific repo configs' do
172
- expect(Pkg::Paths.repo_config_path('el-7-x86_64'))
173
- .to eq('repo_configs/rpm/*el-7-x86_64*.repo')
174
- expect(Pkg::Paths.repo_config_path('ubuntu-18.04-amd64'))
175
- .to eq('repo_configs/deb/*bionic*.list')
176
- end
177
-
178
- it 'should raise a RuntimeError with unfamilar repo configs' do
179
- expect { Pkg::Paths.repo_config_path('bogus') }
180
- .to raise_error(/Could not verify that 'bogus' is a valid tag/)
143
+ it 'should be correct' do
144
+ expect(Pkg::Paths.repo_config_path('el-7-x86_64')).to eq('repo_configs/rpm/*el-7-x86_64*.repo')
181
145
  end
182
146
 
183
147
  it 'should work on all current platforms' do
@@ -186,233 +150,4 @@ describe 'Pkg::Paths' do
186
150
  end
187
151
  end
188
152
  end
189
-
190
- describe '#apt_repo_name' do
191
- it 'should return `Pkg::Config.repo_name` if set' do
192
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
193
- allow(Pkg::Config).to receive(:apt_repo_name).and_return('stuff')
194
- expect(Pkg::Paths.apt_repo_name).to eq('puppet6')
195
- end
196
-
197
- it 'should return `Pkg::Config.apt_repo_name` if `Pkg::Config.repo_name` is not set' do
198
- allow(Pkg::Config).to receive(:repo_name).and_return(nil)
199
- allow(Pkg::Config).to receive(:apt_repo_name).and_return('puppet6')
200
- expect(Pkg::Paths.apt_repo_name).to eq('puppet6')
201
- end
202
-
203
- it 'should return \'main\' if nothing is set' do
204
- allow(Pkg::Config).to receive(:repo_name).and_return(nil)
205
- allow(Pkg::Config).to receive(:apt_repo_name).and_return(nil)
206
- expect(Pkg::Paths.apt_repo_name).to eq('main')
207
- end
208
-
209
- it 'should return nonfinal_repo_name for nonfinal version' do
210
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
211
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
212
- expect(Pkg::Paths.apt_repo_name(true)).to eq('FUTURE-puppet7-nightly')
213
- end
214
-
215
- it 'should fail if nonfinal_repo_name is not set for non-final version' do
216
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
217
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
218
- expect { Pkg::Paths.apt_repo_name(true) }.to raise_error
219
- end
220
- end
221
-
222
- describe '#yum_repo_name' do
223
- it 'should return `Pkg::Config.repo_name` if set' do
224
- allow(Pkg::Config).to receive(:repo_name).and_return('puppet6')
225
- allow(Pkg::Config).to receive(:yum_repo_name).and_return('stuff')
226
- expect(Pkg::Paths.yum_repo_name).to eq('puppet6')
227
- end
228
-
229
- it 'should return `Pkg::Config.yum_repo_name` if `Pkg::Config.repo_name` is not set' do
230
- allow(Pkg::Config).to receive(:repo_name).and_return(nil)
231
- allow(Pkg::Config).to receive(:yum_repo_name).and_return('FUTURE-puppet7')
232
- expect(Pkg::Paths.yum_repo_name).to eq('FUTURE-puppet7')
233
- end
234
-
235
- it 'should return \'products\' if nothing is set' do
236
- allow(Pkg::Config).to receive(:repo_name).and_return(nil)
237
- allow(Pkg::Config).to receive(:yum_repo_name).and_return(nil)
238
- expect(Pkg::Paths.yum_repo_name).to eq('products')
239
- end
240
-
241
- it 'should return nonfinal_repo_name for nonfinal version' do
242
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
243
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return('FUTURE-puppet7-nightly')
244
- expect(Pkg::Paths.yum_repo_name(true)).to eq('FUTURE-puppet7-nightly')
245
- end
246
-
247
- it 'should fail if nonfinal_repo_name is not set for non-final version' do
248
- allow(Pkg::Config).to receive(:repo_name).and_return('FUTURE-puppet7')
249
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nil)
250
- expect { Pkg::Paths.yum_repo_name(true) }.to raise_error
251
- end
252
- end
253
-
254
- describe '#remote_repo_base' do
255
- fake_yum_repo_path = '/fake/yum'
256
- fake_yum_nightly_repo_path = '/fake/yum-nightly'
257
- fake_apt_repo_path = '/fake/apt'
258
- fake_apt_nightly_repo_path = '/fake/apt-nightly'
259
-
260
- before :each do
261
- allow(Pkg::Config).to receive(:yum_repo_path).and_return(fake_yum_repo_path)
262
- allow(Pkg::Config).to receive(:apt_repo_path).and_return(fake_apt_repo_path)
263
- allow(Pkg::Config).to receive(:dmg_path).and_return('/opt/downloads/mac')
264
- allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(fake_yum_nightly_repo_path)
265
- allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(fake_apt_nightly_repo_path)
266
- end
267
- it 'returns yum_repo_path for rpms' do
268
- expect(Pkg::Paths.remote_repo_base('el-7-x86_64'))
269
- .to eq(fake_yum_repo_path)
270
- end
271
- it 'returns apt_repo_path for debs' do
272
- expect(Pkg::Paths.remote_repo_base('ubuntu-18.04-amd64'))
273
- .to eq(fake_apt_repo_path)
274
- end
275
- it 'returns nonfinal_yum_repo_path for nonfinal rpms' do
276
- expect(Pkg::Paths.remote_repo_base('fedora-31-x86_64', nonfinal: true))
277
- .to eq(fake_yum_nightly_repo_path)
278
- end
279
- it 'returns nonfinal_apt_repo_path for nonfinal debs' do
280
- expect(Pkg::Paths.remote_repo_base('debian-9-amd64', nonfinal: true))
281
- .to eq(fake_apt_nightly_repo_path)
282
- end
283
- it 'fails if neither tag nor package_format is provided' do
284
- expect { Pkg::Paths.remote_repo_base }
285
- .to raise_error(/Pkg::Paths.remote_repo_base must have/)
286
- end
287
-
288
- it 'returns /opt/downloads if the path is /opt/downloads/<something>' do
289
- expect(Pkg::Paths.remote_repo_base(package_format: 'dmg')).to eq('/opt/downloads')
290
- end
291
-
292
- it 'fails for all other package formats' do
293
- expect { Pkg::Paths.remote_repo_base('solaris-11-i386') }
294
- .to raise_error(/Can't determine remote repo base path/)
295
- end
296
- end
297
-
298
- describe '#apt_package_base_path' do
299
- it 'fails for non-debian platforms' do
300
- expect { Pkg::Paths.apt_package_base_path('el-7-x86_64', 'puppet6', 'puppet-agent') }
301
- .to raise_error(/Can't determine path for non-debian platform/)
302
- end
303
-
304
- context 'for puppet 6 and prior' do
305
- it 'returns the approprate apt repo path' do
306
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
307
- expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6', 'puppet-agent'))
308
- .to eq('/opt/repository/apt/pool/bionic/puppet6/p/puppet-agent')
309
- expect(Pkg::Paths.apt_package_base_path('debian-9-amd64', 'puppet6', 'bolt-server'))
310
- .to eq('/opt/repository/apt/pool/stretch/puppet6/b/bolt-server')
311
-
312
-
313
- end
314
- it 'returns the appropriate nonfinal repo path' do
315
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
316
- expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'puppet6-nightly',
317
- 'puppet-agent', true))
318
- .to eq('/opt/repository-nightlies/apt/pool/bionic/puppet6-nightly/p/puppet-agent')
319
- expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'puppet6-nightly',
320
- 'pdk', true))
321
- .to eq('/opt/repository-nightlies/apt/pool/buster/puppet6-nightly/p/pdk')
322
- end
323
- end
324
-
325
- context 'for puppet 7 and after' do
326
- it 'returns the approprate apt repo path' do
327
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository/apt')
328
- expect(Pkg::Paths.apt_package_base_path('ubuntu-18.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
329
- .to eq('/opt/repository/apt/FUTURE-puppet7/pool/bionic/p/puppet-agent')
330
- expect(Pkg::Paths.apt_package_base_path('ubuntu-20.04-amd64', 'FUTURE-puppet7', 'puppet-agent'))
331
- .to eq('/opt/repository/apt/FUTURE-puppet7/pool/focal/p/puppet-agent')
332
- end
333
- it 'returns the appropriate nonfinal repo path' do
334
- allow(Pkg::Paths).to receive(:remote_repo_base).and_return('/opt/repository-nightlies/apt')
335
- expect(Pkg::Paths.apt_package_base_path('debian-10-amd64', 'FUTURE-puppet7-nightly', 'pdk', true))
336
- .to eq('/opt/repository-nightlies/apt/FUTURE-puppet7-nightly/pool/buster/p/pdk')
337
- end
338
- end
339
- end
340
-
341
- describe '#release_package_link_path' do
342
- context 'for puppet 6' do
343
- repo_name = 'puppet6'
344
- nonfinal_repo_name = 'puppet6-nightly'
345
- yum_repo_path = '/opt/repository/yum'
346
- apt_repo_path = '/opt/repository/apt'
347
- nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
348
- nonfinal_apt_repo_path = '/opt/repository-nightlies/apt'
349
- before :each do
350
- allow(Pkg::Config).to receive(:repo_name).and_return(repo_name)
351
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nonfinal_repo_name)
352
- allow(Pkg::Config).to receive(:yum_repo_path).and_return(yum_repo_path)
353
- allow(Pkg::Config).to receive(:apt_repo_path).and_return(apt_repo_path)
354
- allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(nonfinal_yum_repo_path)
355
- allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(nonfinal_apt_repo_path)
356
- end
357
- it 'returns the appropriate link path for rpm release packages' do
358
- expect(Pkg::Paths.release_package_link_path('sles-12-ppc64le'))
359
- .to eq("#{yum_repo_path}/#{repo_name}-release-sles-12.noarch.rpm")
360
- end
361
- it 'returns the appropriate link path for deb release packages' do
362
- expect(Pkg::Paths.release_package_link_path('ubuntu-16.04-amd64'))
363
- .to eq("#{apt_repo_path}/#{repo_name}-release-xenial.deb")
364
- end
365
- it 'returns the appropriate link path for nonfinal rpm release packages' do
366
- expect(Pkg::Paths.release_package_link_path('el-7-x86_64', true))
367
- .to eq("#{nonfinal_yum_repo_path}/#{nonfinal_repo_name}-release-el-7.noarch.rpm")
368
- end
369
- it 'returns the appropriate link path for nonfinal deb release packages' do
370
- expect(Pkg::Paths.release_package_link_path('debian-9-i386', true))
371
- .to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-stretch.deb")
372
- end
373
- it 'returns nil for package formats that do not have release packages' do
374
- expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
375
- expect(Pkg::Paths.release_package_link_path('osx-11-x86_64')).to eq(nil)
376
- expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
377
- end
378
- end
379
-
380
- context 'for puppet 7' do
381
- repo_name = 'FUTURE-puppet7'
382
- nonfinal_repo_name = 'FUTURE-puppet7-nightly'
383
- yum_repo_path = '/opt/repository/yum'
384
- apt_repo_path = '/opt/repository/apt'
385
- nonfinal_yum_repo_path = '/opt/repository-nightlies/yum'
386
- nonfinal_apt_repo_path = '/opt/repository-nightlies/apt'
387
- before :each do
388
- allow(Pkg::Config).to receive(:repo_name).and_return(repo_name)
389
- allow(Pkg::Config).to receive(:nonfinal_repo_name).and_return(nonfinal_repo_name)
390
- allow(Pkg::Config).to receive(:yum_repo_path).and_return(yum_repo_path)
391
- allow(Pkg::Config).to receive(:apt_repo_path).and_return(apt_repo_path)
392
- allow(Pkg::Config).to receive(:nonfinal_yum_repo_path).and_return(nonfinal_yum_repo_path)
393
- allow(Pkg::Config).to receive(:nonfinal_apt_repo_path).and_return(nonfinal_apt_repo_path)
394
- end
395
- it 'returns the appropriate link path for rpm release packages' do
396
- expect(Pkg::Paths.release_package_link_path('sles-12-ppc64le'))
397
- .to eq("#{yum_repo_path}/#{repo_name}-release-sles-12.noarch.rpm")
398
- end
399
- it 'returns the appropriate link path for deb release packages' do
400
- expect(Pkg::Paths.release_package_link_path('ubuntu-20.04-amd64'))
401
- .to eq("#{apt_repo_path}/#{repo_name}-release-focal.deb")
402
- end
403
- it 'returns the appropriate link path for nonfinal rpm release packages' do
404
- expect(Pkg::Paths.release_package_link_path('el-8-x86_64', true))
405
- .to eq("#{nonfinal_yum_repo_path}/#{nonfinal_repo_name}-release-el-8.noarch.rpm")
406
- end
407
- it 'returns the appropriate link path for nonfinal deb release packages' do
408
- expect(Pkg::Paths.release_package_link_path('debian-10-i386', true))
409
- .to eq("#{nonfinal_apt_repo_path}/#{nonfinal_repo_name}-release-buster.deb")
410
- end
411
- it 'returns nil for package formats that do not have release packages' do
412
- expect(Pkg::Paths.release_package_link_path('osx-10.15-x86_64')).to eq(nil)
413
- expect(Pkg::Paths.release_package_link_path('osx-11-x86_64')).to eq(nil)
414
- expect(Pkg::Paths.release_package_link_path('windows-2012-x86')).to eq(nil)
415
- end
416
- end
417
- end
418
153
  end