simp-rake-helpers 5.6.2 → 5.7.0

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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/lib/simp/packer/iso_vars_json.rb +87 -0
  4. data/lib/simp/rake/build/auto.rb +6 -31
  5. data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +36 -8
  6. data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +36 -8
  7. data/lib/simp/rake/helpers/version.rb +1 -1
  8. data/spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb +19 -3
  9. data/spec/acceptance/10_pkg_rpm_spec.rb +52 -8
  10. data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +223 -0
  11. data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +334 -245
  12. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +2 -0
  13. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile +3 -0
  14. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires +2 -0
  15. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +2 -0
  16. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +2 -0
  17. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +14 -0
  18. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +2 -0
  19. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +37 -0
  20. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +5 -0
  21. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile +3 -0
  22. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +2 -0
  23. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +2 -0
  24. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +2 -0
  25. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +14 -0
  26. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +3 -0
  27. data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +37 -0
  28. data/spec/acceptance/nodesets/default.yml +7 -8
  29. data/spec/acceptance/support/pkg_rpm_helpers.rb +2 -2
  30. data/spec/lib/simp/packer/iso_vars_json_spec.rb +65 -0
  31. metadata +29 -5
  32. data/spec/acceptance/20_pkg_rpm_safely_upgrading_obsolete_modules_spec.rb +0 -175
