36 lines
984 B
Bash
36 lines
984 B
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# From Destroy All Software screencast #10, at:
|
||
|
# http://destroyallsoftware.com/screencasts/catalog/fast-tests-with-and-without-rails
|
||
|
#
|
||
|
# Released under the MIT license: http://opensource.org/licenses/MIT
|
||
|
#
|
||
|
# Put this in the script/ directory of your Rails app, then run it with a spec
|
||
|
# filename. If the spec uses spec_helper, it'll be run inside Bundler.
|
||
|
# Otherwise, it'll be run directly with whatever `rspec` executable is on the
|
||
|
# path.
|
||
|
|
||
|
set -e
|
||
|
|
||
|
need_rails=1
|
||
|
|
||
|
if [ $# -gt 0 ]; then # we have args
|
||
|
filename=$1
|
||
|
# Remove trailing line numbers from filename, e.g. spec/my_spec.rb:33
|
||
|
grep_filename=`echo $1 | sed 's/:.*$//g'`
|
||
|
|
||
|
(set +e; grep -r '\bspec_helper\b' $grep_filename) > /dev/null
|
||
|
if [ $? -eq 1 ]; then # no match; we have a stand-alone spec
|
||
|
need_rails=''
|
||
|
fi
|
||
|
else # we have no args
|
||
|
filename='spec'
|
||
|
fi
|
||
|
|
||
|
command='rspec'
|
||
|
|
||
|
if [ $need_rails ]; then
|
||
|
command="ruby -S bundle exec $command"
|
||
|
fi
|
||
|
|
||
|
RAILS_ENV=test $command $filename
|