Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Updates from rspec-dev (2014-01-25) #437

Closed
wants to merge 1 commit into from

1 participant

@myronmarston

These are some updates, generated from rspec-dev's rake tasks.

@myronmarston myronmarston deleted the update-travis-build-scripts-2014-01-25 branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Jan 25, 2014
  1. @myronmarston
This page is out of date. Refresh to see the latest.
View
18 .travis.yml
@@ -1,25 +1,23 @@
-before_install:
- - gem update bundler
- - bundle --version
- - gem update --system 2.1.11
- - gem --version
-bundler_args: "--standalone --binstubs --without documentation"
-script: "script/test_all"
+# This file was generated on 2014-01-25T08:57:53-08: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
+ - ruby-head
+ - ree
- jruby-18mode
- jruby-19mode
- jruby-head
- rbx
- - ree
- - ruby-head
matrix:
allow_failures:
- rvm: jruby-head
- rvm: ruby-head
fast_finish: true
-
View
1  maintenance-branch
@@ -0,0 +1 @@
+master
View
20 script/clone_all_rspec_repos
@@ -0,0 +1,20 @@
+#!/bin/bash
+# This file was generated on 2014-01-25T08:57:53-08: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"
+ clone_repo "rspec-support"
+
+ popd
+else
+ echo "Not cloning all repos since we are not on MRI and they are only needed for the MRI build"
+fi
View
114 script/functions.sh
@@ -0,0 +1,114 @@
+# This file was generated on 2014-01-25T08:57:53-08: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 $MAINTENENCE_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;
+}
View
19 script/run_build
@@ -0,0 +1,19 @@
+#!/bin/bash
+# This file was generated on 2014-01-25T08:57:53-08: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"
+ run_spec_suite_for "rspec-support"
+else
+ echo "Skipping the rest of the build on non-MRI rubies"
+fi
Something went wrong with that request. Please try again.