diff options
| -rw-r--r-- | .devcontainer/Dockerfile | 6 | ||||
| -rw-r--r-- | .devcontainer/devcontainer.json | 23 | ||||
| -rw-r--r-- | .github/workflows/auto_release.yml | 84 | ||||
| -rw-r--r-- | .github/workflows/release.yml | 47 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | .pdkignore | 5 | ||||
| -rw-r--r-- | .rubocop.yml | 430 | ||||
| -rw-r--r-- | .sync.yml | 63 | ||||
| -rw-r--r-- | Gemfile | 58 | ||||
| -rw-r--r-- | Rakefile | 18 | ||||
| -rw-r--r-- | metadata.json | 6 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 20 | 
12 files changed, 665 insertions, 96 deletions
| diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..12ed4ff --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,6 @@ +FROM puppet/pdk:latest + +# [Optional] Uncomment this section to install additional packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +#     && apt-get -y install --no-install-recommends <your-package-list-here> + diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..f1a55dc --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,23 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.140.1/containers/puppet +{ +	"name": "Puppet Development Kit (Community)", +	"dockerFile": "Dockerfile", + +	// Set *default* container specific settings.json values on container create. +	"settings": { +		"terminal.integrated.shell.linux": "/bin/bash" +	}, + +	// Add the IDs of extensions you want installed when the container is created. +	"extensions": [ +		"puppet.puppet-vscode", +		"rebornix.Ruby" +	] + +	// Use 'forwardPorts' to make a list of ports inside the container available locally. +	// "forwardPorts": [], + +	// Use 'postCreateCommand' to run commands after the container is created. +	// "postCreateCommand": "pdk --version", +} diff --git a/.github/workflows/auto_release.yml b/.github/workflows/auto_release.yml new file mode 100644 index 0000000..e028483 --- /dev/null +++ b/.github/workflows/auto_release.yml @@ -0,0 +1,84 @@ +name: "Auto release" + +on: +  workflow_dispatch: + +env: +  HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6  +  HONEYCOMB_DATASET: litmus tests +  CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +jobs: +  auto_release: +    name: "Automatic release prep" +    runs-on: ubuntu-20.04 + +    steps: +    - name: "Honeycomb: Start recording" +      uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1 +      with: +        apikey: ${{ env.HONEYCOMB_WRITEKEY }} +        dataset: ${{ env.HONEYCOMB_DATASET }} +        job-status: ${{ job.status }} + +    - name: "Honeycomb: start first step" +      run: | +        echo STEP_ID="auto-release" >> $GITHUB_ENV +        echo STEP_START=$(date +%s) >> $GITHUB_ENV + +    - name: "Checkout Source" +      if: ${{ github.repository_owner == 'puppetlabs' }} +      uses: actions/checkout@v2 +      with: +        fetch-depth: 0 +        persist-credentials: false + +    - name: "PDK Release prep" +      uses: docker://puppet/iac_release:ci +      with: +        args: 'release prep --force' +      env: +        CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +    - name: "Get Version" +      if: ${{ github.repository_owner == 'puppetlabs' }} +      id: gv +      run: | +        echo "::set-output name=ver::$(jq --raw-output .version metadata.json)" + +    - name: "Commit changes" +      if: ${{ github.repository_owner == 'puppetlabs' }} +      run: | +        git config --local user.email "${{ github.repository_owner }}@users.noreply.github.com" +        git config --local user.name "GitHub Action" +        git add . +        git commit -m "Release prep v${{ steps.gv.outputs.ver }}" + +    - name: Create Pull Request +      id: cpr +      uses: puppetlabs/peter-evans-create-pull-request@v3 +      if: ${{ github.repository_owner == 'puppetlabs' }} +      with: +        token: ${{ secrets.GITHUB_TOKEN }} +        commit-message: "Release prep v${{ steps.gv.outputs.ver }}" +        branch: "release-prep" +        delete-branch: true +        title: "Release prep v${{ steps.gv.outputs.ver }}" +        body: | +          Automated release-prep through [pdk-templates](https://github.com/puppetlabs/pdk-templates/blob/main/moduleroot/.github/workflows/auto_release.yml.erb) from commit ${{ github.sha }}.  +          Please verify before merging: +          - [ ] last [nightly](https://github.com/${{ github.repository }}/actions/workflows/nightly.yml) run is green +          - [ ] [Changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) is readable and has no unlabeled pull requests +          - [ ] Ensure the [changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) version and [metadata](https://github.com/${{ github.repository }}/blob/release-prep/metadata.json) version match +        labels: "maintenance" + +    - name: PR outputs +      if: ${{ github.repository_owner == 'puppetlabs' }} +      run: | +        echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" +        echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" + +    - name: "Honeycomb: Record finish step" +      if: ${{ always() }} +      run: | +        buildevents step $TRACE_ID $STEP_ID $STEP_START 'Finished auto release workflow' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1509f6e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +name: "Publish module" + +on: +  workflow_dispatch: +   +jobs: +  create-github-release: +    name: Deploy GitHub Release +    runs-on: ubuntu-20.04 +    steps: +      - name: Checkout code +        uses: actions/checkout@v2 +        with: +          ref: ${{ github.ref }} +          clean: true +          fetch-depth: 0 +      - name: Get Version +        id: gv +        run: | +          echo "::set-output name=ver::$(jq --raw-output .version metadata.json)" +      - name: Create Release +        uses: actions/create-release@v1 +        id: create_release +        env: +          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +        with: +          tag_name: "v${{ steps.gv.outputs.ver }}" +          draft: false +          prerelease: false + +  deploy-forge: +    name: Deploy to Forge +    runs-on: ubuntu-20.04 +    steps: +      - name: Checkout code +        uses: actions/checkout@v2 +        with: +          ref: ${{ github.ref }} +          clean: true +      - name: "PDK Build" +        uses: docker://puppet/pdk:nightly +        with: +          args: 'build' +      - name: "Push to Forge" +        uses: docker://puppet/pdk:nightly +        with: +          args: 'release publish --forge-token ${{ secrets.FORGE_API_KEY }} --force' @@ -25,3 +25,4 @@  .project  .envrc  /inventory.yaml +/spec/fixtures/litmus_inventory.yaml @@ -25,13 +25,16 @@  .project  .envrc  /inventory.yaml +/spec/fixtures/litmus_inventory.yaml  /appveyor.yml +/.editorconfig  /.fixtures.yml  /Gemfile  /.gitattributes  /.gitignore  /.gitlab-ci.yml  /.pdkignore +/.puppet-lint.rc  /Rakefile  /rakelib/  /.rspec @@ -40,3 +43,5 @@  /.yardopts  /spec/  /.vscode/ +/.sync.yml +/.devcontainer/ diff --git a/.rubocop.yml b/.rubocop.yml index 45f4463..4416e78 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,12 +1,12 @@  ---  require: +- rubocop-performance  - rubocop-rspec -- rubocop-i18n  AllCops:    DisplayCopNames: true -  TargetRubyVersion: '2.1' +  TargetRubyVersion: '2.4'    Include: -  - "./**/*.rb" +  - "**/*.rb"    Exclude:    - bin/*    - ".vendor/**/*" @@ -18,17 +18,10 @@ AllCops:    - "**/Puppetfile"    - "**/Vagrantfile"    - "**/Guardfile" -Metrics/LineLength: +Layout/LineLength:    Description: People have wide screens, use them.    Max: 200    Enabled: false -GetText: -  Enabled: false -GetText/DecorateString: -  Description: We don't want to decorate test output. -  Exclude: -  - spec/**/* -  Enabled: false  RSpec/BeforeAfterAll:    Description: Beware of using after(:all) as it may cause state to leak between tests.      A necessary evil in acceptance testing. @@ -37,6 +30,9 @@ RSpec/BeforeAfterAll:  RSpec/HookArgument:    Description: Prefer explicit :each argument, matching existing module's style    EnforcedStyle: each +RSpec/DescribeSymbol: +  Exclude: +  - spec/unit/facter/**/*.rb  Style/BlockDelimiters:    Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to      be consistent then. @@ -69,14 +65,30 @@ Style/TrailingCommaInArguments:    Description: Prefer always trailing comma on multiline argument lists. This makes      diffs, and re-ordering nicer.    EnforcedStyleForMultiline: comma -Style/TrailingCommaInLiteral: +Style/TrailingCommaInArrayLiteral:    Description: Prefer always trailing comma on multiline literals. This makes diffs,      and re-ordering nicer.    EnforcedStyleForMultiline: comma  Style/SymbolArray:    Description: Using percent style obscures symbolic intent of array's contents.    EnforcedStyle: brackets -Layout/IndentHeredoc: +Style/SignalException: +  Enabled: false +Style/DoubleNegation: +  Enabled: false +Style/MultipleComparison: +  Enabled: false +Style/NumericPredicate: +  Enabled: false +Layout/HeredocIndentation: +  Enabled: false +Metrics/BlockNesting: +  Enabled: false +Naming/AccessorMethodName: +  Enabled: false +Naming/PredicateName: +  Enabled: false +RSpec/VariableName:    Enabled: false  RSpec/MessageSpies:    EnforcedStyle: receive @@ -86,20 +98,162 @@ Style/Documentation:    - spec/**/*  Style/WordArray:    EnforcedStyle: brackets +Performance/AncestorsInclude: +  Enabled: true +Performance/BigDecimalWithNumericArgument: +  Enabled: true +Performance/BlockGivenWithExplicitBlock: +  Enabled: true +Performance/CaseWhenSplat: +  Enabled: true +Performance/ConstantRegexp: +  Enabled: true +Performance/MethodObjectAsBlock: +  Enabled: true +Performance/RedundantSortBlock: +  Enabled: true +Performance/RedundantStringChars: +  Enabled: true +Performance/ReverseFirst: +  Enabled: true +Performance/SortReverse: +  Enabled: true +Performance/Squeeze: +  Enabled: true +Performance/StringInclude: +  Enabled: true +Performance/Sum: +  Enabled: true  Style/CollectionMethods:    Enabled: true  Style/MethodCalledOnDoEndBlock:    Enabled: true  Style/StringMethods:    Enabled: true -GetText/DecorateFunctionMessage: +Bundler/InsecureProtocolSource:    Enabled: false -GetText/DecorateStringFormattingUsingInterpolation: +Gemspec/DuplicatedAssignment:    Enabled: false -GetText/DecorateStringFormattingUsingPercent: +Gemspec/OrderedDependencies: +  Enabled: false +Gemspec/RequiredRubyVersion: +  Enabled: false +Gemspec/RubyVersionGlobalsUsage: +  Enabled: false +Layout/ArgumentAlignment: +  Enabled: false +Layout/BeginEndAlignment: +  Enabled: false +Layout/ClosingHeredocIndentation: +  Enabled: false +Layout/EmptyComment: +  Enabled: false +Layout/EmptyLineAfterGuardClause: +  Enabled: false +Layout/EmptyLinesAroundArguments: +  Enabled: false +Layout/EmptyLinesAroundAttributeAccessor:    Enabled: false  Layout/EndOfLine:    Enabled: false +Layout/FirstArgumentIndentation: +  Enabled: false +Layout/HashAlignment: +  Enabled: false +Layout/LeadingEmptyLines: +  Enabled: false +Layout/SpaceAroundMethodCallOperator: +  Enabled: false +Layout/SpaceInsideArrayLiteralBrackets: +  Enabled: false +Layout/SpaceInsideReferenceBrackets: +  Enabled: false +Lint/BigDecimalNew: +  Enabled: false +Lint/BooleanSymbol: +  Enabled: false +Lint/ConstantDefinitionInBlock: +  Enabled: false +Lint/DeprecatedOpenSSLConstant: +  Enabled: false +Lint/DisjunctiveAssignmentInConstructor: +  Enabled: false +Lint/DuplicateElsifCondition: +  Enabled: false +Lint/DuplicateRequire: +  Enabled: false +Lint/DuplicateRescueException: +  Enabled: false +Lint/EmptyConditionalBody: +  Enabled: false +Lint/EmptyFile: +  Enabled: false +Lint/ErbNewArguments: +  Enabled: false +Lint/FloatComparison: +  Enabled: false +Lint/HashCompareByIdentity: +  Enabled: false +Lint/IdentityComparison: +  Enabled: false +Lint/InterpolationCheck: +  Enabled: false +Lint/MissingCopEnableDirective: +  Enabled: false +Lint/MixedRegexpCaptureTypes: +  Enabled: false +Lint/NestedPercentLiteral: +  Enabled: false +Lint/NonDeterministicRequireOrder: +  Enabled: false +Lint/OrderedMagicComments: +  Enabled: false +Lint/OutOfRangeRegexpRef: +  Enabled: false +Lint/RaiseException: +  Enabled: false +Lint/RedundantCopEnableDirective: +  Enabled: false +Lint/RedundantRequireStatement: +  Enabled: false +Lint/RedundantSafeNavigation: +  Enabled: false +Lint/RedundantWithIndex: +  Enabled: false +Lint/RedundantWithObject: +  Enabled: false +Lint/RegexpAsCondition: +  Enabled: false +Lint/ReturnInVoidContext: +  Enabled: false +Lint/SafeNavigationConsistency: +  Enabled: false +Lint/SafeNavigationWithEmpty: +  Enabled: false +Lint/SelfAssignment: +  Enabled: false +Lint/SendWithMixinArgument: +  Enabled: false +Lint/ShadowedArgument: +  Enabled: false +Lint/StructNewOverride: +  Enabled: false +Lint/ToJSON: +  Enabled: false +Lint/TopLevelReturnWithArgument: +  Enabled: false +Lint/TrailingCommaInAttributeDeclaration: +  Enabled: false +Lint/UnreachableLoop: +  Enabled: false +Lint/UriEscapeUnescape: +  Enabled: false +Lint/UriRegexp: +  Enabled: false +Lint/UselessMethodDefinition: +  Enabled: false +Lint/UselessTimes: +  Enabled: false  Metrics/AbcSize:    Enabled: false  Metrics/BlockLength: @@ -116,19 +270,261 @@ Metrics/ParameterLists:    Enabled: false  Metrics/PerceivedComplexity:    Enabled: false +Migration/DepartmentName: +  Enabled: false +Naming/BlockParameterName: +  Enabled: false +Naming/HeredocDelimiterCase: +  Enabled: false +Naming/HeredocDelimiterNaming: +  Enabled: false +Naming/MemoizedInstanceVariableName: +  Enabled: false +Naming/MethodParameterName: +  Enabled: false +Naming/RescuedExceptionsVariableName: +  Enabled: false +Naming/VariableNumber: +  Enabled: false +Performance/BindCall: +  Enabled: false +Performance/DeletePrefix: +  Enabled: false +Performance/DeleteSuffix: +  Enabled: false +Performance/InefficientHashSearch: +  Enabled: false +Performance/UnfreezeString: +  Enabled: false +Performance/UriDefaultParser: +  Enabled: false +RSpec/Be: +  Enabled: false +RSpec/Capybara/CurrentPathExpectation: +  Enabled: false +RSpec/Capybara/FeatureMethods: +  Enabled: false +RSpec/Capybara/VisibilityMatcher: +  Enabled: false +RSpec/ContextMethod: +  Enabled: false +RSpec/ContextWording: +  Enabled: false  RSpec/DescribeClass:    Enabled: false +RSpec/EmptyHook: +  Enabled: false +RSpec/EmptyLineAfterExample: +  Enabled: false +RSpec/EmptyLineAfterExampleGroup: +  Enabled: false +RSpec/EmptyLineAfterHook: +  Enabled: false  RSpec/ExampleLength:    Enabled: false -RSpec/MessageExpectation: +RSpec/ExampleWithoutDescription: +  Enabled: false +RSpec/ExpectChange: +  Enabled: false +RSpec/ExpectInHook: +  Enabled: false +RSpec/FactoryBot/AttributeDefinedStatically: +  Enabled: false +RSpec/FactoryBot/CreateList: +  Enabled: false +RSpec/FactoryBot/FactoryClassName: +  Enabled: false +RSpec/HooksBeforeExamples: +  Enabled: false +RSpec/ImplicitBlockExpectation: +  Enabled: false +RSpec/ImplicitSubject: +  Enabled: false +RSpec/LeakyConstantDeclaration: +  Enabled: false +RSpec/LetBeforeExamples: +  Enabled: false +RSpec/MissingExampleGroupArgument:    Enabled: false  RSpec/MultipleExpectations:    Enabled: false +RSpec/MultipleMemoizedHelpers: +  Enabled: false +RSpec/MultipleSubjects: +  Enabled: false  RSpec/NestedGroups:    Enabled: false +RSpec/PredicateMatcher: +  Enabled: false +RSpec/ReceiveCounts: +  Enabled: false +RSpec/ReceiveNever: +  Enabled: false +RSpec/RepeatedExampleGroupBody: +  Enabled: false +RSpec/RepeatedExampleGroupDescription: +  Enabled: false +RSpec/RepeatedIncludeExample: +  Enabled: false +RSpec/ReturnFromStub: +  Enabled: false +RSpec/SharedExamples: +  Enabled: false +RSpec/StubbedMock: +  Enabled: false +RSpec/UnspecifiedException: +  Enabled: false +RSpec/VariableDefinition: +  Enabled: false +RSpec/VoidExpect: +  Enabled: false +RSpec/Yield: +  Enabled: false +Security/Open: +  Enabled: false +Style/AccessModifierDeclarations: +  Enabled: false +Style/AccessorGrouping: +  Enabled: false  Style/AsciiComments:    Enabled: false +Style/BisectedAttrAccessor: +  Enabled: false +Style/CaseLikeIf: +  Enabled: false +Style/ClassEqualityComparison: +  Enabled: false +Style/ColonMethodDefinition: +  Enabled: false +Style/CombinableLoops: +  Enabled: false +Style/CommentedKeyword: +  Enabled: false +Style/Dir: +  Enabled: false +Style/DoubleCopDisableDirective: +  Enabled: false +Style/EmptyBlockParameter: +  Enabled: false +Style/EmptyLambdaParameter: +  Enabled: false +Style/Encoding: +  Enabled: false +Style/EvalWithLocation: +  Enabled: false +Style/ExpandPathArguments: +  Enabled: false +Style/ExplicitBlockArgument: +  Enabled: false +Style/ExponentialNotation: +  Enabled: false +Style/FloatDivision: +  Enabled: false +Style/FrozenStringLiteralComment: +  Enabled: false +Style/GlobalStdStream: +  Enabled: false +Style/HashAsLastArrayItem: +  Enabled: false +Style/HashLikeCase: +  Enabled: false +Style/HashTransformKeys: +  Enabled: false +Style/HashTransformValues: +  Enabled: false  Style/IfUnlessModifier:    Enabled: false +Style/KeywordParametersOrder: +  Enabled: false +Style/MinMax: +  Enabled: false +Style/MixinUsage: +  Enabled: false +Style/MultilineWhenThen: +  Enabled: false +Style/NegatedUnless: +  Enabled: false +Style/OptionalBooleanParameter: +  Enabled: false +Style/OrAssignment: +  Enabled: false +Style/RandomWithOffset: +  Enabled: false +Style/RedundantAssignment: +  Enabled: false +Style/RedundantCondition: +  Enabled: false +Style/RedundantConditional: +  Enabled: false +Style/RedundantFetchBlock: +  Enabled: false +Style/RedundantFileExtensionInRequire: +  Enabled: false +Style/RedundantRegexpCharacterClass: +  Enabled: false +Style/RedundantRegexpEscape: +  Enabled: false +Style/RedundantSelfAssignment: +  Enabled: false +Style/RedundantSort: +  Enabled: false +Style/RescueStandardError: +  Enabled: false +Style/SingleArgumentDig: +  Enabled: false +Style/SlicingWithRange: +  Enabled: false +Style/SoleNestedConditional: +  Enabled: false +Style/StderrPuts: +  Enabled: false +Style/StringConcatenation: +  Enabled: false +Style/Strip: +  Enabled: false  Style/SymbolProc:    Enabled: false +Style/TrailingBodyOnClass: +  Enabled: false +Style/TrailingBodyOnMethodDefinition: +  Enabled: false +Style/TrailingBodyOnModule: +  Enabled: false +Style/TrailingCommaInHashLiteral: +  Enabled: false +Style/TrailingMethodEndStatement: +  Enabled: false +Style/UnpackFirst: +  Enabled: false +Lint/DuplicateBranch: +  Enabled: false +Lint/DuplicateRegexpCharacterClassElement: +  Enabled: false +Lint/EmptyBlock: +  Enabled: false +Lint/EmptyClass: +  Enabled: false +Lint/NoReturnInBeginEndBlocks: +  Enabled: false +Lint/ToEnumArguments: +  Enabled: false +Lint/UnexpectedBlockArity: +  Enabled: false +Lint/UnmodifiedReduceAccumulator: +  Enabled: false +Performance/CollectionLiteralInLoop: +  Enabled: false +Style/ArgumentsForwarding: +  Enabled: false +Style/CollectionCompact: +  Enabled: false +Style/DocumentDynamicEvalDefinition: +  Enabled: false +Style/NegatedIfElseCondition: +  Enabled: false +Style/NilLambda: +  Enabled: false +Style/RedundantArgument: +  Enabled: false +Style/SwapValues: +  Enabled: false @@ -1,33 +1,36 @@  .rubocop.yml:    default_configs: -    Metrics/LineLength: +    Style/SignalException:        Enabled: false -    Layout/IndentHeredoc: +    Style/DoubleNegation: +      Enabled: false +    Style/MultipleComparison: +      Enabled: false +    Style/NumericPredicate: +      Enabled: false +    Style/SignalException: +      Enabled: false +    Layout/HeredocIndentation: +      Enabled: false +    Layout/LineLength: +      Enabled: false +    Metrics/BlockNesting: +      Enabled: false +    Naming/AccessorMethodName: +      Enabled: false +    Naming/PredicateName: +      Enabled: false +    RSpec/VariableName:        Enabled: false  Gemfile:    optional: -    ':development': -      - gem: 'github_changelog_generator' -        git: 'https://github.com/skywinder/github-changelog-generator' -        ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' -        condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')" -  required: -    ':system_tests': -      - gem: 'puppet-module-posix-system-r#{minor_version}' -        platforms: ruby -        version: '~> 1.0' -      - gem: 'puppet-module-win-system-r#{minor_version}' -        platforms: -          - mswin -          - mingw -          - x64_mingw -        version: '~> 1.0' +    ":development":        - gem: beaker -        version: '~> 3.34' +        version: '~> 4.30'          from_env: BEAKER_VERSION        - gem: beaker-abs          from_env: BEAKER_ABS_VERSION -        version: '~> 0.5' +        version: '~> 0.9'        - gem: beaker-pe        - gem: beaker-hostgenerator          from_env: BEAKER_HOSTGENERATOR_VERSION @@ -35,11 +38,19 @@ Gemfile:          from_env: BEAKER_RSPEC_VERSION        - gem: beaker-puppet          from_env: BEAKER_PUPPET_VERSION -        version: '~> 0.14' -    ':development': -      - gem: puppet-strings +        version: '~> 1.22' +      - gem: github_changelog_generator +      - gem: beaker-module_install_helper +      - gem: beaker-puppet_install_helper +      - gem: nokogiri + +appveyor.yml: +  delete: true +.travis.yml: +  delete: true +.github/workflows/auto_release.yml: +  unmanaged: false +.github/workflows/release.yml: +  unmanaged: false  .gitlab-ci.yml:    delete: true - -Rakefile: -  changelog_version_tag_pattern: '%s' @@ -17,41 +17,27 @@ ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments  minor_version = ruby_version_segments[0..1].join('.')  group :development do -  gem "parallel_tests", '>= 2.14.1', '< 2.14.3',                 require: false -  gem "metadata-json-lint", '>= 2.0.2', '< 3.0.0',               require: false -  gem "rspec-puppet-facts", '~> 1.10.0',                         require: false -  gem "rspec_junit_formatter", '~> 0.2',                         require: false -  gem "rubocop", '~> 0.49.0',                                    require: false -  gem "rubocop-rspec", '~> 1.16.0',                              require: false -  gem "rubocop-i18n", '~> 1.2.0',                                require: false -  gem "puppetlabs_spec_helper", '>= 2.9.0', '< 3.0.0',           require: false -  gem "fast_gettext", '1.1.0',                                   require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0') -  gem "fast_gettext",                                            require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') -  gem "json_pure", '<= 2.0.1',                                   require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') -  gem "json", '= 1.8.1',                                         require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9') -  gem "json", '= 2.0.4',                                         require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) -  gem "json", '= 2.1.0',                                         require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) -  gem "rb-readline", '= 0.5.5',                                  require: false, platforms: [:mswin, :mingw, :x64_mingw] -  gem "puppet-module-posix-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby] -  gem "puppet-module-win-default-r#{minor_version}", '~> 0.3',   require: false, platforms: [:mswin, :mingw, :x64_mingw] -  gem "puppet-strings",                                          require: false -  gem "github_changelog_generator",                              require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2') -end - -group :system_tests do -  gem "puppet-module-posix-system-r#{minor_version}", '~> 0.5',                  require: false, platforms: [:ruby] -  gem "puppet-module-win-system-r#{minor_version}", '~> 0.5',                    require: false, platforms: [:mswin, :mingw, :x64_mingw] -  gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4') -  gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.5') +  gem "json", '= 2.0.4',                                                         require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) +  gem "json", '= 2.1.0',                                                         require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) +  gem "json", '= 2.3.0',                                                         require: false if Gem::Requirement.create(['>= 2.7.0', '< 2.8.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) +  gem "puppet-module-posix-default-r#{minor_version}", '~> 1.0',                 require: false, platforms: [:ruby] +  gem "puppet-module-posix-dev-r#{minor_version}", '~> 1.0',                     require: false, platforms: [:ruby] +  gem "puppet-module-win-default-r#{minor_version}", '~> 1.0',                   require: false, platforms: [:mswin, :mingw, :x64_mingw] +  gem "puppet-module-win-dev-r#{minor_version}", '~> 1.0',                       require: false, platforms: [:mswin, :mingw, :x64_mingw] +  gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4.30') +  gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.9')    gem "beaker-pe",                                                               require: false    gem "beaker-hostgenerator"    gem "beaker-rspec" -  gem "beaker-puppet", *location_for(ENV['BEAKER_PUPPET_VERSION'] || '~> 1.0') +  gem "beaker-puppet", *location_for(ENV['BEAKER_PUPPET_VERSION'] || '~> 1.22') +  gem "github_changelog_generator",                                              require: false +  gem "beaker-module_install_helper",                                            require: false +  gem "beaker-puppet_install_helper",                                            require: false +  gem "nokogiri",                                                                require: false  end - -group :release do -  gem "puppet-blacksmith", '~> 3.4',                                             require: false -  gem "pdk", '~> 2.0',                                                           platforms: [:ruby] +group :system_tests do +  gem "puppet-module-posix-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby] +  gem "puppet-module-win-system-r#{minor_version}", '~> 1.0',   require: false, platforms: [:mswin, :mingw, :x64_mingw]  end  puppet_version = ENV['PUPPET_GEM_VERSION'] @@ -68,16 +54,6 @@ gems['puppet'] = location_for(puppet_version)  gems['facter'] = location_for(facter_version) if facter_version  gems['hiera'] = location_for(hiera_version) if hiera_version -if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)} -  # If we're using a Puppet gem on Windows which handles its own win32-xxx gem -  # dependencies (>= 3.5.0), set the maximum versions (see PUP-6445). -  gems['win32-dir'] =      ['<= 0.4.9', require: false] -  gems['win32-eventlog'] = ['<= 0.6.5', require: false] -  gems['win32-process'] =  ['<= 0.7.5', require: false] -  gems['win32-security'] = ['<= 0.2.5', require: false] -  gems['win32-service'] =  ['0.8.8', require: false] -end -  gems.each do |gem_name, gem_params|    gem gem_name, *gem_params  end @@ -1,3 +1,6 @@ +# frozen_string_literal: true + +require 'bundler'  require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?  require 'puppetlabs_spec_helper/rake_tasks'  require 'puppet-syntax/tasks/puppet-syntax' @@ -32,7 +35,7 @@ end  def changelog_future_release    return unless Rake.application.top_level_tasks.include? "changelog" -  returnVal = "%s" % JSON.load(File.read('metadata.json'))['version'] +  returnVal = "v%s" % JSON.load(File.read('metadata.json'))['version']    raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?    puts "GitHubChangelogGenerator future_release:#{returnVal}"    returnVal @@ -50,7 +53,7 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?      config.header = "# Change log\n\nAll notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org)."      config.add_pr_wo_labels = true      config.issues = false -    config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM" +    config.merge_prefix = "### UNCATEGORIZED PRS; LABEL THEM ON GITHUB"      config.configure_sections = {        "Changed" => {          "prefix" => "### Changed", @@ -58,11 +61,11 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?        },        "Added" => {          "prefix" => "### Added", -        "labels" => ["feature", "enhancement"], +        "labels" => ["enhancement", "feature"],        },        "Fixed" => {          "prefix" => "### Fixed", -        "labels" => ["bugfix"], +        "labels" => ["bug", "documentation", "bugfix"],        },      }    end @@ -70,16 +73,15 @@ else    desc 'Generate a Changelog from GitHub'    task :changelog do      raise <<EOM -The changelog tasks depends on unreleased features of the github_changelog_generator gem. +The changelog tasks depends on recent features of the github_changelog_generator gem.  Please manually add it to your .sync.yml for now, and run `pdk update`:  ---  Gemfile:    optional:      ':development':        - gem: 'github_changelog_generator' -        git: 'https://github.com/skywinder/github-changelog-generator' -        ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' -        condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')" +        version: '~> 1.15' +        condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')"  EOM    end  end diff --git a/metadata.json b/metadata.json index 716b897..d0e5069 100644 --- a/metadata.json +++ b/metadata.json @@ -57,7 +57,7 @@        "version_requirement": ">= 6.0.0 < 8.0.0"      }    ], -  "pdk-version": "1.14.0", -  "template-url": "https://github.com/puppetlabs/pdk-templates#1.14.0", -  "template-ref": "1.14.0-0-g1bf3a4e" +  "pdk-version": "2.2.0", +  "template-url": "https://github.com/puppetlabs/pdk-templates#2.2.0", +  "template-ref": "tags/2.2.0-0-g2381db6"  } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 29615cd..9b1fa6f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,9 @@ +# frozen_string_literal: true + +RSpec.configure do |c| +  c.mock_with :rspec +end +  require 'puppetlabs_spec_helper/module_spec_helper'  require 'rspec-puppet-facts' @@ -31,16 +37,28 @@ default_facts.each do |fact, value|  end  RSpec.configure do |c| -  c.mock_with :rspec    c.default_facts = default_facts    c.before :each do      # set to strictest setting for testing      # by default Puppet runs at warning level      Puppet.settings[:strict] = :warning +    Puppet.settings[:strict_variables] = true    end    c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']    c.after(:suite) do    end + +  # Filter backtrace noise +  backtrace_exclusion_patterns = [ +    %r{spec_helper}, +    %r{gems}, +  ] + +  if c.respond_to?(:backtrace_exclusion_patterns) +    c.backtrace_exclusion_patterns = backtrace_exclusion_patterns +  elsif c.respond_to?(:backtrace_clean_patterns) +    c.backtrace_clean_patterns = backtrace_exclusion_patterns +  end  end  # Ensures that a module is defined | 
