Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor plugin specs to reduce boiler plate #697

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

ekohl
Copy link
Member

@ekohl ekohl commented Aug 6, 2021

I'm not entirely sure if this is a good idea. It does have some magic feeling to it. On the other hand, specs are more readable this way (IMHO). I'm interested in feedback.

I only converted a few specs, but hopefully that's enough to see the pattern.

@ekohl
Copy link
Member Author

ekohl commented Aug 6, 2021

voxpupuli/rspec-puppet-facts#132 is the same thing, but more generalized.

describe_plugin 'foreman_proxy::plugin::abrt' do
describe 'with default settings' do
include_examples 'a plugin with a settings file', 'abrt' do
let(:expected_config) { /:enabled: https/ }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally I like the examples tactic here as it simplifies the boilerplate. I think it can take some experience to unwind include_examples sometimes. I would probably prefer if each spec declared this in the same way with my preference being https://github.com/theforeman/puppet-foreman_proxy/pull/697/files#diff-622e312bc4439aacb45352c217bcd7880af426efd40e1e8f6dc27501eab16769R8-R14 because it makes it clear its a yaml file and declares it -- less mental overhead when reading through these or as developers copy/paste for new plugins.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what it's worth, I kept the change minimal here. The old example was also this regex. I'm not opposed to an explicit long form everywhere, at least for default settings. For the case where we disable it and only want to ensure it's :enabled: false I think the regex form is still better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants