Skip to content

Commit

Permalink
test different NodeJS versions using beaker_facter
Browse files Browse the repository at this point in the history
  • Loading branch information
evgeni committed Oct 30, 2023
1 parent a10de4a commit 06fc779
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 5 deletions.
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ jobs:
uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v2
with:
pidfile_workaround: 'false'
beaker_facter: 'nodejs_version:NodeJS:16,18,20'
2 changes: 2 additions & 0 deletions .sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ spec/spec_helper.rb:
mock_with: ':mocha'
spec/spec_helper_acceptance.rb:
unmanaged: true
.github/workflows/ci.yml:
beaker_facter: 'nodejs_version:NodeJS:16,18,20'
50 changes: 45 additions & 5 deletions spec/acceptance/class_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
pkg_cmd = 'dpkg -s nodejs | grep "^Maintainer"'
end

nodejs_version = ENV.fetch('BEAKER_FACTER_nodejs_version', '20')

context 'default parameters' do
it_behaves_like 'an idempotent resource' do
let(:manifest) { "class { 'nodejs': }" }
Expand All @@ -27,6 +29,45 @@
end
end

context "explicitly using version #{nodejs_version} from nodesource", if: %w[RedHat Debian].include?(fact('os.family')), skip: (nodejs_version != '16' && fact('os.family') == 'RedHat' && fact('os.release.major') == '7' ? 'Only NodeJS 16 is supported on EL7' : nil) do
# Only nodejs 16 is supported on EL7 by nodesource

include_examples 'cleanup'

# Debian 12 contains NodeJS 18, when we test 16, we need to force the nodesource version
repo_pin =
if nodejs_version == '16' && fact('os.family') == 'Debian' && fact('os.release.major') == '12'
'1000'
else
'undef'
end

it_behaves_like 'an idempotent resource' do
let(:manifest) do
<<-PUPPET
class { 'nodejs':
repo_version => '#{nodejs_version}',
repo_pin => #{repo_pin},
}
PUPPET
end
end

describe package('nodejs') do
it { is_expected.to be_installed }

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 57 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" Skipped: Only NodeJS 16 is supported on EL7

it 'comes from the expected source' do

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 59 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Package "nodejs" comes from the expected source Skipped: Only NodeJS 16 is supported on EL7
pkg_output = shell(pkg_cmd)
expect(pkg_output.stdout).to match 'nodesource'
end
end

describe command('node --version') do
its(:exit_status) { is_expected.to eq 0 }

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 66 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" exit_status Skipped: Only NodeJS 16 is supported on EL7
its(:stdout) { is_expected.to match(%r{^v#{nodejs_version}}) }

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 7 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - CentOS 7 - NodeJS 20

nodejs explicitly using version 20 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7

Check warning on line 67 in spec/acceptance/class_spec.rb

View workflow job for this annotation

GitHub Actions / Puppet / Puppet 8 - OracleLinux 7 - NodeJS 18

nodejs explicitly using version 18 from nodesource Command "node --version" stdout Skipped: Only NodeJS 16 is supported on EL7
end
end

context 'RedHat with repo_class => epel', if: fact('os.family') == 'RedHat' do
include_examples 'cleanup'

Expand Down Expand Up @@ -65,12 +106,11 @@ class { 'nodejs':
end
end

context 'RedHat with repo_class => nodejs::repo::dnfmodule', if: fact('os.family') == 'RedHat' && %w[8 9].include?(fact('os.release.major')) do
include_examples 'cleanup'

context 'RedHat with repo_class => nodejs::repo::dnfmodule', if: fact('os.family') == 'RedHat' && %w[8 9].include?(fact('os.release.major')), skip: ((nodejs_version == '20' && fact('os.name') != 'CentOS') || (nodejs_version == '16' && fact('os.release.major') == '9') ? 'NodeJS 20 is not yet in a released EL, NodeJS 16 is not available on EL9' : nil) do
# Node 20 is only available in Stream yet, not in a released EL
# So we're testing 18 here
nodejs_version = '18'
# Node 16 is not available on EL9

include_examples 'cleanup'

it_behaves_like 'an idempotent resource' do
let(:manifest) do
Expand Down

0 comments on commit 06fc779

Please sign in to comment.