Skip to content

Commit 5a05adf

Browse files
committed
Debian and Ubuntu versioning and package name fixes
* Debian has a native nodejs dev package, so define that. * Debian 10 has a native npm package, so define that for Debian 10. * Improve native_debian_devel_package logic: support Debian 10 onward and Ubuntu 20.04 onward with the libnode-dev package name. * After the above changes, the variable is_supported_debian_version becomes obsolete, so most of the tests can work normally. The only special case is Debian 9 lacking the native npm package.
1 parent 918be7b commit 5a05adf

File tree

2 files changed

+21
-31
lines changed

2 files changed

+21
-31
lines changed

manifests/params.pp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,21 @@
2222
case $facts['os']['family'] {
2323
'Debian': {
2424
if $facts['os']['release']['major'] =~ /^(9|10)$/ {
25+
$debian_nodejs_dev_package_name = $facts['os']['release']['major'] ? {
26+
'9' => 'nodejs-dev',
27+
default => 'libnode-dev',
28+
}
29+
$debian_npm_package_name = $facts['os']['release']['major'] ? {
30+
'9' => false,
31+
default => 'npm',
32+
}
2533
$manage_package_repo = true
2634
$nodejs_debug_package_name = 'nodejs-dbg'
27-
$nodejs_dev_package_name = undef
35+
$nodejs_dev_package_name = $debian_nodejs_dev_package_name
2836
$nodejs_dev_package_ensure = 'absent'
2937
$nodejs_package_name = 'nodejs'
3038
$npm_package_ensure = 'absent'
31-
$npm_package_name = false
39+
$npm_package_name = $debian_npm_package_name
3240
$npm_path = '/usr/bin/npm'
3341
$repo_class = '::nodejs::repo::nodesource'
3442
}

spec/classes/nodejs_spec.rb

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,9 @@
99
facts
1010
end
1111

12-
is_supported_debian_version = if facts[:os]['family'] == 'Debian' && %w[9 10].include?(facts[:os]['release']['major'])
13-
true
14-
else
15-
false
16-
end
17-
18-
native_debian_devel_package = if facts[:os]['name'] == 'Ubuntu' && facts[:os]['release']['major'] == '20.04'
12+
native_debian_devel_package = if facts[:os]['name'] == 'Ubuntu' && Gem::Version.new(facts[:os]['release']['major']) >= Gem::Version.new('20.04')
13+
'libnode-dev'
14+
elsif facts[:os]['name'] == 'Debian' && Gem::Version.new(facts[:os]['release']['major']) >= Gem::Version.new(10)
1915
'libnode-dev'
2016
else
2117
'nodejs-dev'
@@ -199,15 +195,8 @@
199195
}
200196
end
201197

202-
if is_supported_debian_version
203-
204-
it 'the nodejs development package resource should not be present' do
205-
is_expected.not_to contain_package(native_debian_devel_package)
206-
end
207-
else
208-
it 'the nodejs development package should be installed' do
209-
is_expected.to contain_package(native_debian_devel_package).with('ensure' => 'present')
210-
end
198+
it 'the nodejs development package should be installed' do
199+
is_expected.to contain_package(native_debian_devel_package).with('ensure' => 'present')
211200
end
212201
end
213202

@@ -218,15 +207,8 @@
218207
}
219208
end
220209

221-
if is_supported_debian_version
222-
223-
it 'the nodejs development package resource should not be present' do
224-
is_expected.not_to contain_package(native_debian_devel_package)
225-
end
226-
else
227-
it 'the nodejs development package should not be present' do
228-
is_expected.to contain_package(native_debian_devel_package).with('ensure' => 'absent')
229-
end
210+
it 'the nodejs development package should not be present' do
211+
is_expected.to contain_package(native_debian_devel_package).with('ensure' => 'absent')
230212
end
231213
end
232214

@@ -263,8 +245,8 @@
263245
}
264246
end
265247

266-
if is_supported_debian_version
267-
248+
# Debian 9 (stretch) doesn't have npm in the standard repositories (it has been backported though).
249+
if facts[:os]['family'] == 'Debian' && facts[:os]['release']['major'] == '9'
268250
it 'the npm package resource should not be present' do
269251
is_expected.not_to contain_package('npm')
270252
end
@@ -282,8 +264,8 @@
282264
}
283265
end
284266

285-
if is_supported_debian_version
286-
267+
# Debian 9 (stretch) doesn't have npm in the standard repositories (it has been backported though).
268+
if facts[:os]['family'] == 'Debian' && facts[:os]['release']['major'] == '9'
287269
it 'the npm package resource should not be present' do
288270
is_expected.not_to contain_package('npm')
289271
end

0 commit comments

Comments
 (0)