From cf3b0482301d30621b4bdf94200db9ab681ff50f Mon Sep 17 00:00:00 2001 From: scub Date: Thu, 24 Jan 2019 14:11:48 -0500 Subject: [PATCH] Resolve gem dependencies across "supported" environments (#142) --- test/integration/helpers/serverspec/Gemfile | 81 +++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 test/integration/helpers/serverspec/Gemfile diff --git a/test/integration/helpers/serverspec/Gemfile b/test/integration/helpers/serverspec/Gemfile new file mode 100644 index 0000000..e4154fd --- /dev/null +++ b/test/integration/helpers/serverspec/Gemfile @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# vim: ft=ruby + +# Global source defined as https://rubygems.org +source 'https://rubygems.org' + +# Attempt to fingerprint OS from /etc/os-release where available +if File.file?("/etc/os-release") + + os_family = '' + os_version = '' + os_version_full = '' + + # Strip necessary granularity from os-release + File.open("/etc/os-release").grep(/(^ID=(.*)$|^VERSION="(.*)"$|^VERSION_ID="(.*)")/) do |line| + + # OS family (Debian/CentOS/Ubuntu) + if ( line =~ /^ID=\S/ ) + os_family = line.split('=')[1] + puts "IDENTIFIED os_family = " + os_family + end + + # Major revision + if ( line =~ /^VERSION_ID="(.*)"$/ ) + os_version = line.split('=')[1].tr('"','') + puts "IDENTIFIED os_version = " + os_version + end + + # Vanity name + if ( line =~ /^VERSION="(.*)"$/ ) + os_version_full = line.split('=')[1] + puts "IDENTIFIED os_version_full = " + os_version_full + end + + end + + # Pinning is broken into os_family and then os_version + # to try and avoid conflict. + case os_family + + when /debian/ + # os_family: Debian os_version dependent pins + case os_version + when /7/ + puts "busser-serverspec is no longer natively supported on: " + os_version_full + when /8/ + gem 'net-ssh', '~> 4.2.0' + else + puts "Your distribution is either too old, or supported without pins: " + os_version_full + end + + when /centos/ + # os_family: centos os_version dependent pins + print "Switching on " + os_version + case os_version + when /6/ + puts "busser-serverspec has no native supported on: " + os_version_full + when /7/ + gem 'net-ssh', '~> 4.2.0' + else + puts "Your distribution is either too old, or supported without pins: " + os_version_full + end + + when /ubuntu/ + # os_family: ubuntu os_version dependent pins + case os_version + when /14.04/ + puts "busser-serverspec is no longer natively supported on: " + os_version_full + when /16.04/ + puts "busser-serverspec is currently supported natively on: " + os_version_full + else + puts "Your distribution is either too old, or supported without pins: " + os_version_full + end + + # No helper support provided + else + puts "No Gemfile helper support exists for os_family: " + os_family + end +else + puts "No Gemfile helper support provided for this suite." +end