diff options
author | Benoit Daloze <eregontp@gmail.com> | 2019-09-29 12:16:10 +0200 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2019-09-29 13:57:54 +0200 |
commit | 4096e4b08c46dddb8edc9dabf70e737946ac6df8 (patch) | |
tree | d4bd39f69107c1ef7947c1dade2f62a791e60ed7 | |
parent | d090e449ef4e92b2020e51fe495cd039e4f6fdda (diff) | |
download | ruby-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.
-rw-r--r-- | template/Makefile.in | 10 | ||||
-rw-r--r-- | tool/test-bundled-gems.rb | 26 |
2 files changed, 27 insertions, 9 deletions
diff --git a/template/Makefile.in b/template/Makefile.in index d7e139c6d4..117c1cd5c4 100644 --- a/template/Makefile.in +++ b/template/Makefile.in @@ -536,15 +536,7 @@ cont.$(OBJEXT): $(COROUTINE_H) TEST_BUNDLED_GEMS_ALLOW_FAILURES = test-bundled-gems-run: - $(Q) fail=0 keep=; case "$(MFLAGS)" in *k*) keep=1;; esac; \ - while read gem _; do \ - echo testing $$gem gem; \ - [ $$keep ] || echo $(TEST_BUNDLED_GEMS_ALLOW_FAILURES) | grep -q $$gem || set -e; \ - $(XRUBY) -C $(srcdir)/gems/src/$$gem -Ilib ../../../.bundle/bin/rake; \ - [ $$? = 0 ] || fail=1; \ - set +e; \ - done < $(srcdir)/gems/bundled_gems; \ - exit $$fail + $(Q) $(XRUBY) $(srcdir)/tool/test-bundled-gems.rb update-src:: @$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP) 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 |