omnibus 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -0
  3. data/.travis.yml +1 -0
  4. data/CHANGELOG.md +26 -0
  5. data/Gemfile +3 -0
  6. data/MAINTAINERS.md +1 -0
  7. data/appveyor.yml +1 -1
  8. data/bin/omnibus +5 -0
  9. data/lib/omnibus/builder.rb +165 -26
  10. data/lib/omnibus/digestable.rb +4 -2
  11. data/lib/omnibus/fetcher.rb +18 -5
  12. data/lib/omnibus/fetchers/git_fetcher.rb +38 -22
  13. data/lib/omnibus/fetchers/net_fetcher.rb +106 -37
  14. data/lib/omnibus/fetchers/path_fetcher.rb +13 -12
  15. data/lib/omnibus/file_syncer.rb +33 -14
  16. data/lib/omnibus/generator_files/README.md.erb +1 -1
  17. data/lib/omnibus/generator_files/package_scripts/postinst.erb +3 -3
  18. data/lib/omnibus/generator_files/package_scripts/postrm.erb +1 -1
  19. data/lib/omnibus/generator_files/package_scripts/preinst.erb +1 -1
  20. data/lib/omnibus/generator_files/package_scripts/prerm.erb +3 -3
  21. data/lib/omnibus/git_cache.rb +20 -7
  22. data/lib/omnibus/health_check.rb +144 -12
  23. data/lib/omnibus/packagers/bff.rb +57 -5
  24. data/lib/omnibus/packagers/deb.rb +2 -2
  25. data/lib/omnibus/packagers/pkg.rb +2 -2
  26. data/lib/omnibus/packagers/solaris.rb +18 -6
  27. data/lib/omnibus/project.rb +1 -1
  28. data/lib/omnibus/s3_cache.rb +8 -2
  29. data/lib/omnibus/software.rb +152 -18
  30. data/lib/omnibus/sugarable.rb +1 -5
  31. data/lib/omnibus/util.rb +1 -1
  32. data/lib/omnibus/version.rb +1 -1
  33. data/omnibus.gemspec +4 -1
  34. data/resources/bff/config.erb +7 -0
  35. data/resources/deb/md5sums.erb +1 -1
  36. data/spec/functional/builder_spec.rb +89 -2
  37. data/spec/functional/fetchers/git_fetcher_spec.rb +44 -37
  38. data/spec/functional/fetchers/net_fetcher_spec.rb +36 -5
  39. data/spec/functional/fetchers/path_fetcher_spec.rb +28 -28
  40. data/spec/unit/builder_spec.rb +143 -11
  41. data/spec/unit/fetchers/git_fetcher_spec.rb +23 -59
  42. data/spec/unit/fetchers/net_fetcher_spec.rb +151 -63
  43. data/spec/unit/fetchers/path_fetcher_spec.rb +4 -35
  44. data/spec/unit/git_cache_spec.rb +13 -14
  45. data/spec/unit/health_check_spec.rb +90 -0
  46. data/spec/unit/library_spec.rb +1 -1
  47. data/spec/unit/packagers/bff_spec.rb +126 -3
  48. data/spec/unit/packagers/deb_spec.rb +8 -3
  49. data/spec/unit/packagers/pkg_spec.rb +19 -19
  50. data/spec/unit/packagers/solaris_spec.rb +13 -1
  51. data/spec/unit/software_spec.rb +242 -38
  52. metadata +7 -6
  53. data/lib/omnibus/generator_files/package_scripts/makeselfinst.erb +0 -0
@@ -83,7 +83,7 @@ module Omnibus
83
83
  expect(FileUtils).to receive(:mkdir_p)
84
84
  .with(File.dirname(ipc.cache_path))
85
85
  expect(ipc).to receive(:shellout!)
86
- .with("git --git-dir=#{cache_path} init -q")
86
+ .with("git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} init -q")
87
87
  ipc.create_cache_path
88
88
  end
89
89
 
@@ -95,7 +95,6 @@ module Omnibus
95
95
  .with(File.dirname(ipc.cache_path))
96
96
  .and_return(true)
97
97
  expect(ipc).to_not receive(:shellout!)
98
- .with("git --git-dir=#{cache_path} init -q")
99
98
  ipc.create_cache_path
100
99
  end
101
100
  end
@@ -114,19 +113,19 @@ module Omnibus
114
113
  it 'adds all the changes to git removing git directories' do
