rspec-puppet-facts 2.0.4 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +10 -1
- data/.github/workflows/release.yml +4 -4
- data/.github/workflows/test.yml +31 -7
- data/.rubocop.yml +16 -0
- data/.rubocop_todo.yml +76 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile +4 -7
- data/README.md +24 -2
- data/Rakefile +11 -5
- data/ext/puppet_agent_components.json +1 -1
- data/lib/rspec-puppet-facts/version.rb +1 -1
- data/lib/rspec-puppet-facts.rb +75 -31
- data/rspec-puppet-facts.gemspec +12 -10
- data/spec/rspec_puppet_facts_spec.rb +323 -196
- metadata +75 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d829fff0e8b5d1ca49d62e80553aeb95658f8b12fd774c92c9f92322a52bbe1
|
4
|
+
data.tar.gz: a00418119004c0fbad99a43362ff35f3e76ee118b2f460c922c3b4d6d51fce49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2467fd5253ad8096ac306a162580b4bff64cee7ff0193a67b769ef2d272346781e12b9c07ed69dd33ace30b00dd51f6668bb99c2493d5976be4fbc896f86b9cd
|
7
|
+
data.tar.gz: '092e3f2d3b573d26caf21c953fc8dbc92e5a77599a34b61da190669514f6875a01df1289e6daeec43760c7a591f2491fef5c6decf708bccee4f6ad67a881793d'
|
data/.github/dependabot.yml
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
version: 2
|
2
2
|
updates:
|
3
|
+
# raise PRs for gem updates
|
3
4
|
- package-ecosystem: bundler
|
4
5
|
directory: "/"
|
5
6
|
schedule:
|
6
7
|
interval: daily
|
7
|
-
time: "
|
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"
|
8
17
|
open-pull-requests-limit: 10
|
@@ -10,15 +10,15 @@ jobs:
|
|
10
10
|
runs-on: ubuntu-latest
|
11
11
|
if: github.repository_owner == 'voxpupuli'
|
12
12
|
steps:
|
13
|
-
- uses: actions/checkout@
|
14
|
-
- name: Install Ruby 3.
|
13
|
+
- uses: actions/checkout@v4
|
14
|
+
- name: Install Ruby 3.3
|
15
15
|
uses: ruby/setup-ruby@v1
|
16
16
|
with:
|
17
|
-
ruby-version: '3.
|
17
|
+
ruby-version: '3.3'
|
18
18
|
env:
|
19
19
|
BUNDLE_WITHOUT: release
|
20
20
|
- name: Build gem
|
21
|
-
run: gem build *.gemspec
|
21
|
+
run: gem build --strict --verbose *.gemspec
|
22
22
|
- name: Publish gem to rubygems.org
|
23
23
|
run: gem push *.gem
|
24
24
|
env:
|
data/.github/workflows/test.yml
CHANGED
@@ -1,30 +1,45 @@
|
|
1
1
|
name: Test
|
2
2
|
|
3
3
|
on:
|
4
|
-
|
5
|
-
|
4
|
+
pull_request: {}
|
5
|
+
push:
|
6
|
+
branches:
|
7
|
+
- master
|
6
8
|
|
7
9
|
env:
|
8
10
|
BUNDLE_WITHOUT: release
|
9
11
|
|
10
12
|
jobs:
|
13
|
+
rubocop:
|
14
|
+
env:
|
15
|
+
BUNDLE_WITHOUT: release
|
16
|
+
runs-on: ubuntu-latest
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v4
|
19
|
+
- name: Install Ruby ${{ matrix.ruby }}
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: "3.3"
|
23
|
+
bundler-cache: true
|
24
|
+
- name: Run Rubocop
|
25
|
+
run: bundle exec rake rubocop
|
26
|
+
|
11
27
|
test:
|
12
28
|
runs-on: ubuntu-latest
|
13
29
|
strategy:
|
14
30
|
fail-fast: false
|
15
31
|
matrix:
|
16
32
|
include:
|
17
|
-
- ruby: '2.4'
|
18
|
-
- ruby: '2.5'
|
19
|
-
- ruby: '2.6'
|
20
33
|
- ruby: '2.7'
|
21
34
|
- ruby: '3.0'
|
22
35
|
- ruby: '3.1'
|
36
|
+
- ruby: '3.2'
|
37
|
+
- ruby: '3.3'
|
23
38
|
coverage: 'yes'
|
24
39
|
env:
|
25
40
|
COVERAGE: ${{ matrix.coverage }}
|
26
41
|
steps:
|
27
|
-
- uses: actions/checkout@
|
42
|
+
- uses: actions/checkout@v4
|
28
43
|
- name: Install Ruby ${{ matrix.ruby }}
|
29
44
|
uses: ruby/setup-ruby@v1
|
30
45
|
with:
|
@@ -35,4 +50,13 @@ jobs:
|
|
35
50
|
- name: Test against Puppet component versions
|
36
51
|
run: bundle exec rake puppet_versions:test
|
37
52
|
- name: Test gem build
|
38
|
-
run:
|
53
|
+
run: gem build --strict --verbose *.gemspec
|
54
|
+
|
55
|
+
tests:
|
56
|
+
needs:
|
57
|
+
- rubocop
|
58
|
+
- test
|
59
|
+
runs-on: ubuntu-latest
|
60
|
+
name: Test suite
|
61
|
+
steps:
|
62
|
+
- run: echo Test suite completed
|
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2023-07-06 14:12:32 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: 1
|
10
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
11
|
+
Performance/MapCompact:
|
12
|
+
Exclude:
|
13
|
+
- 'lib/rspec-puppet-facts.rb'
|
14
|
+
|
15
|
+
# Offense count: 32
|
16
|
+
# Configuration parameters: Prefixes, AllowedPatterns.
|
17
|
+
# Prefixes: when, with, without
|
18
|
+
RSpec/ContextWording:
|
19
|
+
Exclude:
|
20
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
21
|
+
|
22
|
+
# Offense count: 7
|
23
|
+
# Configuration parameters: CountAsOne.
|
24
|
+
RSpec/ExampleLength:
|
25
|
+
Max: 13
|
26
|
+
|
27
|
+
# Offense count: 1
|
28
|
+
RSpec/ExpectInHook:
|
29
|
+
Exclude:
|
30
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
31
|
+
|
32
|
+
# Offense count: 20
|
33
|
+
# This cop supports safe autocorrection (--autocorrect).
|
34
|
+
# Configuration parameters: EnforcedStyle.
|
35
|
+
# SupportedStyles: single_line_only, single_statement_only, disallow, require_implicit
|
36
|
+
RSpec/ImplicitSubject:
|
37
|
+
Exclude:
|
38
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
39
|
+
|
40
|
+
# Offense count: 4
|
41
|
+
RSpec/LeakyConstantDeclaration:
|
42
|
+
Exclude:
|
43
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
44
|
+
|
45
|
+
# Offense count: 7
|
46
|
+
# Configuration parameters: .
|
47
|
+
# SupportedStyles: have_received, receive
|
48
|
+
RSpec/MessageSpies:
|
49
|
+
EnforcedStyle: receive
|
50
|
+
|
51
|
+
# Offense count: 4
|
52
|
+
RSpec/MultipleExpectations:
|
53
|
+
Max: 2
|
54
|
+
|
55
|
+
# Offense count: 46
|
56
|
+
# Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
|
57
|
+
# SupportedStyles: always, named_only
|
58
|
+
RSpec/NamedSubject:
|
59
|
+
Exclude:
|
60
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
61
|
+
|
62
|
+
# Offense count: 14
|
63
|
+
# Configuration parameters: AllowedGroups.
|
64
|
+
RSpec/NestedGroups:
|
65
|
+
Max: 6
|
66
|
+
|
67
|
+
# Offense count: 1
|
68
|
+
RSpec/StubbedMock:
|
69
|
+
Exclude:
|
70
|
+
- 'spec/rspec_puppet_facts_spec.rb'
|
71
|
+
|
72
|
+
# Offense count: 2
|
73
|
+
# This cop supports safe autocorrection (--autocorrect).
|
74
|
+
Rake/Desc:
|
75
|
+
Exclude:
|
76
|
+
- 'Rakefile'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,71 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [3.0.0](https://github.com/voxpupuli/rspec-puppet-facts/tree/3.0.0) (2024-03-23)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/voxpupuli/rspec-puppet-facts/compare/2.0.5...3.0.0)
|
6
|
+
|
7
|
+
**symbolized facts deprecation**
|
8
|
+
|
9
|
+
With the release of rspec-puppet-facts 4.0.0 we will remove support for symbolized facts. At the moment people typically use this in their unit files:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
case facts[:os]['name']
|
13
|
+
when 'Archlinux'
|
14
|
+
context 'on Archlinux' do
|
15
|
+
it { is_expected.to contain_package('borg') }
|
16
|
+
end
|
17
|
+
when 'Ubuntu'
|
18
|
+
```
|
19
|
+
|
20
|
+
For history reasons the first level of facts were symbols. You will have to update it to strings with the 4.0.0 release:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
case facts['os']['name']
|
24
|
+
when 'Archlinux'
|
25
|
+
context 'on Archlinux' do
|
26
|
+
it { is_expected.to contain_package('borg') }
|
27
|
+
end
|
28
|
+
when 'Ubuntu'
|
29
|
+
```
|
30
|
+
|
31
|
+
|
32
|
+
**Breaking changes:**
|
33
|
+
|
34
|
+
- Use facterdb\_string\_keys configuration option for custom facts [\#157](https://github.com/voxpupuli/rspec-puppet-facts/pull/157) ([jordanbreen28](https://github.com/jordanbreen28))
|
35
|
+
- Do not query for the exact facter version [\#151](https://github.com/voxpupuli/rspec-puppet-facts/pull/151) ([ekohl](https://github.com/ekohl))
|
36
|
+
- Drop Ruby 2.4/2.5/2.6 support [\#149](https://github.com/voxpupuli/rspec-puppet-facts/pull/149) ([bastelfreak](https://github.com/bastelfreak))
|
37
|
+
|
38
|
+
**Implemented enhancements:**
|
39
|
+
|
40
|
+
- Add Ruby 3.3 support [\#169](https://github.com/voxpupuli/rspec-puppet-facts/pull/169) ([bastelfreak](https://github.com/bastelfreak))
|
41
|
+
- gemspec: Add version constraints & CI: Build gem in strict mode [\#165](https://github.com/voxpupuli/rspec-puppet-facts/pull/165) ([bastelfreak](https://github.com/bastelfreak))
|
42
|
+
- update puppet agent components [\#164](https://github.com/voxpupuli/rspec-puppet-facts/pull/164) ([bastelfreak](https://github.com/bastelfreak))
|
43
|
+
- Add merge facts option to add\_custom\_fact [\#160](https://github.com/voxpupuli/rspec-puppet-facts/pull/160) ([jordanbreen28](https://github.com/jordanbreen28))
|
44
|
+
- Collect facts iteratively [\#152](https://github.com/voxpupuli/rspec-puppet-facts/pull/152) ([ekohl](https://github.com/ekohl))
|
45
|
+
- Use Hash.to\_h to construct a new hash [\#150](https://github.com/voxpupuli/rspec-puppet-facts/pull/150) ([ekohl](https://github.com/ekohl))
|
46
|
+
- Add Ruby 3.2 support [\#148](https://github.com/voxpupuli/rspec-puppet-facts/pull/148) ([bastelfreak](https://github.com/bastelfreak))
|
47
|
+
|
48
|
+
**Merged pull requests:**
|
49
|
+
|
50
|
+
- Update voxpupuli-rubocop requirement from ~\> 2.4.0 to ~\> 2.6.0 [\#168](https://github.com/voxpupuli/rspec-puppet-facts/pull/168) ([dependabot[bot]](https://github.com/apps/dependabot))
|
51
|
+
- github\_changelog\_generator: Apply best practices [\#163](https://github.com/voxpupuli/rspec-puppet-facts/pull/163) ([bastelfreak](https://github.com/bastelfreak))
|
52
|
+
- Gemfile: Add faraday as github\_changelog\_generator dep [\#162](https://github.com/voxpupuli/rspec-puppet-facts/pull/162) ([bastelfreak](https://github.com/bastelfreak))
|
53
|
+
- voxpupuli-rubocop: Pin to patch version [\#161](https://github.com/voxpupuli/rspec-puppet-facts/pull/161) ([bastelfreak](https://github.com/bastelfreak))
|
54
|
+
- Update voxpupuli-rubocop requirement from ~\> 1.3 to ~\> 2.0 [\#156](https://github.com/voxpupuli/rspec-puppet-facts/pull/156) ([dependabot[bot]](https://github.com/apps/dependabot))
|
55
|
+
- CI: add dummy job to depend on [\#155](https://github.com/voxpupuli/rspec-puppet-facts/pull/155) ([bastelfreak](https://github.com/bastelfreak))
|
56
|
+
- migrate to voxpupuli-rubocop [\#154](https://github.com/voxpupuli/rspec-puppet-facts/pull/154) ([bastelfreak](https://github.com/bastelfreak))
|
57
|
+
- Update rubocop requirement from ~\> 1.48.1 to ~\> 1.54.1 [\#153](https://github.com/voxpupuli/rspec-puppet-facts/pull/153) ([dependabot[bot]](https://github.com/apps/dependabot))
|
58
|
+
- Introduce RuboCop and fix various cops [\#146](https://github.com/voxpupuli/rspec-puppet-facts/pull/146) ([ekohl](https://github.com/ekohl))
|
59
|
+
- Update puppet agent components [\#145](https://github.com/voxpupuli/rspec-puppet-facts/pull/145) ([bastelfreak](https://github.com/bastelfreak))
|
60
|
+
|
61
|
+
## [2.0.5](https://github.com/voxpupuli/rspec-puppet-facts/tree/2.0.5) (2022-04-22)
|
62
|
+
|
63
|
+
[Full Changelog](https://github.com/voxpupuli/rspec-puppet-facts/compare/2.0.4...2.0.5)
|
64
|
+
|
65
|
+
**Fixed bugs:**
|
66
|
+
|
67
|
+
- fallback to lsb facts if structured facts are nil [\#140](https://github.com/voxpupuli/rspec-puppet-facts/pull/140) ([bastelfreak](https://github.com/bastelfreak))
|
68
|
+
|
3
69
|
## [2.0.4](https://github.com/voxpupuli/rspec-puppet-facts/tree/2.0.4) (2022-04-22)
|
4
70
|
|
5
71
|
[Full Changelog](https://github.com/voxpupuli/rspec-puppet-facts/compare/2.0.3...2.0.4)
|
data/Gemfile
CHANGED
@@ -2,17 +2,14 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
|
6
|
-
gem 'facter', facterversion, :require => false
|
7
|
-
else
|
8
|
-
gem 'facter', :require => false
|
9
|
-
end
|
5
|
+
gem 'facter', ENV['FACTER_GEM_VERSION'], :require => false
|
10
6
|
|
11
7
|
group :release do
|
12
|
-
gem '
|
8
|
+
gem 'faraday-retry', '~> 2.1', require: false
|
9
|
+
gem 'github_changelog_generator', '~> 1.16.4', require: false
|
13
10
|
end
|
14
11
|
|
15
12
|
group :coverage, optional: ENV['COVERAGE']!='yes' do
|
16
|
-
gem 'simplecov-console', :require => false
|
17
13
|
gem 'codecov', :require => false
|
14
|
+
gem 'simplecov-console', :require => false
|
18
15
|
end
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ rspec-puppet-facts
|
|
10
10
|
[![Donated by Camptocamp](https://img.shields.io/badge/donated%20by-camptocamp-fb7047.svg)](#transfer-notice)
|
11
11
|
|
12
12
|
Based on an original idea from [apenney](https://github.com/apenney/puppet_facts/),
|
13
|
-
this gem provides a method of running your [rspec-puppet](https://github.com/
|
13
|
+
this gem provides a method of running your [rspec-puppet](https://github.com/puppetlabs/rspec-puppet)
|
14
14
|
tests against the facts for all your supported operating systems (provided by
|
15
15
|
[facterdb](https://github.com/voxpupuli/facterdb)).
|
16
16
|
This simplifies unit testing because you don't need to specify the facts yourself.
|
@@ -443,6 +443,28 @@ To do this, pass a lambda as the value for the custom fact. The lambda is passed
|
|
443
443
|
add_custom_fact :root_home, lambda { |os,facts| "/tmp/#{facts['hostname']}" }
|
444
444
|
```
|
445
445
|
|
446
|
+
#### Merge into existing facts
|
447
|
+
|
448
|
+
You can also supply an optional input `:merge_facts` to the `add_custom_fact` method.
|
449
|
+
|
450
|
+
This allows you to merge facts values into a fact, if the fact is already present in the facts hash as oppose to overwriting the fact value.
|
451
|
+
|
452
|
+
```ruby
|
453
|
+
add_custom_fact :identity, { 'user' => 'test_user' }, merge_facts: true
|
454
|
+
```
|
455
|
+
|
456
|
+
Will result in a hash of the identity fact like the below:
|
457
|
+
|
458
|
+
```ruby
|
459
|
+
{
|
460
|
+
"gid"=>0,
|
461
|
+
"group"=>"root",
|
462
|
+
"privileged"=>true,
|
463
|
+
"uid"=>0,
|
464
|
+
"user"=>"test_user"
|
465
|
+
}
|
466
|
+
```
|
467
|
+
|
446
468
|
### Supplying Custom External Facts through FacterDB
|
447
469
|
Rspec-puppet-facts uses a gem called facterdb that contains many fact sets of various combinations that are pre generated. Rspec-puppet-facts queries
|
448
470
|
facterdb to pull out a specific fact set to use when testing.
|
@@ -510,7 +532,7 @@ ENV['FACTERDB_SEARCH_PATHS'] = custom_facts
|
|
510
532
|
```
|
511
533
|
## Running your tests
|
512
534
|
|
513
|
-
For most cases, there is no change to how you run your tests. Running `rake spec` will run all the tests against the facts for all the supported operating systems. If you are developing a module using the [Puppet Development Kit](https://puppet.com/docs/pdk/
|
535
|
+
For most cases, there is no change to how you run your tests. Running `rake spec` will run all the tests against the facts for all the supported operating systems. If you are developing a module using the [Puppet Development Kit](https://puppet.com/docs/pdk/3.x/pdk_install.html), `pdk test unit` will run all your tests against the supported operating systems listed in `metadata.json`.
|
514
536
|
|
515
537
|
If you want to run the tests against the facts for specific operating systems, you can provide a filter in the `SPEC_FACTS_OS` environment variable and only the supported operating systems whose name starts with the specified filter will be used.
|
516
538
|
|
data/Rakefile
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
2
|
-
|
3
1
|
PUPPET_VERSIONS_PATH = File.join(__dir__, 'ext', 'puppet_agent_components.json')
|
4
2
|
|
5
3
|
begin
|
@@ -8,6 +6,7 @@ begin
|
|
8
6
|
RSpec::Core::RakeTask.new(:spec)
|
9
7
|
YARD::Rake::YardocTask.new
|
10
8
|
rescue LoadError
|
9
|
+
# yard is optional
|
11
10
|
end
|
12
11
|
|
13
12
|
desc 'Produce Commit history since last tag'
|
@@ -49,15 +48,22 @@ namespace :puppet_versions do
|
|
49
48
|
end
|
50
49
|
|
51
50
|
begin
|
52
|
-
require 'rubygems'
|
53
51
|
require 'github_changelog_generator/task'
|
54
|
-
|
52
|
+
rescue LoadError
|
53
|
+
# github_changelog_generator is an optional group
|
54
|
+
else
|
55
|
+
require 'rubygems'
|
55
56
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
56
|
-
config.exclude_labels = %w{duplicate question invalid wontfix wont-fix skip-changelog}
|
57
|
+
config.exclude_labels = %w{duplicate question invalid wontfix wont-fix skip-changelog github_actions}
|
57
58
|
config.user = 'voxpupuli'
|
58
59
|
config.project = 'rspec-puppet-facts'
|
59
60
|
gem_version = Gem::Specification.load("#{config.project}.gemspec").version
|
60
61
|
config.future_release = gem_version
|
61
62
|
end
|
63
|
+
end
|
64
|
+
|
65
|
+
begin
|
66
|
+
require 'voxpupuli/rubocop/rake'
|
62
67
|
rescue LoadError
|
68
|
+
# the voxpupuli-rubocop gem is optional
|
63
69
|
end
|