task :default => :test task :test => %w[test:unit test:integration] namespace :test do task :unit => %w[test:php:unit test:hhvm:unit] task :integration => %w[test:php:integration test:hhvm:integration] namespace :php do desc "print PHP version" task :version do print_php_version("php") end desc "run unit tests under PHP" task :unit => :version do run_php_test_suite("php", "unit") end desc "run integration tests under PHP" task :integration do run_php_test_suite("php", "integration") end end namespace :hhvm do desc "print HHVM version" task :version do print_php_version("hhvm") end desc "run tests under HHVM" task :test => [:unit, :integration] desc "run unit tests under HHVM" task :unit => :version do run_php_test_suite("hhvm", "unit") end desc "run integration tests under HHVM" task :integration do run_php_test_suite("hhvm", "integration") end end desc "run tests under PHP" task :php => %w[php:unit php:integration] desc "run tests under HHVM" task :hhvm => %w[hhvm:unit hhvm:integration] desc "run a single test file" task :file, :file_path do |t, args| run_php_test_file(args[:file_path]) end desc "run single test (e.g. rake test:single[GatewayTest::testConfigGetsAssertedValid])" task :single, :test_name do |t, args| run_php_test(args[:test_name]) end end desc "update the copyright year" task :copyright, :from_year, :to_year do |t, args| sh "find tests lib -type f -name '*.php' -exec sed -i 's/#{args[:from_year]} Braintree/#{args[:to_year]} Braintree/g' {} +" end def print_php_version(interpreter) sh "#{interpreter} --version" end def run_php_test_suite(interpreter, test_suite) sh "#{interpreter} ./vendor/bin/phpunit --testsuite #{test_suite}" end def run_php_test_file(test_file) sh "./vendor/bin/phpunit #{test_file}" end def run_php_test(test_name) sh "./vendor/bin/phpunit --filter #{test_name}" end