115
114
  expect(ipc).to receive(:remove_git_dirs)
116
115
  expect(ipc).to receive(:shellout!)
117
- .with("git --git-dir=#{cache_path} --work-tree=#{install_dir} add -A -f")
116
+ .with("git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} add -A -f")
118
117
  ipc.incremental
119
118
  end
120
119
 
121
120
  it 'commits the backup for the software' do
122
121
  expect(ipc).to receive(:shellout!)
123
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} commit -q -m "Backup of #{ipc.tag}"))
122
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} commit -q -m "Backup of #{ipc.tag}"))
124
123
  ipc.incremental
125
124
  end
126
125
 
127
126
  it 'tags the software backup' do
128
127
  expect(ipc).to receive(:shellout!)
129
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} tag -f "#{ipc.tag}"))
128
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} tag -f "#{ipc.tag}"))
130
129
  ipc.incremental
131
130
  end
132
131
  end
@@ -165,11 +164,11 @@ module Omnibus
165
164
  end
166
165
 
167
166
  before(:each) do
168
- allow(ipc).to receive(:shellout)
169
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
167
+ allow(ipc).to receive(:shellout!)
168
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
170
169
  .and_return(tag_cmd)
171
170
  allow(ipc).to receive(:shellout!)
172
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
171
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
173
172
  allow(ipc).to receive(:create_cache_path)
174
173
  end
175
174
 
@@ -179,11 +178,11 @@ module Omnibus
179
178
  end
180
179
 
181
180
  it 'checks for a tag with the software and version, and if it finds it, checks it out' do
182
- expect(ipc).to receive(:shellout)
183
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
181
+ expect(ipc).to receive(:shellout!)
182
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
184
183
  .and_return(tag_cmd)
185
184
  expect(ipc).to receive(:shellout!)
186
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
185
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
187
186
  ipc.restore
188
187
  end
189
188
 
@@ -191,11 +190,11 @@ module Omnibus
191
190
  let(:git_tag_output) { "\n" }
192
191
 
193
192
  it 'does nothing' do
194
- expect(ipc).to receive(:shellout)
195
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
193
+ expect(ipc).to receive(:shellout!)
194
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} tag -l "#{ipc.tag}"))
196
195
  .and_return(tag_cmd)
197
196
  expect(ipc).to_not receive(:shellout!)
