summaryrefslogtreecommitdiff
path: root/tool/test-bundled-gems.rb
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2019-09-29 12:16:10 +0200
committerBenoit Daloze <eregontp@gmail.com>2019-09-29 13:57:54 +0200
commit4096e4b08c46dddb8edc9dabf70e737946ac6df8 (patch)
treed4bd39f69107c1ef7947c1dade2f62a791e60ed7 /tool/test-bundled-gems.rb
parentd090e449ef4e92b2020e51fe495cd039e4f6fdda (diff)
downloadruby-4096e4b08c46dddb8edc9dabf70e737946ac6df8.tar.gz
Move the logic to test bundled gems to Ruby code
* Writing shell scripts in a Makefile is very error-prone. * TEST_BUNDLED_GEMS_ALLOW_FAILURES seemed to not work before.
Diffstat (limited to 'tool/test-bundled-gems.rb')
-rw-r--r--tool/test-bundled-gems.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/tool/test-bundled-gems.rb b/tool/test-bundled-gems.rb
new file mode 100644
index 0000000000..735f7f4863
--- /dev/null
+++ b/tool/test-bundled-gems.rb
@@ -0,0 +1,26 @@
+require 'rbconfig'
+
+allowed_failures = ENV['TEST_BUNDLED_GEMS_ALLOW_FAILURES'] || ''
+allowed_failures = allowed_failures.split(',').reject(&:empty?)
+
+exit_code = 0
+File.foreach('gems/bundled_gems') do |line|
+ gem = line.split.first
+ puts "\nTesting the #{gem} gem"
+
+ gem_src_dir = File.expand_path("../../gems/src/#{gem}", __FILE__ )
+ test_command = "#{RbConfig.ruby} -C #{gem_src_dir} -Ilib ../../../.bundle/bin/rake"
+ puts test_command
+ system test_command
+
+ unless $?.success?
+ puts "Tests failed with exit code #{$?.exitstatus}"
+ if allowed_failures.include?(gem)
+ puts "Ignoring test failures for #{gem} due to \$TEST_BUNDLED_GEMS_ALLOW_FAILURES"
+ else
+ exit_code = $?.exitstatus
+ end
+ end
+end
+
+exit exit_code