lib/busser/runner_plugin/minitest.rb in busser-minitest-0.2.0 vs lib/busser/runner_plugin/minitest.rb in busser-minitest-0.3.0

- old
+ new

@@ -14,23 +14,38 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -require 'busser/runner_plugin' +require "busser/runner_plugin" # A Busser runner plugin for Minitest. # # @author Fletcher Nichol <fnichol@nichol.ca> # class Busser::RunnerPlugin::Minitest < Busser::RunnerPlugin::Base postinstall do install_gem("minitest", "< 5.0") + install_gem("bundler") end def test - runner = File.join(File.dirname(__FILE__), %w{.. minitest runner.rb}) + minitest_path = suite_path("minitest") + runner = File.join(File.dirname(__FILE__), %w[.. minitest runner.rb]) - run_ruby_script!("#{runner} #{suite_path('minitest').to_s}") + if File.exist?(File.join(minitest_path, "Gemfile")) + banner("Gemfile found, bundle installing...") + + # Bundle install local completes quickly if the gems are already found + # locally it fails if it needs to talk to the internet. The || below is + # the fallback to the internet-enabled version. It's a speed + # optimization. + Dir.chdir(minitest_path) do + run("PATH=#{ENV["PATH"]}:#{Gem.bindir}; " \ + "bundle install --local || bundle install") + end + end + + run_ruby_script!("#{runner} #{minitest_path}") end end