198
- .with(%Q(git --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
197
+ .with(%Q(git -c core.autocrlf=false --git-dir=#{cache_path} --work-tree=#{install_dir} checkout -f "#{ipc.tag}"))
199
198
  ipc.restore
200
199
  end
201
200
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'pedump'
2
3
 
3
4
  module Omnibus
4
5
  describe HealthCheck do
@@ -12,8 +13,93 @@ module Omnibus
12
13
  )
13
14
  end
14
15
 
16
+ def mkdump(base, size, x64 = false)
17
+ dump = double(PEdump)
18
+ pe = double(PEdump::PE,
19
+ x64?: x64,
20
+ ioh: double(x64 ? PEdump::IMAGE_OPTIONAL_HEADER64 : PEdump::IMAGE_OPTIONAL_HEADER32,
21
+ ImageBase: base,
22
+ SizeOfImage: size,
23
+ ),
24
+ )
25
+ expect(dump).to receive(:pe).and_return(pe)
26
+ dump
27
+ end
28
+
15
29
  subject { described_class.new(project) }
16
30
 
31
+ context 'on windows' do
32
+ before do
33
+ stub_ohai(platform: 'windows', version: '2012')
34
+ end
35
+
36
+ it 'will perform dll base relocation checks' do
37
+ stub_ohai(platform: 'windows', version: '2012')
38
+ expect(subject.relocation_checkable?).to be true
39
+ end
40
+
41
+ context 'when performing dll base relocation checks' do
42
+ let(:pmdumps) do
43
+ {
44
+ 'a' => mkdump(0x10000000, 0x00001000),
45
+ 'b/b' => mkdump(0x20000000, 0x00002000),
46
+ 'c/c/c' => mkdump(0x30000000, 0x00004000),
47
+ }
48
+ end
49
+
50
+ let(:search_dir) { "#{project.install_dir}/embedded/bin" }
51
+
52
+ before do
53
+ r = allow(Dir).to receive(:glob).with("#{search_dir}/*.dll")
54
+ pmdumps.each do |file, dump|
55
+ path = File.join(search_dir, file)
56
+ r.and_yield(path)
57
+ expect(File).to receive(:open).with(path, 'rb').and_yield(double(File))
58
+ expect(PEdump).to receive(:new).with(path).and_return(dump)
59
+ end
60
+ end
61
+
62
+ context 'when given non-overlapping dlls' do
63
+ it 'should always return true' do
64
+ expect(subject.run!).to eq(true)
65
+ end
66
+
67
+ it 'should not identify conflicts' do
68
+ expect(subject.relocation_check).to eq({})
69
+ end
70
+ end
71
+
72
+ context 'when presented with overlapping dlls' do
73
+ let(:pmdumps) do
74
+ {
75
+ 'a' => mkdump(0x10000000, 0x00001000),
76
+ 'b/b' => mkdump(0x10000500, 0x00002000),
77
+ 'c/c/c' => mkdump(0x30000000, 0x00004000),
78
+ }
79
+ end
80
+
81
+ it 'should always return true' do
82
+ expect(subject.run!).to eq(true)
83
+ end
84
+
85
+ it 'should identify two conflicts' do
86
+ expect(subject.relocation_check).to eq({
87
+ 'a' => {
88
+ base: 0x10000000,
89
+ size: 0x00001000,
90
+ conflicts: [ 'b' ],
91
+ },
92
+ 'b' => {
93
+ base: 0x10000500,
94
+ size: 0x00002000,
95
+ conflicts: [ 'a' ],
96
+ },
97
+ })
98
+ end
99
+ end
100
+ end
101
+ end
102
+
17
103
  context 'on linux' do
18
104
  before { stub_ohai(platform: 'ubuntu', version: '12.04') }
19
105
 
@@ -68,6 +154,10 @@ module Omnibus
68
154
 
69
155
  expect { subject.run! }.to_not raise_error
70
156
  end
157
+
158
+ it 'will not perform dll base relocation checks' do
159
+ expect(subject.relocation_checkable?).to be false
160
+ end
71
161
  end
72
162
  end
73
163
  end
@@ -8,7 +8,7 @@ module Omnibus
8
8
  def generate_software(name, version, dependencies = [])
9
9
  software = Software.new(project, "#{name}.rb")
10
10
  software.name(name)
11
- software.version(version)
11
+ software.default_version(version)
12
12
 
13
13
  dependencies.each do |dependency|
14
14
  software.dependency(dependency)
@@ -137,12 +137,67 @@ module Omnibus
137
137
  end
138
138
  end
139
139
 
140
+ context 'when paths with colons/commas are present', if: !windows? do
141
+ let(:contents) do
142
+ subject.write_gen_template
143
+ File.read(gen_file)
144
+ end
145
+
146
+ before do
147
+ create_file("#{staging_dir}/man3/App::Cpan.3")
148
+ create_file("#{staging_dir}/comma,file")
149
+ create_directory("#{staging_dir}/colon::dir/file")
150
+ create_directory("#{staging_dir}/comma,dir/file")
151
+ end
152
+
153
+ it 'renames colon filenames in the template' do
154
+ expect(contents).to include("/man3/App____Cpan.3")
155
+ end
156
+
157
+ it 'renames colon directory names in the template' do
158
+ expect(contents).to include("/colon____dir/file")
159
+ end
160
+
161
+ it 'renames comma filenames in the template' do
162
+ expect(contents).to include("/comma__file")
163
+ end
164
+
165
+ it 'renames comma directory names in the template' do
166
+ expect(contents).to include("/comma__dir/file")
167
+ end
168
+
169
+ context 'creates a config script' do
170
+ it 'when there wasn\'t one provided' do
171
+ FileUtils.rm_f("#{subject.scripts_staging_dir}/config")
172
+ subject.write_gen_template
173
+ expect(File).to exist("#{subject.scripts_staging_dir}/config")
174
+ end
175
+
176
+ it 'when one is provided in the project\'s def' do
177
+ create_file("#{project_root}/package-scripts/project/config")
178
+ subject.write_gen_template
179
+ contents = File.read("#{subject.scripts_staging_dir}/config")
180
+ expect(contents).to include("mv '/man3/App____Cpan.3' '/man3/App::Cpan.3'")
181
+ end
182
+
183
+ it 'with mv commands for all the renamed files' do
184
+ subject.write_gen_template
185
+ contents = File.read("#{subject.scripts_staging_dir}/config")
186
+ expect(contents).to include("mv '/man3/App____Cpan.3' '/man3/App::Cpan.3'")
187
+ expect(contents).to include("mv '/comma__file' '/comma,file'")
188
+ expect(contents).to include("mv '/colon____dir/file' '/colon::dir/file'")
189
+ expect(contents).to include("mv '/comma__dir/file' '/comma,dir/file'")
190
+ end
191
+ end
192
+ end
193
+
140
194
  context 'when script files are present' do
141
195
  before do
142
196
  create_file("#{subject.scripts_staging_dir}/preinst")
143
197
  create_file("#{subject.scripts_staging_dir}/postinst")
144
198
  create_file("#{subject.scripts_staging_dir}/prerm")
145
199
  create_file("#{subject.scripts_staging_dir}/postrm")
200
+ create_file("#{subject.scripts_staging_dir}/config")
146
201
  end
147
202
 
148
203
  it 'writes them into the template' do
@@ -151,27 +206,75 @@ module Omnibus
151
206
 
152
207
  expect(contents).to include(" Pre-installation Script: #{subject.scripts_staging_dir}/preinst")
153
208
  expect(contents).to include(" Post-installation Script: #{subject.scripts_staging_dir}/postinst")
209
+ expect(contents).to include(" Configuration Script: #{subject.scripts_staging_dir}/config")
154
210
  expect(contents).to include(" Pre_rm Script: #{subject.scripts_staging_dir}/prerm")
155
211
  expect(contents).to include(" Unconfiguration Script: #{subject.scripts_staging_dir}/postrm")
156
212
  end
157
213
  end
214
+
215
+ context 'when the log_level is :debug, it' do
216
+ before do
217
+ Omnibus.logger.level = :debug
218
+ end
219
+
220
+ it 'prints the rendered template' do
221
+ output = capture_logging { subject.write_gen_template }
222
+ expect(output).to include("Package Name: project")
223
+ end
224
+ end
158
225
  end
159
226
 
160
227
  describe '#create_bff_file' do
228
+ # Need to mock out the id calls
229
+ let(:id_shellout) {
230
+ shellout_mock = double("shellout_mock")
231
+ allow(shellout_mock).to receive(:stdout).and_return("300")
232
+ shellout_mock
233
+ }
234
+
161
235
  before do
162
236
  allow(subject).to receive(:shellout!)
163
237
  allow(Dir).to receive(:chdir) { |_, &b| b.call }
238
+ allow(subject).to receive(:shellout!)
239
+ .with("id -u").and_return(id_shellout)
240
+ allow(subject).to receive(:shellout!)
241
+ .with("id -g").and_return(id_shellout)
242
+
243
+ create_file(File.join(staging_dir, '.info', "#{project.name}.inventory")) {
244
+ <<-INVENTORY.gsub(/^\s{12}/, '')
245
+ /opt/project/version-manifest.txt:
246
+ owner = root
247
+ group = system
248
+ mode = 644
249
+ type = FILE
250
+ class = apply,inventory,angry-omnibus-toolchain
251
+ size = 1906
252
+ checksum = "02776 2 "
253
+ INVENTORY
254
+ }
255
+ create_file("#{staging_dir}/file") { "http://goo.gl/TbkO01" }
256
+ end
257
+
258
+ it 'gets the build uid' do
259
+ expect(subject).to receive(:shellout!)
260
+ .with("id -u")
261
+ subject.create_bff_file
262
+ end
263
+
264
+ it 'gets the build gid' do
265
+ expect(subject).to receive(:shellout!)
266
+ .with("id -g")
267
+ subject.create_bff_file
164
268
  end
165
269
 
166
- it 'chowns the directory' do
270
+ it 'chowns the directory to root' do
167
271
  # A note - the /opt/ here is essentially project.install_dir one level up.
168
272
  # There is nothing magical about 'opt' as a directory.
169
273
  expect(subject).to receive(:shellout!)
170
- .with(/chown -R 0:0 #{staging_dir}\/opt$/)
274
+ .with(/chown -Rh 0:0 #{staging_dir}\/opt$/)
171
275
  subject.create_bff_file
172
276
  end
173
277
 
174
-
175
278
  it 'logs a message' do
176
279
  output = capture_logging { subject.create_bff_file }
177
280
  expect(output).to include('Creating .bff file')
@@ -182,6 +285,26 @@ module Omnibus
182
285
  .with(/\/usr\/sbin\/mkinstallp -d/)
183
286
  subject.create_bff_file
184
287
  end
288
+
289
+ it 'chowns the directory back to the build user' do
290
+ # A note - the /opt/ here is essentially project.install_dir one level up.
291
+ # There is nothing magical about 'opt' as a directory.
292
+ # 300 is just what we set the mock for the build uid/gid to return.
293
+ expect(subject).to receive(:shellout!)
294
+ .with(/chown -Rh 300:300 #{staging_dir}/)
295
+ subject.create_bff_file
296
+ end
297
+
298
+ context 'when the log_level is :debug, it' do
299
+ before do
300
+ Omnibus.logger.level = :debug
301
+ end
302
+
303
+ it 'prints the inventory file' do
304
+ output = capture_logging { subject.create_bff_file }
305
+ expect(output).to match(%r{^/opt/project})
306
+ end
307
+ end
185
308
  end
186
309
 
187
310
  describe '#safe_base_package_name' do
@@ -198,6 +198,8 @@ module Omnibus
198
198
  create_file("#{staging_dir}/.filea") { ".filea" }
199
199
  create_file("#{staging_dir}/file1") { "file1" }
200
200
  create_file("#{staging_dir}/file2") { "file2" }
201
+ create_file("#{staging_dir}/DEBIAN/preinst") { "preinst" }
202
+ create_file("#{staging_dir}/DEBIAN/postrm") { "postrm" }
201
203
  end
202
204
 
203
205
  it 'generates the file' do
@@ -209,9 +211,12 @@ module Omnibus
209
211
  subject.write_md5_sums
210
212
  contents = File.read("#{staging_dir}/DEBIAN/md5sums")
211
213
 
212
- expect(contents).to include("9334770d184092f998009806af702c8c .filea")
213
- expect(contents).to include("826e8142e6baabe8af779f5f490cf5f5 file1")
214
- expect(contents).to include("1c1c96fd2cf8330db0bfa936ce82f3b9 file2")
214
+ expect(contents).to include("9334770d184092f998009806af702c8c .filea")
215
+ expect(contents).to include("826e8142e6baabe8af779f5f490cf5f5 file1")
216
+ expect(contents).to include("1c1c96fd2cf8330db0bfa936ce82f3b9 file2")
217
+ expect(contents).to_not include("1c1c96fd2cf8330db0bfa936ce82f3b9 file2")
218
+ expect(contents).to_not include("DEBIAN/preinst")
219
+ expect(contents).to_not include("DEBIAN/postrm")
215
220
  end
216
221
  end
217
222
 
@@ -4,9 +4,9 @@ module Omnibus
4
4
  describe Packager::PKG do
5
5
  let(:project) do
6
6
  Project.new.tap do |project|
7
- project.name('project')
7
+ project.name('project-full-name')
8
8
  project.homepage('https://example.com')
9
- project.install_dir('/opt/project')
9
+ project.install_dir('/opt/project-full-name')
10
10
  project.build_version('1.2.3')
11
11
  project.build_iteration('2')
12
12
  project.maintainer('Chef Software')
@@ -15,12 +15,12 @@ module Omnibus
15
15
 
16
16
  subject { described_class.new(project) }
17
17
 
18
- let(:project_root) { File.join(tmp_path, 'project/root') }
18
+ let(:project_root) { File.join(tmp_path, 'project-full-name/root') }
19
19
  let(:package_dir) { File.join(tmp_path, 'package/dir') }
20
20
  let(:staging_dir) { File.join(tmp_path, 'staging/dir') }
21
21
 
22
22
  before do
23
- subject.identifier('com.getchef.project')
23
+ subject.identifier('com.getchef.project-full-name')
24
24
 
25
25
  Config.project_root(project_root)
26
26
  Config.package_dir(package_dir)
@@ -48,7 +48,7 @@ module Omnibus
48
48
 
49
49
  describe '#package_name' do
50
50
  it 'includes the name, version, and build iteration' do
51
- expect(subject.package_name).to eq('project-1.2.3-2.pkg')
51
+ expect(subject.package_name).to eq('project-full-name-1.2.3-2.pkg')
52
52
  end
53
53
  end
54
54
 
@@ -69,7 +69,7 @@ module Omnibus
69
69
  let(:scripts) { %w( preinstall postinstall ) }
70
70
  before do
71
71
  scripts.each do |script_name|
72
- create_file("#{project_root}/package-scripts/project/#{script_name}") do
72
+ create_file("#{project_root}/package-scripts/project-full-name/#{script_name}") do
73
73
  "Contents of #{script_name}"
74
74
  end
75
75
  end
@@ -90,7 +90,7 @@ module Omnibus
90
90
  let(:default_scripts) { %w( preinst postinst ) }
91
91
  before do
92
92
  default_scripts.each do |script_name|
93
- create_file("#{project_root}/package-scripts/project/#{script_name}") do
93
+ create_file("#{project_root}/package-scripts/project-full-name/#{script_name}") do
94
94
  "Contents of #{script_name}"
95
95
  end
96
96
  end
@@ -114,12 +114,12 @@ module Omnibus
114
114
  it 'executes the pkgbuild command' do
115
115
  expect(subject).to receive(:shellout!).with <<-EOH.gsub(/^ {10}/, '')
116
116
  pkgbuild \\
117
- --identifier "com.getchef.project" \\
117
+ --identifier "com.getchef.project-full-name" \\
118
118
  --version "1.2.3" \\
119
119
  --scripts "#{staging_dir}/Scripts" \\
120
- --root "/opt/project" \\
121
- --install-location "/opt/project" \\
122
- "project-core.pkg"
120
+ --root "/opt/project-full-name" \\
121
+ --install-location "/opt/project-full-name" \\
122
+ "project-full-name-core.pkg"
123
123
  EOH
124
124
 
125
125
  subject.build_component_pkg
@@ -136,9 +136,9 @@ module Omnibus
136
136
  subject.write_distribution_file
137
137
  contents = File.read("#{staging_dir}/Distribution")
138
138
 
139
- expect(contents).to include('<pkg-ref id="com.getchef.project"/>')
140
- expect(contents).to include('<line choice="com.getchef.project"/>')
141
- expect(contents).to include('project-core.pkg')
139
+ expect(contents).to include('<pkg-ref id="com.getchef.project-full-name"/>')
140
+ expect(contents).to include('<line choice="com.getchef.project-full-name"/>')
141
+ expect(contents).to include('project-full-name-core.pkg')
142
142
  end
143
143
  end
144
144
 
@@ -149,7 +149,7 @@ module Omnibus
149
149
  productbuild \\
150
150
  --distribution "#{staging_dir}/Distribution" \\
151
151
  --resources "#{staging_dir}/Resources" \\
152
- "#{package_dir}/project-1.2.3-2.pkg"
152
+ "#{package_dir}/project-full-name-1.2.3-2.pkg"
153
153
  EOH
154
154
 
155
155
  subject.build_product_pkg
@@ -167,7 +167,7 @@ module Omnibus
167
167
  --distribution "#{staging_dir}/Distribution" \\
168
168
  --resources "#{staging_dir}/Resources" \\
169
169
  --sign "My Special Identity" \\
170
- "#{package_dir}/project-1.2.3-2.pkg"
170
+ "#{package_dir}/project-full-name-1.2.3-2.pkg"
171
171
  EOH
172
172
  subject.build_product_pkg
173
173
  end
@@ -187,14 +187,14 @@ module Omnibus
187
187
 
188
188
  describe '#component_pkg' do
189
189
  it 'returns the project name with -core.pkg' do
190
- expect(subject.component_pkg).to eq('project-core.pkg')
190
+ expect(subject.component_pkg).to eq('project-full-name-core.pkg')
191
191
  end
192
192
  end
193
193
 
194
194
  describe '#safe_base_package_name' do
195
195
  context 'when the project name is "safe"' do
196
196
  it 'returns the value without logging a message' do
197
- expect(subject.safe_base_package_name).to eq('project')
197
+ expect(subject.safe_base_package_name).to eq('project-full-name')
198
198
  expect(subject).to_not receive(:log)
199
199
  end
200
200
  end
@@ -225,7 +225,7 @@ module Omnibus
225
225
  before { subject.identifier(nil) }
226
226
 
227
227
  it 'is interpreted' do
228
- expect(subject.safe_identifier).to eq('test.chefsoftware.pkg.project')
228
+ expect(subject.safe_identifier).to eq('test.chefsoftware.pkg.project-full-name')
229
229
  end
230
230
  end
231
231