#!/bin/bash

set -e -x

function is_jruby() {
  if ruby -e 'exit RUBY_PLATFORM == "java"'; then
    return 0
  else
    return 1
  fi
}

# idea taken from: http://blog.headius.com/2010/03/jruby-startup-time-tips.html
export JRUBY_OPTS='-X-C' # disable JIT since these processes are so short lived

# force jRuby to use client mode JVM or a compilation mode thats as close as possible,
# idea taken from https://github.com/jruby/jruby/wiki/Improving-startup-time
export JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1'

echo "Running all..."
bin/rspec spec --format progress --profile

echo
echo "--------------------------------------------------------------------"
echo

if is_jruby; then
  echo "Skipping one-by-one spec runs due to expensive JVM load time"
else
  for file in `find spec -iname '*_spec.rb'`; do
    NO_COVERAGE=1 bin/rspec $file -b --format progress
  done
fi

# TODO: it would be nice to figure out how to run the cukes w/o the overhead of
# bundler, but just running `bin/cucumber` can fail due to the fact that it
# shells out (via aruba) and executes `rspec`--which can pick up the wrong
# rspec version if we're not running with bundler.
bundle exec cucumber --strict

