diff --git a/script/test b/script/test index 52dc4b92..a6ae0f4d 100755 --- a/script/test +++ b/script/test @@ -5,24 +5,11 @@ # script/test if [ -z "$1" ]; then - TEST_FILES="./test/test_*.rb" + TEST_FILES=$(ruby -e "puts Dir.glob('test/test_*.rb')") else TEST_FILES="$@" fi -# bundle exec gem env -GEM_DIR=$(bundle exec gem env | grep -C 1 "GEM PATHS" | tail -1 | cut -d '-' -f2 | cut -d' ' -f2) -RAKE_LIB_WITH_VERSION=$(bundle exec ruby -e "puts Gem::Specification.find_by_name('rake').gem_dir.split('/').last + '/lib'") -RAKE_LIB_DIR="${GEM_DIR}/gems/${RAKE_LIB_WITH_VERSION}" - -test -d "${RAKE_LIB_DIR}" || { - echo "No ${RAKE_LIB_DIR}. Installing Rake." - bundle show rake | cut -d'/' -f12 | cut -d'-' -f 2 | xargs bundle exec gem install rake -v -} - set -x -time bundle exec ruby -I"lib:test" \ - -I"${RAKE_LIB_DIR}" \ - "${RAKE_LIB_DIR}/rake/rake_test_loader.rb" \ - $TEST_FILES +time bundle exec ruby -I"lib:test" -rloader $TEST_FILES diff --git a/test/loader.rb b/test/loader.rb new file mode 100644 index 00000000..f2c9c0d1 --- /dev/null +++ b/test/loader.rb @@ -0,0 +1,44 @@ +# Yoinked lovingly from Rake's source code. +# +# Copyright (c) Jim Weirich +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +require 'rake' + +# Load the test files from the command line. +argv = ARGV.select do |argument| + case argument + when /^-/ then + argument + when /\*/ then + FileList[argument].to_a.each do |file| + require File.expand_path file + end + + false + else + require File.expand_path argument + + false + end +end + +ARGV.replace argv