beaker_puppet_helpers 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cf5abd7cf85873a9544f42d9da34d59700f196fe7cf1665449dec6b04bf6c8c7
4
+ data.tar.gz: cc3bfe5d7108fb7ce5bc33103afb2d842592f959012c86d70c32cd4647458c30
5
+ SHA512:
6
+ metadata.gz: 7cffd9b821bb8a83af7409fe0ed0eae04f764b696545baa06896ad493a833c037ee83d3952e151bfed51415b2eb53794e6d74440e11245d7cde4721d095f80c2
7
+ data.tar.gz: fd5402a62aacbb30b8a9534ed19b4f4a42e50295494adeecb4ee42277a1ea1679416264ec48ce4d0d9361323865ac1d0f1eb7bda1d50e810bbec2b4408f478b3
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ # raise PRs for gem updates
4
+ - package-ecosystem: bundler
5
+ directory: "/"
6
+ schedule:
7
+ interval: daily
8
+ time: "13:00"
9
+ open-pull-requests-limit: 10
10
+
11
+ # Maintain dependencies for GitHub Actions
12
+ - package-ecosystem: github-actions
13
+ directory: "/"
14
+ schedule:
15
+ interval: daily
16
+ time: "13:00"
17
+ open-pull-requests-limit: 10
@@ -0,0 +1,31 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '*'
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+ if: github.repository_owner == 'voxpupuli'
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - name: Install Ruby 3.0
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: '3.0'
18
+ bundler: 'none'
19
+ - name: Build gem
20
+ run: gem build --strict --verbose *.gemspec
21
+ - name: Publish gem to rubygems.org
22
+ run: gem push *.gem
23
+ env:
24
+ GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_AUTH_TOKEN }}'
25
+ - name: Setup GitHub packages access
26
+ run: |
27
+ mkdir -p ~/.gem
28
+ echo ":github: Bearer ${{ secrets.GITHUB_TOKEN }}" >> ~/.gem/credentials
29
+ chmod 0600 ~/.gem/credentials
30
+ - name: Publish gem to GitHub packages
31
+ run: gem push --key github --host https://rubygems.pkg.github.com/${{ github.repository_owner }} *.gem
@@ -0,0 +1,55 @@
1
+ name: CI
2
+
3
+ on: pull_request
4
+
5
+ env:
6
+ BEAKER_HYPERVISOR: docker
7
+ BUNDLE_WITHOUT: release
8
+
9
+ jobs:
10
+ rubocop:
11
+ runs-on: ubuntu-latest
12
+ name: Rubocop
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - name: Install Ruby ${{ matrix.ruby }}
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: "3.0"
19
+ bundler-cache: true
20
+ - name: Rubocop
21
+ run: bundle exec rake rubocop
22
+
23
+ build:
24
+ runs-on: ubuntu-20.04
25
+ strategy:
26
+ fail-fast: false
27
+ matrix:
28
+ ruby:
29
+ - "3.2"
30
+ - "3.1"
31
+ - "3.0"
32
+ - "2.7"
33
+ name: Ruby ${{ matrix.ruby }}
34
+ steps:
35
+ - uses: actions/checkout@v3
36
+ - name: Install Ruby ${{ matrix.ruby }}
37
+ uses: ruby/setup-ruby@v1
38
+ with:
39
+ ruby-version: ${{ matrix.ruby }}
40
+ bundler-cache: true
41
+ - name: Verify gem builds
42
+ run: gem build --strict --verbose *.gemspec
43
+ - name: Run unit tests
44
+ run: bundle exec rake spec
45
+ - name: Run acceptance tests
46
+ run: bundle exec rake acceptance
47
+
48
+ tests:
49
+ needs:
50
+ - rubocop
51
+ - build
52
+ runs-on: ubuntu-latest
53
+ name: Test suite
54
+ steps:
55
+ - run: echo Test suite completed
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ Gemfile.lock
2
+
3
+ # Generated by yard
4
+ doc/
5
+ .yardoc/
6
+
7
+ # Generated by the test suite
8
+ .vagrant
9
+ log/
10
+ junit/
11
+ tmp/
12
+ vendor/
13
+ .vendor/
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ inherit_from: .rubocop_todo.yml
3
+
4
+ inherit_gem:
5
+ voxpupuli-rubocop: rubocop.yml
6
+
7
+ Layout/LineLength:
8
+ Enabled: false
9
+
10
+ RSpec/SubjectStub:
11
+ Enabled: false
12
+
13
+ RSpec/StubbedMock:
14
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,27 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2023-05-05 18:42:04 UTC using RuboCop version 1.50.2.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 9
10
+ # Configuration parameters: CountAsOne.
11
+ RSpec/ExampleLength:
12
+ Max: 9
13
+
14
+ # Offense count: 72
15
+ # Configuration parameters: .
16
+ # SupportedStyles: have_received, receive
17
+ RSpec/MessageSpies:
18
+ EnforcedStyle: receive
19
+
20
+ # Offense count: 24
21
+ RSpec/MultipleExpectations:
22
+ Max: 7
23
+
24
+ # Offense count: 4
25
+ # Configuration parameters: AllowedGroups.
26
+ RSpec/NestedGroups:
27
+ Max: 4
data/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [1.0.0](https://github.com/voxpupuli/beaker_puppet_helpers/tree/1.0.0) (2023-05-05)
6
+
7
+ [Full Changelog](https://github.com/voxpupuli/beaker_puppet_helpers/compare/5cc9e2e0e2a6a3541502bb1aae961071a8b96157...1.0.0)
8
+
9
+ **Implemented enhancements:**
10
+
11
+ - Send arguments as keyword arguments & Test on Ruby 3.1 and 3.2 [\#19](https://github.com/voxpupuli/beaker_puppet_helpers/pull/19) ([ekohl](https://github.com/ekohl))
12
+
13
+ **Merged pull requests:**
14
+
15
+ - puppet-modulebuilder: Allow 1.x [\#23](https://github.com/voxpupuli/beaker_puppet_helpers/pull/23) ([bastelfreak](https://github.com/bastelfreak))
16
+ - add dummy CI job we can depend on [\#22](https://github.com/voxpupuli/beaker_puppet_helpers/pull/22) ([bastelfreak](https://github.com/bastelfreak))
17
+ - Add .vendor and vendor to .gitignore [\#21](https://github.com/voxpupuli/beaker_puppet_helpers/pull/21) ([bastelfreak](https://github.com/bastelfreak))
18
+ - CI: Build gems with strictness and verbosity [\#20](https://github.com/voxpupuli/beaker_puppet_helpers/pull/20) ([bastelfreak](https://github.com/bastelfreak))
19
+ - Fix RSpec/RepeatedDescription [\#18](https://github.com/voxpupuli/beaker_puppet_helpers/pull/18) ([ekohl](https://github.com/ekohl))
20
+ - Allow beaker 4 [\#17](https://github.com/voxpupuli/beaker_puppet_helpers/pull/17) ([ekohl](https://github.com/ekohl))
21
+ - Pass arguments as array in fact\_on [\#16](https://github.com/voxpupuli/beaker_puppet_helpers/pull/16) ([ekohl](https://github.com/ekohl))
22
+ - Use instance doubles in tests [\#15](https://github.com/voxpupuli/beaker_puppet_helpers/pull/15) ([ekohl](https://github.com/ekohl))
23
+ - Run acceptance tests on Ubuntu 20.04 [\#14](https://github.com/voxpupuli/beaker_puppet_helpers/pull/14) ([bastelfreak](https://github.com/bastelfreak))
24
+ - Fix various RSpec cops before enabling rubocop-rspec [\#13](https://github.com/voxpupuli/beaker_puppet_helpers/pull/13) ([ekohl](https://github.com/ekohl))
25
+ - Drop Ruby 2.5 and 2.6 support [\#12](https://github.com/voxpupuli/beaker_puppet_helpers/pull/12) ([ekohl](https://github.com/ekohl))
26
+ - Make RuboCop mostly happy [\#11](https://github.com/voxpupuli/beaker_puppet_helpers/pull/11) ([ekohl](https://github.com/ekohl))
27
+ - Bump actions/checkout from 2 to 3 [\#10](https://github.com/voxpupuli/beaker_puppet_helpers/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot))
28
+ - Simplify variable setting [\#9](https://github.com/voxpupuli/beaker_puppet_helpers/pull/9) ([ekohl](https://github.com/ekohl))
29
+ - Use rubocop config from voxpupuli-rubocop [\#6](https://github.com/voxpupuli/beaker_puppet_helpers/pull/6) ([bastelfreak](https://github.com/bastelfreak))
30
+ - dependabot: check for github actions and gems [\#5](https://github.com/voxpupuli/beaker_puppet_helpers/pull/5) ([bastelfreak](https://github.com/bastelfreak))
31
+ - Add CI and release workflow [\#1](https://github.com/voxpupuli/beaker_puppet_helpers/pull/1) ([ekohl](https://github.com/ekohl))
32
+
33
+
34
+
35
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile ADDED
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ gem 'rake', '~> 13.0', groups: %i[development test release]
8
+
9
+ group :development do
10
+ gem 'rdoc'
11
+ gem 'redcarpet'
12
+ gem 'yard'
13
+ end
14
+
15
+ group :rubocop do
16
+ gem 'voxpupuli-rubocop', '~> 1.2'
17
+ end
18
+
19
+ group :test do
20
+ gem 'rspec', '~> 3.0'
21
+ end
22
+
23
+ case ENV.fetch('BEAKER_HYPERVISOR', nil)
24
+ when 'docker'
25
+ gem 'beaker-docker'
26
+ when 'vagrant', 'vagrant_libvirt'
27
+ gem 'beaker-vagrant'
28
+ end
29
+
30
+ group :release do
31
+ gem 'github_changelog_generator', require: false
32
+ end
data/LICENSE ADDED
@@ -0,0 +1,202 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
202
+
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # Beaker Puppet Helpers
2
+
3
+ The purpose of this library is to hold Puppet-specific info & DSL methods.
4
+ This includes all helper & installer methods.
5
+
6
+ This is based on [beaker-puppet](https://github.com/voxpupuli/beaker-puppet) and
7
+ [beaker-puppet_install_helper](https://github.com/puppetlabs/beaker-puppet_install_helper)
8
+ but is a reduced set.
9
+
10
+ ## How Do I Use This?
11
+
12
+ You will need to include beaker-puppet alongside Beaker in your Gemfile or project.gemspec. E.g.
13
+
14
+ ```ruby
15
+ # Gemfile
16
+ gem 'beaker_puppet_helpers', '~> 0.1.0'
17
+
18
+ # project.gemspec
19
+ s.add_runtime_dependency 'beaker_puppet_helpers', '~> 0.1.0'
20
+ ```
21
+
22
+ For DSL Extension Libraries, you must also ensure that you `require` the
23
+ library in your test files. You can do this manually in individual test files
24
+ or in a test helper (if you have one). You can [use
25
+ `Bundler.require()`](https://bundler.io/v1.16/guides/groups.html) to require
26
+ the library automatically. To explicitly require it:
27
+
28
+ ```ruby
29
+ require 'beaker_puppet_helpers'
30
+ ```
31
+
32
+ Doing this will include (automatically) the beaker_puppet_helpers DSL methods
33
+ in the beaker DSL. Then you can call beaker_puppet_helpers methods.
34
+
35
+ ## How Do I Test This?
36
+
37
+ ### Unit / Spec Testing
38
+
39
+ You can run the spec testing using the rake task `spec`. You can also run
40
+ `rspec` directly.
41
+
42
+ ### Acceptance Testing
43
+
44
+ Acceptance testing can be run using the `acceptance` rake test.
45
+
46
+ Note in the above rake tasks that there are some environment variables that you
47
+ can use to customize your run. For specifying your System Under Test (SUT)
48
+ environment, you can use `BEAKER_HOSTS`, passing a file path to a beaker hosts
49
+ file or a beaker-hostgenerator value. You can also specify the tests that get
50
+ executed with the `TESTS` environment variable.
51
+
52
+ ## License
53
+
54
+ This gem is licensed under the Apache-2 license.
55
+
56
+ ## Release information
57
+
58
+ To make a new release, please do:
59
+ * update the version in `beaker_puppet_helpers.gemspec`
60
+ * Install gems with `bundle install --with release --path .vendor`
61
+ * generate the changelog with `bundle exec rake changelog`
62
+ * Check if the new version matches the closed issues/PRs in the changelog
63
+ * Create a PR with it
64
+ * After it got merged, push a tag. GitHub actions will do the actual release to Rubygems and GitHub Packages
data/Rakefile ADDED
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'voxpupuli/rubocop/rake'
5
+ rescue LoadError
6
+ # the voxpupuli-rubocop gem is optional
7
+ end
8
+
9
+ begin
10
+ require 'rspec/core/rake_task'
11
+ rescue LoadError
12
+ # No rspec
13
+ else
14
+ RSpec::Core::RakeTask.new
15
+ end
16
+
17
+ begin
18
+ require 'yard'
19
+ rescue LoadError
20
+ # No yardoc
21
+ else
22
+ YARD::Rake::YardocTask.new
23
+ end
24
+
25
+ desc <<~DESC
26
+ Run the acceptance tests
27
+
28
+ Accepted environment variables:
29
+ * TESTS=acceptance/tests
30
+ * BEAKER_HOSTS=config/nodes/foo.yaml or specify in a form beaker-hostgenerator accepts, e.g. ubuntu2004-64a.
31
+ * BEAKER_LOG_LEVEL=debug
32
+ * BEAKER_PRESERVE_HOSTS=onfail
33
+ * BEAKER_OPTIONS='--more --options'
34
+ DESC
35
+ task :acceptance do
36
+ hosts = {
37
+ aio: %w[centos7 centos8 debian10 debian11],
38
+ foss: %w[debian10 debian11],
39
+ }
40
+ default_hosts = hosts.map { |type, h| h.map { |host| "#{host}-64{type=#{type}}" }.join('-') }.join('-')
41
+ hosts = ENV['BEAKER_HOSTS'] || default_hosts
42
+
43
+ tests = ENV['TESTS'] || 'acceptance/tests'
44
+ log_level = ENV['BEAKER_LOG_LEVEL'] || 'debug'
45
+ preserve_hosts = ENV['BEAKER_PRESERVE_HOSTS'] || 'onfail'
46
+
47
+ args = [
48
+ "--hosts=#{hosts}",
49
+ "--tests=#{tests}",
50
+ "--log-level=#{log_level}",
51
+ "--preserve-hosts=#{preserve_hosts}",
52
+ ] + ENV['BEAKER_OPTIONS'].to_s.split
53
+
54
+ sh('beaker', *args.compact)
55
+ end
56
+
57
+ desc 'Run the entire test suite'
58
+ task test: %w[rubocop spec acceptance]
59
+
60
+ task default: :test
61
+
62
+ begin
63
+ require 'github_changelog_generator/task'
64
+ rescue LoadError
65
+ # No changelog generator
66
+ else
67
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
68
+ config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file."
69
+ config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog]
70
+ config.user = 'voxpupuli'
71
+ config.project = 'beaker_puppet_helpers'
72
+ config.future_release = Gem::Specification.load("#{config.project}.gemspec").version.to_s
73
+ end
74
+ end
@@ -0,0 +1,8 @@
1
+ # @summary a dummy class to verify the module is installed
2
+ class dummy {
3
+ file { '/beaker-puppet-helpers-test':
4
+ ensure => 'file',
5
+ content => 'Hello World!',
6
+ mode => '0644',
7
+ }
8
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "puppet-dummy",
3
+ "version": "1.0.0",
4
+ "author": "puppet",
5
+ "summary": "A dummy module",
6
+ "description": "This module is used in acceptance tests to verify the beaker helper works",
7
+ "license": "Apache-2.0",
8
+ "source": "https://github.com/voxpupuli/beaker_puppet_helpers",
9
+ "project_page": "https://github.com/voxpupuli/beaker_puppet_helpers",
10
+ "project_page": "https://github.com/voxpupuli/beaker_puppet_helpers/issues",
11
+ "dependencies": [
12
+ {"name": "puppetlabs/stdlib"}
13
+ ]
14
+ }
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'beaker_puppet_helpers'
4
+
5
+ test_name '#install_puppet_release_repo_on' do
6
+ block_on hosts, run_in_parallel: true do |host|
7
+ BeakerPuppetHelpers::InstallUtils.install_puppet_release_repo_on(host) if host['type'] == 'aio'
8
+ end
9
+ end
10
+
11
+ test_name 'install puppet' do
12
+ step 'run installation' do
13
+ block_on hosts, run_in_parallel: true do |host|
14
+ package_name = BeakerPuppetHelpers::InstallUtils.puppet_package_name(host, prefer_aio: host['type'] == 'aio')
15
+ host.install_package(package_name)
16
+ end
17
+ end
18
+
19
+ step 'run puppet' do
20
+ on hosts, 'puppet --version', run_in_parallel: true
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'beaker_puppet_helpers'
4
+
5
+ test_name '#install_puppet_module_via_pmt_on' do
6
+ install_puppet_module_via_pmt_on(hosts, 'puppetlabs-stdlib')
7
+ end
8
+
9
+ test_name '#install_local_module_on' do
10
+ step 'install module' do
11
+ install_local_module_on(hosts, 'acceptance/dummy')
12
+ end
13
+
14
+ step 'clean result' do
15
+ on hosts, 'rm -f /beaker-puppet-helpers-test'
16
+ end
17
+
18
+ step 'apply module' do
19
+ on hosts, 'echo include dummy | puppet apply', run_in_parallel: true
20
+ end
21
+
22
+ step 'verify' do
23
+ block_on hosts, run_in_parallel: true do |host|
24
+ assert_equal('Hello World!', file_contents_on(host, '/beaker-puppet-helpers-test'))
25
+ end
26
+ end
27
+ end