#!/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__) require 'rake/testtask' 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 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 started = 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 !started && /^[^-\n]/ !~ line # Ignore the "PostgreSQL database dump" comment block, # which varies from one client version to the next. next end started = true if /^SET (lock_timeout|idle_in_transaction_session_timeout|row_security) = / =~ line # Avoid edit wars between versions that do/don't write (and can/can't execute) 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