diff options
-rw-r--r-- | .github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml | 58 | ||||
-rw-r--r-- | .github/workflows/static_code_analysis.yaml | 41 | ||||
-rw-r--r-- | .github/workflows/unit_tests_with_nightly_puppet_gem.yaml | 60 | ||||
-rw-r--r-- | .github/workflows/unit_tests_with_released_puppet_gem.yaml | 48 | ||||
-rw-r--r-- | .travis.yml | 45 | ||||
-rw-r--r-- | .vscode/extensions.json | 2 | ||||
-rw-r--r-- | Gemfile | 10 | ||||
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | appveyor.yml | 56 | ||||
-rw-r--r-- | lib/puppet/provider/augeas/augeas.rb | 14 | ||||
-rw-r--r-- | spec/unit/provider/augeas/augeas_spec.rb | 41 |
11 files changed, 268 insertions, 113 deletions
diff --git a/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml new file mode 100644 index 0000000..b31bf18 --- /dev/null +++ b/.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml @@ -0,0 +1,58 @@ +--- +name: '[Daily] Unit Tests with nightly Puppet gem' + +on: + schedule: + - cron: '0 5 * * 1-5' + +jobs: + daily_unit_tests_with_nightly_puppet_gem: + name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} + strategy: + matrix: + os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2019' ] + puppet_version: [ 5, 6, 7 ] + include: + - puppet_version: 5 + ruby: 2.4 + - puppet_version: 6 + ruby: 2.5 + - puppet_version: 7 + ruby: 2.7 + + - os: 'ubuntu-18.04' + os_type: 'Linux' + env_set_cmd: 'export ' + gem_file: 'puppet-latest.gem' + - os: 'macos-10.15' + os_type: 'macOS' + env_set_cmd: 'export ' + gem_file: 'puppet-latest-universal-darwin.gem' + - os: 'windows-2019' + os_type: 'Windows' + env_set_cmd: '$env:' + gem_file: 'puppet-latest-x64-mingw32.gem' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install ruby version ${{ matrix.ruby }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install the latest nightly build of puppet${{ matrix.puppet_version }} gem + run: | + curl http://nightlies.puppet.com/downloads/gems/puppet${{ matrix.puppet_version }}-nightly/${{ matrix.gem_file }} --output puppet.gem + gem install puppet.gem -N + + - name: Prepare testing environment with bundler + run: | + bundle config set system 'true' + ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=$(ruby -e 'puts /puppet\s+\((.+)\)/.match(`gem list -eld puppet`)[1]') + bundle update --jobs 4 --retry 3 + + - name: Run unit tests + run: bundle exec rake parallel_spec diff --git a/.github/workflows/static_code_analysis.yaml b/.github/workflows/static_code_analysis.yaml new file mode 100644 index 0000000..ed4a232 --- /dev/null +++ b/.github/workflows/static_code_analysis.yaml @@ -0,0 +1,41 @@ +--- +name: Static Code Analysis + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + static_code_analysis: + name: Run checks + + env: + ruby_version: 2.5 + extra_checks: check:symlinks check:git_ignore check:dot_underscore check:test_file + + runs-on: 'ubuntu-18.04' + steps: + - name: Checkout current PR code + uses: actions/checkout@v2 + + - name: Install ruby version ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + + - name: Prepare testing environment with bundler + run: bundle update --jobs 4 --retry 3 + + - name: Run rubocop check + run: bundle exec rake ${{ env.extra_checks }} rubocop + + - name: Run syntax check + run: bundle exec rake ${{ env.extra_checks }} syntax syntax:hiera syntax:manifests syntax:templates + + - name: Run lint check + run: bundle exec rake ${{ env.extra_checks }} lint + + - name: Run metadata_lint check + run: bundle exec rake ${{ env.extra_checks }} metadata_lint diff --git a/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml b/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml new file mode 100644 index 0000000..8c5d909 --- /dev/null +++ b/.github/workflows/unit_tests_with_nightly_puppet_gem.yaml @@ -0,0 +1,60 @@ +--- +name: Unit Tests with nightly Puppet gem + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + unit_tests_with_nightly_puppet_gem: + name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} + strategy: + matrix: + os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2019' ] + puppet_version: [ 5, 6, 7 ] + include: + - puppet_version: 5 + ruby: 2.4 + - puppet_version: 6 + ruby: 2.5 + - puppet_version: 7 + ruby: 2.7 + + - os: 'ubuntu-18.04' + os_type: 'Linux' + env_set_cmd: 'export ' + gem_file: 'puppet-latest.gem' + - os: 'macos-10.15' + os_type: 'macOS' + env_set_cmd: 'export ' + gem_file: 'puppet-latest-universal-darwin.gem' + - os: 'windows-2019' + os_type: 'Windows' + env_set_cmd: '$env:' + gem_file: 'puppet-latest-x64-mingw32.gem' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current PR code + uses: actions/checkout@v2 + + - name: Install ruby version ${{ matrix.ruby }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install the latest nightly build of puppet${{ matrix.puppet_version }} gem + run: | + curl http://nightlies.puppet.com/downloads/gems/puppet${{ matrix.puppet_version }}-nightly/${{ matrix.gem_file }} --output puppet.gem + gem install puppet.gem -N + + - name: Prepare testing environment with bundler + run: | + bundle config set system 'true' + ${{ matrix.env_set_cmd }}PUPPET_GEM_VERSION=$(ruby -e 'puts /puppet\s+\((.+)\)/.match(`gem list -eld puppet`)[1]') + bundle update --jobs 4 --retry 3 + + - name: Run unit tests + run: bundle exec rake parallel_spec diff --git a/.github/workflows/unit_tests_with_released_puppet_gem.yaml b/.github/workflows/unit_tests_with_released_puppet_gem.yaml new file mode 100644 index 0000000..065e2b9 --- /dev/null +++ b/.github/workflows/unit_tests_with_released_puppet_gem.yaml @@ -0,0 +1,48 @@ +--- +name: Unit Tests with released Puppet gem + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + unit_tests_with_released_puppet_gem: + name: ${{ matrix.os_type }} / Puppet${{ matrix.puppet_version }} gem / Ruby ${{ matrix.ruby }} + strategy: + matrix: + os: [ 'ubuntu-18.04', 'macos-10.15', 'windows-2019' ] + puppet_version: [ 5, 6 ] + include: + - puppet_version: 5 + ruby: 2.4 + - puppet_version: 6 + ruby: 2.5 + + - os: 'ubuntu-18.04' + os_type: 'Linux' + - os: 'macos-10.15' + os_type: 'macOS' + - os: 'windows-2019' + os_type: 'Windows' + + runs-on: ${{ matrix.os }} + env: + PUPPET_GEM_VERSION: ~> ${{ matrix.puppet_version }}.0 + steps: + - name: Checkout current PR code + uses: actions/checkout@v2 + + - name: Install ruby version ${{ matrix.ruby }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Prepare testing environment with bundler + run: | + bundle config set system 'true' + bundle update --jobs 4 --retry 3 + + - name: Run unit tests + run: bundle exec rake parallel_spec diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ed27d4d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ ---- -dist: xenial -language: ruby -cache: bundler -before_install: - - bundle -v - - rm -f Gemfile.lock - - gem update --system $RUBYGEMS_VERSION - - gem --version - - bundle -v -script: - - 'bundle exec rake $CHECK' -bundler_args: --without system_tests -rvm: - - 2.5.3 -stages: - - static - - spec - - acceptance - - - if: tag =~ ^v\d - name: deploy -matrix: - fast_finish: true - include: - - - env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint" - stage: static - - - env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec - rvm: 2.4.5 - stage: spec - - - env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec - rvm: 2.5.3 - stage: spec - - - env: DEPLOY_TO_FORGE=yes - stage: deploy -branches: - only: - - master - - /^v\d/ -notifications: - email: false diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 6177782..2f1e4f7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { "recommendations": [ - "jpogran.puppet-vscode", + "puppet.puppet-vscode", "rebornix.Ruby" ] } @@ -17,6 +17,14 @@ 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') @@ -25,9 +33,7 @@ group :development do 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-posix-dev-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-module-win-dev-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 @@ -1,6 +1,12 @@ # augeas_core +[![Modules Status](https://github.com/puppetlabs/puppetlabs-augeas_core/workflows/%5BDaily%5D%20Unit%20Tests%20with%20nightly%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-augeas_core/actions) +[![Modules Status](https://github.com/puppetlabs/puppetlabs-augeas_core/workflows/Static%20Code%20Analysis/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-augeas_core/actions) +[![Modules Status](https://github.com/puppetlabs/puppetlabs-augeas_core/workflows/Unit%20Tests%20with%20nightly%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-augeas_core/actions) +[![Modules Status](https://github.com/puppetlabs/puppetlabs-augeas_core/workflows/Unit%20Tests%20with%20released%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-augeas_core/actions) + + #### Table of Contents 1. [Description](#description) diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index ec38949..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -version: 1.1.x.{build} -branches: - only: - - master - - release -skip_commits: - message: /^\(?doc\)?.*/ -clone_depth: 10 -init: - - SET - - 'mkdir C:\ProgramData\PuppetLabs\code && exit 0' - - 'mkdir C:\ProgramData\PuppetLabs\facter && exit 0' - - 'mkdir C:\ProgramData\PuppetLabs\hiera && exit 0' - - 'mkdir C:\ProgramData\PuppetLabs\puppet\var && exit 0' -environment: - matrix: - - - RUBY_VERSION: 24-x64 - CHECK: syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop - - - PUPPET_GEM_VERSION: ~> 5.0 - RUBY_VERSION: 24 - CHECK: parallel_spec - - - PUPPET_GEM_VERSION: ~> 5.0 - RUBY_VERSION: 24-x64 - CHECK: parallel_spec - - - PUPPET_GEM_VERSION: ~> 6.0 - RUBY_VERSION: 25 - CHECK: parallel_spec - - - PUPPET_GEM_VERSION: ~> 6.0 - RUBY_VERSION: 25-x64 - CHECK: parallel_spec -matrix: - fast_finish: true -install: - - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH% - - bundle install --jobs 4 --retry 2 --without system_tests - - type Gemfile.lock -build: off -test_script: - - bundle exec puppet -V - - ruby -v - - gem -v - - bundle -v - - bundle exec rake %CHECK% -notifications: - - provider: Email - to: - - nobody@nowhere.com - on_build_success: false - on_build_failure: false - on_build_status_changed: false diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb index bfa3852..c8f9643 100644 --- a/lib/puppet/provider/augeas/augeas.rb +++ b/lib/puppet/provider/augeas/augeas.rb @@ -367,8 +367,18 @@ Puppet::Type.type(:augeas).provide(:augeas) do load_path.flatten! end - if Puppet::FileSystem.exist?("#{Puppet[:libdir]}/augeas/lenses") - load_path << "#{Puppet[:libdir]}/augeas/lenses" + if Puppet::Application.name == :agent + if Puppet::FileSystem.exist?("#{Puppet[:libdir]}/augeas/lenses") + load_path << "#{Puppet[:libdir]}/augeas/lenses" + end + else + env = Puppet.lookup(:current_environment) + env.each_plugin_directory do |dir| + lenses = File.join(dir, 'augeas', 'lenses') + if File.exist?(lenses) + load_path << lenses + end + end end load_path.join(':') diff --git a/spec/unit/provider/augeas/augeas_spec.rb b/spec/unit/provider/augeas/augeas_spec.rb index 7c9336a..2d53933 100644 --- a/spec/unit/provider/augeas/augeas_spec.rb +++ b/spec/unit/provider/augeas/augeas_spec.rb @@ -1121,15 +1121,42 @@ describe Puppet::Type.type(:augeas).provider(:augeas) do expect(provider.get_load_path(resource)).to eq('/foo:/bar:/baz') end - it 'offers pluginsync augeas/lenses subdir' do - Puppet[:libdir] = my_fixture_dir - expect(provider.get_load_path(resource)).to eq("#{my_fixture_dir}/augeas/lenses") + context 'when running application is agent' do + before(:each) do + Puppet[:libdir] = my_fixture_dir + Puppet::Application.stubs(:name).returns(:agent) + end + + it 'offers pluginsync augeas/lenses subdir' do + expect(provider.get_load_path(resource)).to eq("#{my_fixture_dir}/augeas/lenses") + end + + it 'offers both pluginsync and load_path paths' do + resource[:load_path] = ['/foo', '/bar', '/baz'] + expect(provider.get_load_path(resource)).to eq("/foo:/bar:/baz:#{my_fixture_dir}/augeas/lenses") + end end - it 'offers both pluginsync and load_path paths' do - Puppet[:libdir] = my_fixture_dir - resource[:load_path] = ['/foo', '/bar', '/baz'] - expect(provider.get_load_path(resource)).to eq("/foo:/bar:/baz:#{my_fixture_dir}/augeas/lenses") + context 'when running application is not agent' do + before(:each) do + Puppet::Application.stubs(:name).returns(:apply) + + env = Puppet::Node::Environment.create('root', ['/modules/foobar']) + Puppet.stubs(:lookup).returns(env) + env.stubs(:each_plugin_directory).yields('/modules/foobar') + + resource[:load_path] = ['/foo', '/bar', '/baz'] + end + + it 'offers both load_path and module lenses path when available' do + File.stubs(:exist?).with('/modules/foobar/augeas/lenses').returns(true) + expect(provider.get_load_path(resource)).to eq('/foo:/bar:/baz:/modules/foobar/augeas/lenses') + end + + it 'offers only load_path if module lenses path is not available' do + File.stubs(:exist?).with('/modules/foobar/augeas/lenses').returns(false) + expect(provider.get_load_path(resource)).to eq('/foo:/bar:/baz') + end end end end |