@@ -0,0 +1,2 @@
1
+ * Sat Dec 13 2014 Richard Stallman <rms@gnu.org> - 1.0.0-0
2
+ - Behold, there was a brave GNU world....
@@ -0,0 +1,3 @@
1
+ require 'simp/rake/pkg'
2
+
3
+ Simp::Rake::Pkg.new( File.dirname( __FILE__ ) )
@@ -0,0 +1,2 @@
1
+ Requires: pupmod-simp-simplib >= 1.2.3
2
+ Requires: pupmod-puppetlabs-stdlib >= 1.2.3
@@ -0,0 +1,2 @@
1
+ ---
2
+ testpackage::aliases : ['files','nisplus']
@@ -0,0 +1,2 @@
1
+ ---
2
+ testpackage::aliases : ['files','nisplus']
@@ -0,0 +1,14 @@
1
+ ---
2
+ version: 4
3
+ datadir: data
4
+ hierarchy:
5
+ - name: "OS name"
6
+ backend: yaml
7
+ path: "os/%{facts.os.name}"
8
+
9
+ - name: "OS family"
10
+ backend: yaml
11
+ path: "os/%{facts.os.family}"
12
+
13
+ - name: "common"
14
+ backend: yaml
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "simp-testpackage",
3
+ "version": "1.0.0",
4
+ "author": "simp",
5
+ "summary": "A SIMP Test Package for Testing Test Things",
6
+ "license": "Apache-2.0",
7
+ "source": "https://github.com/simp/pupmod-imatest",
8
+ "project_page": "https://github.com/simp/pupmod-imatest",
9
+ "issues_url": "https://simp/project.atlassian.net",
10
+ "tags": [ "simp", "test"],
11
+ "dependencies": [
12
+ {
13
+ "name": "puppetlabs/stdlib",
14
+ "version_requirement": ">= 1.1.0"
15
+ },
16
+ {
17
+ "name": "simp/simplib",
18
+ "version_requirement": ">= 1.1.0"
19
+ }
20
+ ],
21
+ "operatingsystem_support": [
22
+ {
23
+ "operatingsystem": "CentOS",
24
+ "operatingsystemrelease": [
25
+ "6",
26
+ "7"
27
+ ]
28
+ },
29
+ {
30
+ "operatingsystem": "RedHat",
31
+ "operatingsystemrelease": [
32
+ "6",
33
+ "7"
34
+ ]
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,5 @@
1
+ * Wed Dec 05 2018 Richard Stallman <rms@gnu.org> - 2.0.0-0
2
+ - Remove unused data-in-modules files
3
+
4
+ * Sat Dec 13 2014 Richard Stallman <rms@gnu.org> - 1.0.0-0
5
+ - Behold, there was a brave GNU world....
@@ -0,0 +1,3 @@
1
+ require 'simp/rake/pkg'
2
+
3
+ Simp::Rake::Pkg.new( File.dirname( __FILE__ ) )
@@ -0,0 +1,2 @@
1
+ Requires: pupmod-simp-simplib >= 1.2.3
2
+ Requires: pupmod-puppetlabs-stdlib >= 1.2.3
@@ -0,0 +1,2 @@
1
+ ---
2
+ testpackage::aliases : ['files','nisplus']
@@ -0,0 +1,2 @@
1
+ ---
2
+ testpackage::aliases : ['files','nisplus']
@@ -0,0 +1,14 @@
1
+ ---
2
+ version: 4
3
+ datadir: data
4
+ hierarchy:
5
+ - name: "OS name"
6
+ backend: yaml
7
+ path: "os/%{facts.os.name}"
8
+
9
+ - name: "OS family"
10
+ backend: yaml
11
+ path: "os/%{facts.os.family}"
12
+
13
+ - name: "common"
14
+ backend: yaml
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "simp-testpackage",
3
+ "version": "2.0.0",
4
+ "author": "simp",
5
+ "summary": "A SIMP Test Package for Testing Test Things",
6
+ "license": "Apache-2.0",
7
+ "source": "https://github.com/simp/pupmod-imatest",
8
+ "project_page": "https://github.com/simp/pupmod-imatest",
9
+ "issues_url": "https://simp/project.atlassian.net",
10
+ "tags": [ "simp", "test"],
11
+ "dependencies": [
12
+ {
13
+ "name": "puppetlabs/stdlib",
14
+ "version_requirement": ">= 1.1.0"
15
+ },
16
+ {
17
+ "name": "simp/simplib",
18
+ "version_requirement": ">= 1.1.0"
19
+ }
20
+ ],
21
+ "operatingsystem_support": [
22
+ {
23
+ "operatingsystem": "CentOS",
24
+ "operatingsystemrelease": [
25
+ "6",
26
+ "7"
27
+ ]
28
+ },
29
+ {
30
+ "operatingsystem": "RedHat",
31
+ "operatingsystemrelease": [
32
+ "6",
33
+ "7"
34
+ ]
35
+ }
36
+ ]
37
+ }
@@ -18,10 +18,10 @@ HOSTS:
18
18
  - 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools which'
19
19
  # rvm build-deps
20
20
  - 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
21
- - 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB"'
21
+ - 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
22
22
  - 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
23
- - 'runuser build_user -l -c "rvm install 2.1"'
24
- - 'runuser build_user -l -c "rvm use --default 2.1"'
23
+ - 'runuser build_user -l -c "rvm install 2.4"'
24
+ - 'runuser build_user -l -c "rvm use --default 2.4"'
25
25
  - 'runuser build_user -l -c "rvm all do gem install bundler"'
26
26
  mount_folders:
27
27
  folder1:
@@ -47,11 +47,10 @@ HOSTS:
47
47
  - 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools clamav-update which'
48
48
  # rvm build-deps
49
49
  - 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
50
- - 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB"'
51
- - 'runuser build_user -l -c "gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"'
50
+ - 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
52
51
  - 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
53
- - 'runuser build_user -l -c "rvm install 2.1"'
54
- - 'runuser build_user -l -c "rvm use --default 2.1"'
52
+ - 'runuser build_user -l -c "rvm install 2.4"'
53
+ - 'runuser build_user -l -c "rvm use --default 2.4"'
55
54
  - 'runuser build_user -l -c "rvm all do gem install bundler"'
56
55
  - 'yum install -y rpm-sign'
57
56
  mount_folders:
@@ -66,4 +65,4 @@ HOSTS:
66
65
 
67
66
  CONFIG:
68
67
  log_level: verbose
69
- type: foss
68
+ type: aio
@@ -29,7 +29,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
29
29
  'postinstall' => 'post',
30
30
  'preuninstall' => 'preun',
31
31
  'postuninstall' => 'postun',
32
- 'posttrans' => nil,
32
+ 'posttrans' => 'posttrans',
33
33
  }
