Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates from rspec-dev (2014-02-08) #446

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 15 additions & 9 deletions .travis.yml
@@ -1,18 +1,24 @@
script: "script/test_all"
bundler_args: "--standalone --binstubs --without documentation"
# This file was generated on 2014-02-08T19:43:10+11:00 from the rspec-dev repo.
# DO NOT modify it by hand as your changes will get lost the next time it is generated.

before_install: "script/clone_all_rspec_repos"
bundler_args: "--binstubs --standalone --without documentation --path ../bundle"
script: "script/run_build"
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
- 2.0.0
- 2.1.0
- jruby-18mode
- jruby-19mode
- ruby-head
- ree
- rbx-18mode
- rbx-19mode
- jruby-18mode
- jruby
- jruby-head
- rbx
matrix:
allow_failures:
- rvm: rbx-19mode
- rvm: rbx-18mode

- rvm: jruby-18mode
- rvm: jruby-head
- rvm: ruby-head
fast_finish: true
1 change: 1 addition & 0 deletions maintenance-branch
@@ -0,0 +1 @@
2-14-maintenance
23 changes: 23 additions & 0 deletions script/clone_all_rspec_repos
@@ -0,0 +1,23 @@
#!/bin/bash
# This file was generated on 2014-02-08T19:43:10+11:00 from the rspec-dev repo.
# DO NOT modify it by hand as your changes will get lost the next time it is generated.

set -e -x
source script/functions.sh

if is_mri; then
pushd ..

clone_repo "rspec"
clone_repo "rspec-core"
clone_repo "rspec-expectations"
clone_repo "rspec-mocks"

if [ "$MAINTENANCE_BRANCH" != "2-99-maintenance" ]; then
clone_repo "rspec-support"
fi

popd
else
echo "Not cloning all repos since we are not on MRI and they are only needed for the MRI build"
fi
114 changes: 114 additions & 0 deletions script/functions.sh
@@ -0,0 +1,114 @@
# This file was generated on 2014-02-08T19:43:10+11:00 from the rspec-dev repo.
# DO NOT modify it by hand as your changes will get lost the next time it is generated.

# 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
SPECS_HAVE_RUN_FILE=specs.out
MAINTENANCE_BRANCH=`cat maintenance-branch`
BUNDLE_INSTALL_FLAGS=`cat .travis.yml | grep bundler_args | tr -d '"' | grep -o " .*"`

# Taken from:
# https://github.com/travis-ci/travis-build/blob/e9314616e182a23e6a280199cd9070bfc7cae548/lib/travis/build/script/templates/header.sh#L34-L53
travis_retry() {
local result=0
local count=1
while [ $count -le 3 ]; do
[ $result -ne 0 ] && {
echo -e "\n\033[33;1mThe command \"$@\" failed. Retrying, $count of 3.\033[0m\n" >&2
}
"$@"
result=$?
[ $result -eq 0 ] && break
count=$(($count + 1))
sleep 1
done

[ $count -eq 3 ] && {
echo "\n\033[33;1mThe command \"$@\" failed 3 times.\033[0m\n" >&2
}

return $result
}

function is_mri {
if ruby -e "exit(!defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby')"; then
# RUBY_ENGINE only returns 'ruby' on MRI.
# MRI 1.8.7 lacks the constant but all other rubies have it (including JRuby in 1.8 mode)
return 0
else
return 1
fi;
}

function is_mri_192 {
if is_mri; then
if ruby -e "exit(RUBY_VERSION == '1.9.2')"; then
return 0
else
return 1
fi
else
return 1
fi
}

function clone_repo {
if [ ! -d $1 ]; then # don't clone if the dir is already there
travis_retry git clone git://github.com/rspec/$1 --depth 1 --branch $MAINTENANCE_BRANCH
fi;
}

function run_specs_and_record_done {
local rspec_bin=bin/rspec

# rspec-core needs to run with a special script that loads simplecov first,
# so that it can instrument rspec-core's code before rspec-core has been loaded.
if [ -f script/rspec_with_simplecov ]; then
rspec_bin=script/rspec_with_simplecov
fi;

$rspec_bin spec --backtrace --format progress --profile --format progress --out $SPECS_HAVE_RUN_FILE
}

function run_cukes {
if [ -d features ]; then
# 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
#
# Note that we delay setting this until we run the cukes because we've seen
# spec failures in our spec suite due to problems with this mode.
export JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1'

if is_mri_192; then
# For some reason we get SystemStackError on 1.9.2 when using
# the bin/cucumber approach below. That approach is faster
# (as it avoids the bundler tax), so we use it on rubies where we can.
bundle exec cucumber --strict
else
# Prepare RUBYOPT for scenarios that are shelling out to ruby,
# and PATH for those that are using `rspec` or `rake`.
RUBYOPT="-I${PWD}/../bundle -rbundler/setup" \
PATH="${PWD}/bin:$PATH" \
bin/cucumber --strict
fi
fi
}

function run_specs_one_by_one {
for file in `find spec -iname '*_spec.rb'`; do
bin/rspec $file -b --format progress
done
}

function run_spec_suite_for {
if [ ! -f ../$1/$SPECS_HAVE_RUN_FILE ]; then # don't rerun specs that have already run
pushd ../$1
echo
echo "Running specs for $1"
echo
unset BUNDLE_GEMFILE
travis_retry bundle install $BUNDLE_INSTALL_FLAGS
run_specs_and_record_done
popd
fi;
}
22 changes: 22 additions & 0 deletions script/run_build
@@ -0,0 +1,22 @@
#!/bin/bash
# This file was generated on 2014-02-08T19:43:10+11:00 from the rspec-dev repo.
# DO NOT modify it by hand as your changes will get lost the next time it is generated.

set -e -x
source script/functions.sh

run_specs_and_record_done
run_cukes

if is_mri; then
run_specs_one_by_one
run_spec_suite_for "rspec-core"
run_spec_suite_for "rspec-expectations"
run_spec_suite_for "rspec-mocks"

if [ "$MAINTENANCE_BRANCH" != "2-99-maintenance" ] && [ "$MAINTENANCE_BRANCH" != "2-14-maintenance" ]; then
run_spec_suite_for "rspec-support"
fi
else
echo "Skipping the rest of the build on non-MRI rubies"
fi
34 changes: 0 additions & 34 deletions script/test_all

This file was deleted.