From 7bce0893ed73b3614e7a64879cd4fd721acdaff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Thu, 28 Oct 2021 22:18:02 +0200 Subject: [PATCH 1/6] Don't print warnings on newer bundler versions --- lib/ruby_maven.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ruby_maven.rb b/lib/ruby_maven.rb index e1a537f..9dc5596 100644 --- a/lib/ruby_maven.rb +++ b/lib/ruby_maven.rb @@ -35,8 +35,14 @@ def self.exec( *args ) elsif defined? Bundler # it can be switching from ruby to jruby with invoking maven # just keep it clean - Bundler.with_clean_env do - launch( *args ) + if Bundler.respond_to?(:with_unbundled_env) + Bundler.with_unbundled_env do + launch( *args ) + end + else + Bundler.with_clean_env do + launch( *args ) + end end else launch( *args ) From 9a5d714b4160223b8aaf1c892b16cc9f5ff96af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Tue, 2 Nov 2021 12:07:53 +0100 Subject: [PATCH 2/6] No need to load minitest explicitly --- spec/setup.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spec/setup.rb b/spec/setup.rb index ab26e06..c3e9f79 100644 --- a/spec/setup.rb +++ b/spec/setup.rb @@ -1,8 +1,4 @@ $LOAD_PATH.unshift File.expand_path( '../../lib', __FILE__ ) -begin - require 'minitest' -rescue LoadError -end require 'minitest/autorun' From e3bc5a8c6357dd28b94c180cd33df4dce7699de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Tue, 2 Nov 2021 12:08:28 +0100 Subject: [PATCH 3/6] Opt out of minitest plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Minitest plugins cause unrelated globally installed gems to interfere: ``` ✗ rm -rf pkg && ruby -Ilib:test spec/ruby_maven_spec.rb --name="/pack the gem/" /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems/specification.rb:2239:in `raise_if_conflicts': Unable to activate railties-6.0.4.1, because activesupport-6.1.4.1 conflicts with activesupport (= 6.0.4.1) (Gem::ConflictError) from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems/specification.rb:1370:in `activate' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems.rb:221:in `rescue in try_activate' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems.rb:214:in `try_activate' from :153:in `rescue in require' from :149:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/railties-6.0.4.1/lib/minitest/rails_plugin.rb:4:in `' from :85:in `require' from :85:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:103:in `block in load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `each' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:126:in `run' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:68:in `block in autorun' /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems/specification.rb:2239:in `raise_if_conflicts': Unable to activate railties-6.0.4.1, because activesupport-6.1.4.1 conflicts with activesupport (= 6.0.4.1) (Gem::ConflictError) from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems/specification.rb:1370:in `activate' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/site_ruby/3.0.0/rubygems.rb:215:in `try_activate' from :153:in `rescue in require' from :149:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/railties-6.0.4.1/lib/minitest/rails_plugin.rb:4:in `' from :85:in `require' from :85:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:103:in `block in load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `each' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:126:in `run' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:68:in `block in autorun' :148:in `require': cannot load such file -- rails/test_unit/reporter (LoadError) from :148:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/railties-6.0.4.1/lib/minitest/rails_plugin.rb:4:in `' from :85:in `require' from :85:in `require' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:103:in `block in load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `each' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:97:in `load_plugins' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:126:in `run' from /Users/deivid/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/minitest-5.14.4/lib/minitest.rb:68:in `block in autorun' ``` --- spec/setup.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/setup.rb b/spec/setup.rb index c3e9f79..c3153fc 100644 --- a/spec/setup.rb +++ b/spec/setup.rb @@ -1,4 +1,7 @@ $LOAD_PATH.unshift File.expand_path( '../../lib', __FILE__ ) + +ENV["MT_NO_PLUGINS"] = "true" + require 'minitest/autorun' From a7f8f28c2723df1042ddd52881aa2e1adfdd2f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sat, 6 Nov 2021 13:18:02 +0100 Subject: [PATCH 4/6] Bump `polyglot-ruby` to 0.4.8 --- .mvn/extensions.xml | 2 +- spec/ruby_maven_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 4fba39b..a02a5a5 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -8,6 +8,6 @@ io.takari.polyglot polyglot-ruby - 0.4.4 + 0.4.8 diff --git a/spec/ruby_maven_spec.rb b/spec/ruby_maven_spec.rb index da34c12..a117be7 100644 --- a/spec/ruby_maven_spec.rb +++ b/spec/ruby_maven_spec.rb @@ -10,7 +10,7 @@ CatchStdout.exec do RubyMaven.exec( '--version' ) end - _(CatchStdout.result).must_match /Polyglot Maven Extension 0.4.4/ + _(CatchStdout.result).must_match /Polyglot Maven Extension 0.4.8/ xml = File.read('.mvn/extensions.xml') _(xml).must_equal "dummy\n" end From d7ff8f5c464eadf1e065c71d343aa697accbc90c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sun, 7 Nov 2021 17:52:41 +0100 Subject: [PATCH 5/6] Rule out thread safety issue related the pwd/chdir --- spec/maven_ruby_maven_spec.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/spec/maven_ruby_maven_spec.rb b/spec/maven_ruby_maven_spec.rb index 90150d7..22c1c7b 100644 --- a/spec/maven_ruby_maven_spec.rb +++ b/spec/maven_ruby_maven_spec.rb @@ -5,6 +5,8 @@ subject { Maven::Ruby::Maven.new } + let(:pkg) { File.expand_path("../pkg", __dir__) } + it 'shows mvn commandline with verbose flag' do CatchStdout.exec do subject.exec( '-Dverbose', 'validate' ) @@ -16,8 +18,8 @@ it 'takes declared jruby version' do begin subject.inherit_jruby_version '9.0.4.0' - subject.exec( '-X', 'initialize', '-l', 'pkg/log1.txt' ) - _(File.read('pkg/log1.txt')).must_match /resolve jruby for version 9.0.4.0/ + subject.exec( '-X', 'initialize', '-l', "#{pkg}/log1.txt" ) + _(File.read("#{pkg}/log1.txt")).must_match /resolve jruby for version 9.0.4.0/ ensure subject['jruby.version'] = nil end @@ -26,14 +28,14 @@ if defined? JRUBY_VERSION it 'inherits jruby version' do subject.inherit_jruby_version - subject.exec( '-X', 'initialize', '-l', 'pkg/log2.txt' ) - _(File.read('pkg/log2.txt')).must_match /resolve jruby for version #{JRUBY_VERSION}/ + subject.exec( '-X', 'initialize', '-l', "#{pkg}/log2.txt" ) + _(File.read("#{pkg}/log2.txt")).must_match /resolve jruby for version #{JRUBY_VERSION}/ end else it 'takes default jruby version with inherit jruby version' do subject.inherit_jruby_version - subject.exec( '-X', 'initialize', '-l', 'pkg/log3.txt' ) - _(File.read('pkg/log3.txt')).must_match /resolve jruby for version 9.3.1.0/ + subject.exec( '-X', 'initialize', '-l', "#{pkg}/log3.txt" ) + _(File.read("#{pkg}/log3.txt")).must_match /resolve jruby for version 9.3.1.0/ end end end From ecc4cb997d9713f8d4e611af6fccb546c95cf4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sun, 7 Nov 2021 18:28:12 +0100 Subject: [PATCH 6/6] Use standard minitest utility for checking output Instead of relying on `CatchStdout` or passing the log file parameter to mvn. --- spec/maven_ruby_maven_spec.rb | 22 ++++++++++++++-------- spec/ruby_maven_spec.rb | 9 ++++----- spec/setup.rb | 20 -------------------- 3 files changed, 18 insertions(+), 33 deletions(-) diff --git a/spec/maven_ruby_maven_spec.rb b/spec/maven_ruby_maven_spec.rb index 22c1c7b..564f33c 100644 --- a/spec/maven_ruby_maven_spec.rb +++ b/spec/maven_ruby_maven_spec.rb @@ -8,18 +8,20 @@ let(:pkg) { File.expand_path("../pkg", __dir__) } it 'shows mvn commandline with verbose flag' do - CatchStdout.exec do + out, _ = capture_subprocess_io do subject.exec( '-Dverbose', 'validate' ) end subject.verbose = false - _(CatchStdout.result).must_match /mvn -Dverbose validate/ + _(out).must_match /mvn -Dverbose validate/ end it 'takes declared jruby version' do begin subject.inherit_jruby_version '9.0.4.0' - subject.exec( '-X', 'initialize', '-l', "#{pkg}/log1.txt" ) - _(File.read("#{pkg}/log1.txt")).must_match /resolve jruby for version 9.0.4.0/ + out, _ = capture_subprocess_io do + subject.exec( '-X', 'initialize') + end + _(out).must_match /resolve jruby for version 9.0.4.0/ ensure subject['jruby.version'] = nil end @@ -28,14 +30,18 @@ if defined? JRUBY_VERSION it 'inherits jruby version' do subject.inherit_jruby_version - subject.exec( '-X', 'initialize', '-l', "#{pkg}/log2.txt" ) - _(File.read("#{pkg}/log2.txt")).must_match /resolve jruby for version #{JRUBY_VERSION}/ + out, _ = capture_subprocess_io do + subject.exec( '-X', 'initialize') + end + _(out).must_match /resolve jruby for version #{JRUBY_VERSION}/ end else it 'takes default jruby version with inherit jruby version' do subject.inherit_jruby_version - subject.exec( '-X', 'initialize', '-l', "#{pkg}/log3.txt" ) - _(File.read("#{pkg}/log3.txt")).must_match /resolve jruby for version 9.3.1.0/ + out, _ = capture_subprocess_io do + subject.exec( '-X', 'initialize') + end + _(out).must_match /resolve jruby for version 9.3.1.0/ end end end diff --git a/spec/ruby_maven_spec.rb b/spec/ruby_maven_spec.rb index a117be7..c33447f 100644 --- a/spec/ruby_maven_spec.rb +++ b/spec/ruby_maven_spec.rb @@ -7,10 +7,10 @@ it 'displays the version info' do Dir.chdir 'spec' do - CatchStdout.exec do + _, err = capture_io do RubyMaven.exec( '--version' ) end - _(CatchStdout.result).must_match /Polyglot Maven Extension 0.4.8/ + _(err).must_match /Polyglot Maven Extension 0.4.8/ xml = File.read('.mvn/extensions.xml') _(xml).must_equal "dummy\n" end @@ -24,12 +24,11 @@ it 'pack the gem' do FileUtils.rm_f gem_name - CatchStdout.exec do + out, _ = capture_subprocess_io do # need newer jruby version RubyMaven.exec( '-Dverbose', 'package', '-Djruby.version=9.3.0.0' ) end - #puts CatchStdout.result - _(CatchStdout.result).must_match /mvn -Dverbose package/ + _(out).must_match /mvn -Dverbose package/ _(File.exists?( gem_name )).must_equal true _(File.exists?( '.mvn/extensions.xml' )).must_equal true _(File.exists?( '.mvn/extensions.xml.orig' )).wont_equal true diff --git a/spec/setup.rb b/spec/setup.rb index c3153fc..52b4bf7 100644 --- a/spec/setup.rb +++ b/spec/setup.rb @@ -3,23 +3,3 @@ ENV["MT_NO_PLUGINS"] = "true" require 'minitest/autorun' - - -module CatchStdout - - def self.exec - out = $stdout - err = $stderr - @result = StringIO.new - $stdout = @result - $stderr = @result - yield - ensure - $stdout = out - $stderr = err - end - - def self.result - @result.string - end -end