Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 85 lines (74 sloc) 2.271 kb
#! /usr/bin/env bash
#
# script to run tests on all relevant rubies, and valgrind on supported rubies.
# outputs tests to `test.log` and valgrind output to `valgrind.log`.
#
# requires `rvm` to be installed. sorry about that, multiruby dudes.
#
RUBIES="ruby-1.9.3 jruby-1.6.5 ree-1.8.7 ruby-1.9.2 ruby-1.8.7"
TEST_LOG=test.log
VALGRIND_LOG=valgrind.log
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
source "/usr/local/rvm/scripts/rvm"
else
echo "ERROR: An RVM installation was not found.\n"
fi
> $TEST_LOG
> $VALGRIND_LOG
set -o errexit
function rvm_use {
current_ruby=$1
rvm use "${1}@nokogiri" --create
}
function generate_parser_and_tokenizer {
old_ruby=$current_ruby
rvm_use ruby-1.8.7
bundle exec rake generate 2>&1 > /dev/null
rvm_use $old_ruby
}
function clean {
bundle exec rake clean clobber 2>&1 > /dev/null
}
function compile {
echo "** compiling ..."
generate_parser_and_tokenizer
bundle exec rake compile 2>&1 > /dev/null
}
for ruby in $RUBIES ; do
rvm_use ${ruby}
if gem list bundler | fgrep -v 1.1.rc 2>&1 > /dev/null ; then
gem install bundler --pre
fi
bundle install --quiet --local || bundle install
clean
done
for ruby in $RUBIES ; do
rvm_use ${ruby}
echo -e "**\n** testing nokogiri on ${ruby}\n**" | tee -a $TEST_LOG
clean
compile
echo "** running tests ..."
if [[ $ruby =~ "jruby" ]] ; then
# I get:
# /usr/lib/jvm/java-7-oracle/bin/java: symbol lookup error: /home/mike/.rvm/gems/jruby-1.6.5@nokogiri/gems/racc-1.4.7/lib/racc/cparse.so: undefined symbol: rb_catch
# if I use 'bundle exec' with jruby. Anybody?
rake test 2>&1 | tee -a $TEST_LOG
else
bundle exec rake test 2>&1 | tee -a $TEST_LOG
fi
clean
done
for ruby in $RUBIES ; do
if [[ ! $ruby =~ "jruby" ]] ; then
rvm_use ${ruby}
echo -e "**\n** nokogiri prerelease: ${ruby}\n**" | tee -a $VALGRIND_LOG
clean
compile
echo "** running valgrind on tests ..."
bundle exec rake test:valgrind 2>&1 | tee -a $VALGRIND_LOG
clean
fi
done
Jump to Line
Something went wrong with that request. Please try again.