From 711f139f157e463dc567c0785f75d6f8ee35b545 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Thu, 13 Feb 2020 13:15:56 +0100 Subject: [PATCH] Assert distribution support This takes the approach that if a distribution is supported, it should support certain versions that Foreman supports. --- spec/puppet_version_spec.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/spec/puppet_version_spec.rb b/spec/puppet_version_spec.rb index e58afb60..b8e1787e 100644 --- a/spec/puppet_version_spec.rb +++ b/spec/puppet_version_spec.rb @@ -2,6 +2,12 @@ require 'semantic_puppet' SUPPORTED_PUPPET_VERSIONS = ['7.9.0', '8.0.0'].map { |v| SemanticPuppet::Version.parse(v) } +SUPPORTED_DISTROS = { + 'CentOS' => ['8', '9'], + 'Debian' => ['11'], + 'RedHat' => ['8', '9'], + 'Ubuntu' => ['20.04'], +} describe 'Puppet module' do Dir.glob(File.join(__dir__, '../_build/modules/*/metadata.json')).each do |filename| @@ -14,12 +20,35 @@ version_requirement ||= '>= 0' SemanticPuppet::VersionRange.parse(version_requirement) end + let(:operatingsystem_support) { metadata['operatingsystem_support'] } SUPPORTED_PUPPET_VERSIONS.each do |puppet_version| it "supports Puppet #{puppet_version}" do expect(puppet_requirement).to include(puppet_version) end end + + SUPPORTED_DISTROS.each do |distro, versions| + versions.each do |version| + it "should support #{distro} #{version}" do + if operatingsystem_support.nil? + skip "No OS support listed" + end + + distro_versions = operatingsystem_support.find { |os| os['operatingsystem'] == distro } + + if distro_versions.nil? + skip "Distribution #{distro} is not supported" + end + + unless distro_versions.key?('operatingsystemrelease') + skip "No specific distribution versions listed" + end + + expect(distro_versions['operatingsystemrelease']).to include(version) + end + end + end end end end