simp-rake-helpers 5.6.2 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
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