aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml58
-rw-r--r--.github/workflows/static_code_analysis.yaml41
-rw-r--r--.github/workflows/unit_tests_with_nightly_puppet_gem.yaml60
-rw-r--r--.github/workflows/unit_tests_with_released_puppet_gem.yaml48
-rw-r--r--.travis.yml45
-rw-r--r--.vscode/extensions.json2
-rw-r--r--Gemfile10
-rw-r--r--README.md6
-rw-r--r--appveyor.yml56
-rw-r--r--lib/puppet/provider/augeas/augeas.rb14
-rw-r--r--spec/unit/provider/augeas/augeas_spec.rb41
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"
]
}
diff --git a/Gemfile b/Gemfile
index 19b9436..3444d32 100644
--- a/Gemfile
+++ b/Gemfile
@@ -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
diff --git a/README.md b/README.md
index cd1965e..2c1c738 100644
--- a/README.md
+++ b/README.md
@@ -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