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