Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

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

Closed
wants to merge 1 commit into from

1 participant

@JonRowe
Owner

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

@JonRowe JonRowe closed this
@JonRowe JonRowe deleted the update-travis-build-scripts-2014-02-08-for-2-14-maintenance branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Feb 8, 2014
  1. @JonRowe
This page is out of date. Refresh to see the latest.
View
24 .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
View
1  maintenance-branch
@@ -0,0 +1 @@
+2-14-maintenance
View
23 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
View
114 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;
+}
View
22 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
View
34 script/test_all
@@ -1,34 +0,0 @@
-#!/bin/bash
-
-set -e -x
-
-# Needed by Bundler 1.3: https://github.com/carlhuda/bundler/issues/2382
-export RUBYOPT='-rrbconfig'
-
-# 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
-
-# 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
-export JAVA_OPTS='-client -XX:+TieredCompilation -XX:TieredStopAtLevel=1'
-
-echo "Bundling Standalone so we can run the specs w/o bundler loaded"
-bundle install --standalone --binstubs
-
-echo "Running all..."
-bin/rspec spec --format progress --profile
-
-echo
-echo "--------------------------------------------------------------------"
-echo
-
-for file in `find spec -iname '*_spec.rb'`; do
- bin/rspec $file --format progress
-done
-
-# TODO: it would be nice to figure out how to run the cukes w/o the overhead of
-# bundler, but just running `bin/cucumber` can fail due to the fact that it
-# shells out (via aruba) and executes `rspec`--which can pick up the wrong
-# rspec version if we're not running with bundler.
-bundle exec cucumber
-
Something went wrong with that request. Please try again.