X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b91db14a4dced9d6ea124e86be3c796e6f2c8e8c..a079a9f1627188e3ef0bb73e004defa2129d25f2:/services/api/Rakefile diff --git a/services/api/Rakefile b/services/api/Rakefile index 223f5ca216..fad803cb94 100644 --- a/services/api/Rakefile +++ b/services/api/Rakefile @@ -1,13 +1,80 @@ #!/usr/bin/env rake +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require File.expand_path('../config/application', __FILE__) -begin - ok = PgPower -rescue - abort "Hm, pg_power is missing. Make sure you use 'bundle exec rake ...'" +Server::Application.load_tasks + +namespace :test do + task(:run).clear + # Copied from the definition in Rails 3.2. + # This may need to be updated if we upgrade Rails. + task :run do + errors = %w(test:units test:functionals test:integration test:tasks).collect do |task| + begin + Rake::Task[task].invoke + nil + rescue => e + { :task => task, :exception => e } + end + end.compact + + if errors.any? + puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n") + abort + end + end end -Server::Application.load_tasks +namespace :db do + namespace :structure do + task :dump do + require 'tempfile' + origfnm = File.expand_path('../db/structure.sql', __FILE__) + tmpfnm = Tempfile.new 'structure.sql', File.expand_path('..', origfnm) + copyright_done = false + begin + tmpfile = File.new tmpfnm, 'w' + origfile = File.new origfnm + origfile.each_line do |line| + if !copyright_done + if !/Copyright .* Arvados/.match(line) + tmpfile.write "-- Copyright (C) The Arvados Authors. All rights reserved.\n--\n-- SPDX-License-Identifier: AGPL-3.0\n\n" + end + copyright_done = true + end + if /^SET lock_timeout = 0;/ =~ line + # Avoid edit wars between versions that do/don't write this line. + next + elsif /^COMMENT ON EXTENSION/ =~ line + # Avoid warning message when loading: + # "structure.sql:22: ERROR: must be owner of extension plpgsql" + tmpfile.write "-- " + end + tmpfile.write line + end + origfile.close + tmpfile.close + File.rename tmpfnm, origfnm + tmpfnm = false + ensure + File.unlink tmpfnm if tmpfnm + end + end + end +end + +# Work around Rails3+PostgreSQL9.5 incompatibility (pg_dump used to +# accept -i as a no-op, but now it's not accepted at all). +module Kernel + alias_method :orig_backtick, :` + def `(*args) #`#` sorry, parsers + args[0].sub!(/\Apg_dump -i /, 'pg_dump ') rescue nil + orig_backtick(*args) + end +end