Browse Source

Merge pull request #3720 from infosiftr/ruby-gems-ruby-versions

Update "ruby-gems" test to check the required "ruby_version" of each gem and auto-skip gems we can't satisfy the latest release of on our current RUBY_VERSION
yosifkit 8 years ago
parent
commit
54a10e79fb
1 changed files with 32 additions and 28 deletions
  1. 32 28
      test/tests/ruby-gems/container.sh

+ 32 - 28
test/tests/ruby-gems/container.sh

@@ -1,35 +1,39 @@
 #!/bin/sh
 set -e
 
-# ruby 2.2.2+: rack activesupport
-# ruby 2.0+: mime-types
-# (jruby 1.7 is ruby 1.9)
-extras="$(ruby -e '
-	rubyVersion = Gem::Version.new(RUBY_VERSION)
-	puts (
-		(
-			rubyVersion >= Gem::Version.new("2.2.2") ? [
-				"rack",
-				"activesupport",
-			] : []
-		) + (
-			rubyVersion >= Gem::Version.new("2.0") ? [
-				"mime-types",
-			] : []
-		)
-	).join(" ")
+gems="$(ruby -e '
+	# list taken from https://rubygems.org/stats
+	gems = %w{
+		bundler
+		multi_json
+		rake
+		rack
+		json
+		mime-types
+		activesupport
+		thor
+		i18n
+		diff-lcs
+	}
+	# last updated 2017-11-15
+
+	require "json"
+	require "open-uri"
+
+	for gem in gems
+		# ruby 2.2.2+: rack activesupport
+		# ruby 2.0+: mime-types
+		# (jruby 1.7 is ruby 1.9)
+		gemRubyVersion = JSON.load(open("https://rubygems.org/api/v1/versions/#{ gem }.json"))[0]["ruby_version"]
+		if Gem::Dependency.new("", gemRubyVersion).match?("", RUBY_VERSION)
+			puts gem
+		else
+			STDERR.puts "skipping #{ gem } due to required Ruby version: #{ gemRubyVersion } (vs #{ RUBY_VERSION })"
+		end
+	end
 ')"
 
-# list taken from https://rubygems.org/stats
-for gem in \
-	$extras \
-	rake \
-	multi_json \
-	bundler \
-	json \
-	thor \
-	i18n \
-	builder \
-; do
+for gem in $gems; do
+	echo "$ gem install $gem"
 	gem install "$gem"
 done