34
34
  end
35
35
 
@@ -37,7 +37,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
37
37
  # returns a Hash of information about an RPM file's scriptlets
38
38
  def rpm_scriptlets_for( host, rpm_file )
39
39
  _labels = scriptlet_label_map.keys.join('|')
40
- rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n#{_labels}|\Z)/m
40
+ rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n(#{_labels}) scriptlet|\Z)/m
41
41
 
42
42
  result = on host, %Q(rpm -qp --scripts #{rpm_file})
43
43
 
@@ -0,0 +1,65 @@
1
+ require 'simp/packer/iso_vars_json'
2
+ require 'spec_helper'
3
+ require 'tmpdir'
4
+ require 'json'
5
+
6
+ describe Simp::Packer::IsoVarsJson do
7
+ DUMMY_CONTENT = 'Dummy text with known checksum'.freeze
8
+ DUMMY_CHECKSUM = 'bd6eae40b2b18359f33332dd5b1a3dd5c9e885240c3d4907d6a1208cdafa0003'.freeze
9
+
10
+ before do
11
+ @tmp_dir = Dir.mktmpdir(File.basename(__FILE__))
12
+ @iso = File.expand_path('fixture.iso', @tmp_dir)
13
+ File.open(@iso, 'w') { |f| f.puts DUMMY_CONTENT }
14
+ target_release = '6.3.0-Beta1'
15
+ target_data = {
16
+ 'isos' => ['/path/to/CentOS-6.10-x86_64-bin-DVD1.iso', '/path/to/CentOS-6.10-x86_64-bin-DVD2.iso'],
17
+ 'build_command' => "bundle exec rake build:auto[/path/to,#{target_release}]",
18
+ 'os_version' => '6.10',
19
+ 'flavor' => 'CentOS'
20
+ }
21
+ @var_json = described_class.new(@iso, target_release, target_data, :silent => true)
22
+ end
23
+
24
+ after do
25
+ FileUtils.remove_entry_secure @tmp_dir
26
+ end
27
+
28
+ let(:expected_checksum) { DUMMY_CHECKSUM }
29
+
30
+ describe '#data' do
31
+ it 'returns expected information for v1.0.0 format' do
32
+ expect(@var_json.data).to include(
33
+ 'simp_vars_version' => '1.0.0',
34
+ 'box_distro_release' => 'SIMP-6.3.0-Beta1-CentOS-6.10',
35
+ 'box_simp_release' => '6.3.0-Beta1',
36
+ 'iso_checksum' => DUMMY_CHECKSUM,
37
+ 'iso_checksum_type' => 'sha256',
38
+ 'dist_os_flavor' => 'CentOS',
39
+ 'dist_os_maj_version' => '6',
40
+ 'dist_os_version' => '6.10',
41
+ 'dist_source_isos' => 'CentOS-6.10-x86_64-bin-DVD1.iso:CentOS-6.10-x86_64-bin-DVD2.iso',
42
+ 'packer_src_type' => 'simp-iso',
43
+ 'iso_builder' => 'rubygem-simp-rake-helpers'
44
+ )
45
+ end
46
+ end
47
+
48
+ describe '#write' do
49
+ before (:each) { @var_json.write }
50
+
51
+ let(:json_file) { "#{File.basename(@iso, '.iso')}.json" }
52
+
53
+ it 'writes a .json file with the same name as the .iso' do
54
+ Dir.chdir(@tmp_dir) { |_dir| expect(File.exist?(json_file)).to be true }
55
+ end
56
+
57
+ it 'writes a .json file with expected data' do
58
+ Dir.chdir(@tmp_dir) do |_dir|
59
+ file_content = File.read(json_file)
60
+ file_data = JSON.parse(file_content)
61
+ expect(file_data['iso_checksum']).to eq expected_checksum
62
+ end
63
+ end
64
+ end
65
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simp-rake-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.2
4
+ version: 5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Tessmer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-02 00:00:00.000000000 Z
12
+ date: 2018-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: simp-beaker-helpers
@@ -159,16 +159,22 @@ dependencies:
159
159
  name: parallel_tests
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - "~>"
162
+ - - ">"
163
163
  - !ruby/object:Gem::Version
164
164
  version: '2.4'
165
+ - - "<"
166
+ - !ruby/object:Gem::Version
167
+ version: '2.25'
165
168
  type: :runtime
166
169
  prerelease: false
167
170
  version_requirements: !ruby/object:Gem::Requirement
168
171
  requirements:
169
- - - "~>"
172
+ - - ">"
170
173
  - !ruby/object:Gem::Version
171
174
  version: '2.4'
175
+ - - "<"
176
+ - !ruby/object:Gem::Version
177
+ version: '2.25'
172
178
  - !ruby/object:Gem::Dependency
173
179
  name: r10k
174
180
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +251,7 @@ files:
245
251
  - bin/simp_rake_helpers
246
252
  - lib/simp/componentinfo.rb
247
253
  - lib/simp/local_gpg_signing_key.rb
254
+ - lib/simp/packer/iso_vars_json.rb
248
255
  - lib/simp/rake.rb
249
256
  - lib/simp/rake/build/auto.rb
250
257
  - lib/simp/rake/build/build.rb
@@ -278,7 +285,7 @@ files:
278
285
  - lib/simp/yum.rb
279
286
  - spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb
280
287
  - spec/acceptance/10_pkg_rpm_spec.rb
281
- - spec/acceptance/20_pkg_rpm_safely_upgrading_obsolete_modules_spec.rb
288
+ - spec/acceptance/20_pkg_rpm_upgrade_spec.rb
282
289
  - spec/acceptance/30_pkg_misc_spec.rb
283
290
  - spec/acceptance/50_local_gpg_signing_key_spec.rb
284
291
  - spec/acceptance/55_build_pkg_signing_spec.rb
@@ -336,6 +343,22 @@ files:
336
343
  - spec/acceptance/files/module_with_misordered_entries/CHANGELOG
337
344
  - spec/acceptance/files/module_with_misordered_entries/Rakefile
338
345
  - spec/acceptance/files/module_with_misordered_entries/metadata.json
346
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG
347
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile
348
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires
349
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml
350
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml
351
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml
352
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp
353
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json
354
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG
355
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile
356
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires
357
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml
358
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml
359
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml
360
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp
361
+ - spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json
339
362
  - spec/acceptance/files/simplib/CHANGELOG
340
363
  - spec/acceptance/files/simplib/Rakefile
341
364
  - spec/acceptance/files/simplib/build/rpm_metadata/requires
@@ -448,6 +471,7 @@ files:
448
471
  - spec/lib/simp/files/testpackage-multi.spec
449
472
  - spec/lib/simp/files/testpackage.spec
450
473
  - spec/lib/simp/local_gpg_signing_key_spec.rb.beaker-only
474
+ - spec/lib/simp/packer/iso_vars_json_spec.rb
451
475
  - spec/lib/simp/rake/build/files/changed_name_mod/metadata.json
452
476
  - spec/lib/simp/rake/build/files/dependencies.yaml
453
477
  - spec/lib/simp/rake/build/files/malformed_dep_meta_mod/metadata.json
@@ -1,175 +0,0 @@
1
- require 'spec_helper_acceptance'
2
- require_relative 'support/pkg_rpm_helpers'
3
-
4
- require 'beaker/puppet_install_helper'
5
- require 'json'
6
-
7
- RSpec.configure do |c|
8
- c.include Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
9
- c.extend Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
10
- end
11
-
12
-
13
- # These tests demonstrate custom RPM triggers that work around the obsolete
14
- # module RPM upgrate + simp_rpm_helper problem described in SIMP-3895:
15
- #
16
- # https://simp-project.atlassian.net/browse/SIMP-3988
17
- #
18
- # The expected outcome is that simp_rpm_helper always ensures the correct
19
- # content is installed after an upgrade, even during after a package has been
20
- # obsoleted. This is accomplished via %triggerpostun -- <name of old package>
21
- #
22
- # old 1.0 -> old 2.0 = no need for a trigger
23
- # old 1.0 -> new 2.0 = must re-run simp_rpm_helper
24
- # old 1.0 -> new 3.0 = must re-run simp_rpm_helper
25
- # old 2.0 -> new 2.0 = must re-run simp_rpm_helper
26
- # old 2.0 -> new 3.0 = must re-run simp_rpm_helper
27
- # new 2.0 -> new 3.0 = no need for a trigger
28
-
29
-
30
- shared_examples_for 'an upgrade path that works safely with rpm_simp_helper' do |first_package_file, second_package_file|
31
- let( :rpm_regex ) do
32
- /^(?<name>pupmod-[a-z0-9_]+-[a-z0-9_]+)-(?<version>\d+\.\d+\.\d+)-(?<release>\d+)\..*\.rpm$/
33
- end
34
-
35
- let( :first_package_version ){ first_package_file.match(rpm_regex)['version'] }
36
- let( :first_package_name ){ first_package_file.match(rpm_regex)['name'] }
37
- let( :first_package_forge_name ){ first_package_name.sub(/^[^-]+-/,'') }
38
- let( :first_package_module_name ){ first_package_forge_name.sub(/^[^-]+-/,'') }
39
- let( :first_package_dir_name ){ first_package_name + '-' + first_package_version.sub(/\.\d+-\d+$/,'') }
40
-
41
- let( :second_package_name ){ second_package_file.match(rpm_regex)['name'] }
42
- let( :second_package_forge_name ){ second_package_name.sub(/^[^-]+-/,'') }
43
- let( :second_package_module_name ){ second_package_forge_name.sub(/^[^-]+-/,'') }
44
- let( :second_package_version ){ second_package_file.match(rpm_regex)['version'] }
45
- let( :second_package_dir_name ){ second_package_name + '-' + second_package_version.sub(/\.\d+-\d+$/,'') }
46
-
47
- context "When upgrading from #{first_package_file} to #{second_package_file}" do
48
- it "should clean out any old installs" do
49
- on host, "rpm -e #{first_package_name} &> /dev/null; " +
50
- "rpm -e #{second_package_name} &> /dev/null ",
51
- accept_all_exit_codes: true
52
- end
53
-
54
- it "should install #{first_package_file}" do
55
- on host, "cd #{pkg_root_dir}/#{first_package_dir_name.gsub(/\.\d+$/,'')}; "+
56
- "rpm -Uvh dist/#{first_package_file}"
57
- end
58
-
59
- it "should transfer contents of #{first_package_file} into the code directory" do
60
- result = on host, "cat /opt/test/puppet/code/#{first_package_module_name}/metadata.json"
61
- metadata = JSON.parse(result.stdout)
62
- expect(metadata['name']).to eq first_package_forge_name
63
- expect(metadata['version']).to eq first_package_version
64
- end
65
-
66
- it "should upgrade to #{second_package_file}" do
67
- on host, "cd #{pkg_root_dir}/#{second_package_dir_name.gsub(/\.\d+$/,'')}; rpm -Uvh dist/#{second_package_file}"
68
- end
69
-
70
- it "should transfer contents of #{second_package_file} into the code directory" do
71
- result = on host, "cat /opt/test/puppet/code/#{second_package_module_name}/metadata.json"
72
- metadata = JSON.parse(result.stdout)
73
- expect(metadata['name']).to eq second_package_forge_name
74
- expect(metadata['version']).to eq second_package_version
75
- end
76
-
77
-
78
- end
79
- end
80
-
81
- describe 'rake pkg:rpm + modules with customized content to safely upgrade obsoleted packagess' do
82
-
83
- let(:pkg_root_dir) do
84
- '/home/build_user/host_files/spec/acceptance/files/custom_scriptlet_triggers'
85
- end
86
-
87
- before :all do
88
- copy_host_files_into_build_user_homedir(hosts)
89
-
90
- comment 'ensure the Puppet AIO is installed'
91
- ENV['PUPPET_INSTALL_TYPE'] ||= 'agent'
92
- ENV['PUPPET_INSTALL_VERSION'] ||= '1.10.6'
93
- run_puppet_install_helper_on(hosts)
94
-
95
- comment 'configure puppet agent to look like a Puppet server for simp_rpm_helper'
96
- on hosts, '/opt/puppetlabs/bin/puppet config --section master set user root; ' +
97
- '/opt/puppetlabs/bin/puppet config --section master set group root; ' +
98
- '/opt/puppetlabs/bin/puppet config --section master set codedir /opt/test/puppet/code; ' +
99
- '/opt/puppetlabs/bin/puppet config --section master set confdir /opt/test/puppet/code'
100
-
101
-
102
- comment 'build and install mock RPMs'
103
- mock_pkg_dir = '/home/build_user/host_files/spec/acceptance/files/mock_packages'
104
- on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; rm -rf pkg"]
105
- on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh simp-adapter.spec"]
106
- on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-puppetlabs-stdlib.spec"]
107
- on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-simplib.spec"]
108
- on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-foo.spec"]
109
-
110
- on hosts, %Q[rpm -Uvh "#{mock_pkg_dir}/pkg/dist/*.noarch.rpm"], acceptable_exit_codes: [0,1]
111
- end
112
-
113
- hosts.each do |_host|
114
- context "on #{_host}" do
115
- let!(:host){ _host }
116
-
117
- context 'with module RPMs that are suceptible to SIMP-3895' do
118
-
119
- let(:testpackages) do
120
- [
121
- 'pupmod-old-package-1.0',
122
- 'pupmod-old-package-2.0',
123
- 'pupmod-old-package-2.2',
124
- 'pupmod-new-package-2.1',
125
- 'pupmod-new-package-3.0',
126
- ]
127
- end
128
-
129
- it 'should create RPMs' do
130
- testpackages.each do |package|
131
- on host, %Q(#{run_cmd} "cd #{pkg_root_dir}/#{package}; ) +
132
- %Q(rvm use default; bundle update --local || bundle update")
133
- rpm_name = package.sub(/-[^-]+$/,'')
134
- # In case previous tests haven't been clean
135
- on host, "rpm -q #{rpm_name} && rpm -e #{rpm_name}; :"
136
-
137
- on host, %(#{run_cmd} "cd #{pkg_root_dir}/#{package}; #{rake_cmd} pkg:rpm")
138
- end
139
- end
140
-
141
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
142
- 'pupmod-old-package-1.0.0-0.noarch.rpm',
143
- 'pupmod-old-package-2.0.0-0.noarch.rpm')
144
-
145
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
146
- 'pupmod-old-package-1.0.0-0.noarch.rpm',
147
- 'pupmod-new-package-2.1.0-0.noarch.rpm')
148
-
149
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
150
- 'pupmod-new-package-2.1.0-0.noarch.rpm',
151
- 'pupmod-old-package-2.2.0-0.noarch.rpm')
152
-
153
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
154
- 'pupmod-old-package-1.0.0-0.noarch.rpm',
155
- 'pupmod-new-package-3.0.0-0.noarch.rpm')
156
-
157
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
158
- 'pupmod-old-package-2.0.0-0.noarch.rpm',
159
- 'pupmod-new-package-2.1.0-0.noarch.rpm')
160
-
161
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
162
- 'pupmod-old-package-2.0.0-0.noarch.rpm',
163
- 'pupmod-new-package-3.0.0-0.noarch.rpm')
164
-
165
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
166
- 'pupmod-old-package-2.2.0-0.noarch.rpm',
167
- 'pupmod-new-package-3.0.0-0.noarch.rpm')
168
-
169
- it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
170
- 'pupmod-new-package-2.1.0-0.noarch.rpm',
171
- 'pupmod-new-package-3.0.0-0.noarch.rpm')
172
- end
173
- end
174
- end
175
- end