Quick Tip: Bash Script for Running RSpec Tests Under Rails

Tue October 11, 2011

This will be specific to our particular setup but could easily be adapted for other similar use cases.

Basically, I got tired of typing:

$ rake spec SPEC=spec/acceptance/path/to/file.rb SPEC_OPTS='--line 42'

…in order to re-run a single test after attempting to fix it. The rspec output gives a stack trace that shows the file/line number the failure occured on, like this:

./spec/acceptance/path/to/file.rb:42

So I made a bash script that lets me just copy that line and then run

$ test [pasted line]

and it will run the test again. Here it is:

function test() {
   local a1="$1"
   local a2="$2"
   if [[ $1 == *:* ]]; then arr=(${1//:/ }); a1="${arr[0]}"; a2="${arr[1]}"; fi;
   local spec="$a1"
   if [ -n "$a2" ]; then local opts="--line ${a2}"; fi;
   if [ -z "$opts" ]; then
     echo rake spec SPEC=${spec}
     bundle exec rake spec SPEC=${spec}
   else
     echo rake spec SPEC=${spec} SPEC_OPTS="${opts}"
     bundle exec rake spec SPEC=${spec} SPEC_OPTS="${opts}"
   fi
 }

Tags:

0 Comments

Leave a Comment