forked from sparklemotion/nokogiri
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_all
executable file
·99 lines (87 loc) · 2.34 KB
/
test_all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#! /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.
#
# it's worth periodically using hoe-debugger's ability to generate
# valgrind suppression files to remove spurious valgrind messages
# (e.g., 1.9.3's glob_helper). ["rake test:valgrind:suppression"]
#
# I'd add rubinius, but rvm errors when building it on my machine. :(
RUBIES="\
ruby-2.3 \
ruby-2.2 \
ruby-2.1 \
ruby-2.0.0-p648 \
ruby-1.9.3-p551 \
ruby-1.9.2-p330 \
jruby-9.0.4.0 \
jruby-1.7.19
"
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.9.3
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
}
# quick check that we have All The Rubies
for ruby in $RUBIES ; do
rvm_use ${ruby}
done
for ruby in $RUBIES ; do
rvm_use ${ruby}
if ! [[ $(bundle -v) =~ "1.10." ]] ; then
yes | gem uninstall --force bundler
gem install bundler -v 1.10.6
bundle -v
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 ..."
bundle exec rake test 2>&1 | tee -a $TEST_LOG
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