diff --git a/Gemfile.checksum b/Gemfile.checksum index cae57fed0d9527c7cd84b4ed33a91859d456500d..3a4dbd9cf68c3fb9b478250cb4c34520d45b3e59 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -527,7 +527,7 @@ {"name":"rspec-benchmark","version":"0.6.0","platform":"ruby","checksum":"1014adb57ec2599a2455c63884229f367a2fff6a63a77fd68ce5d804c83dd6cf"}, {"name":"rspec-core","version":"3.12.0","platform":"ruby","checksum":"c466f4137966526e177d2156ca45c249eeecc7ed519b23ae2fb80c4675406bc5"}, {"name":"rspec-expectations","version":"3.12.2","platform":"ruby","checksum":"8652db70b25ae3378b7274477a906b6ad1833a7b7cfbb001a03f49dd1c1d6a0d"}, -{"name":"rspec-mocks","version":"3.12.3","platform":"ruby","checksum":"cc0a1176707e641a2c66c71fe769486fec57d7df8ec7e34320f8957a1363026b"}, +{"name":"rspec-mocks","version":"3.12.6","platform":"ruby","checksum":"de51a4148ba2ce6f1c1646a2a03e9df2f52da9a42b164f2e7467b2cbe37e07bf"}, {"name":"rspec-parameterized","version":"1.0.0","platform":"ruby","checksum":"9c07b043c72afbd23dd9a1dd48c06f46bc2fb1a6d875c6703e254932ba28b386"}, {"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"}, {"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"}, diff --git a/Gemfile.lock b/Gemfile.lock index cec5258561c71bbfcf4ea25241efb4a23c3adf6f..2039418605b58a4826f8c19ca0b2136d389e2269 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1353,7 +1353,7 @@ GEM rspec-expectations (3.12.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-mocks (3.12.3) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-parameterized (1.0.0) diff --git a/lib/backup/gitaly_backup.rb b/lib/backup/gitaly_backup.rb index 53c998efd716dc8ba302a1161c9ec6e918cf0d0c..bb9f45121e9b7efb3c062a5e329a498d075ded2b 100644 --- a/lib/backup/gitaly_backup.rb +++ b/lib/backup/gitaly_backup.rb @@ -107,7 +107,11 @@ def build_env 'SSL_CERT_FILE' => Gitlab::X509::Certificate.default_cert_file, 'SSL_CERT_DIR' => Gitlab::X509::Certificate.default_cert_dir, 'GITALY_SERVERS' => gitaly_servers_encoded - }.merge(ENV) + }.merge(current_env) + end + + def current_env + ENV end def started? diff --git a/spec/lib/backup/database_spec.rb b/spec/lib/backup/database_spec.rb index dd8a4a14531cdfaaa2e20fe9d0cfc94601346db4..e0ca090d96a302c44c55bd103bd7f6f208a6a4ee 100644 --- a/spec/lib/backup/database_spec.rb +++ b/spec/lib/backup/database_spec.rb @@ -272,14 +272,13 @@ end context 'with PostgreSQL settings defined in the environment' do - let(:cmd) { %W[#{Gem.ruby} -e] + ["$stderr.puts ENV.to_h.select { |k, _| k.start_with?('PG') }"] } let(:config) { YAML.load_file(File.join(Rails.root, 'config', 'database.yml'))['test'] } before do - stub_const 'ENV', ENV.to_h.merge({ + stub_env(ENV.to_h.merge({ 'GITLAB_BACKUP_PGHOST' => 'test.example.com', 'PGPASSWORD' => 'donotchange' - }) + })) end it 'overrides default config values' do @@ -289,12 +288,13 @@ expect(Rake::Task['gitlab:db:drop_tables:main']).to receive(:invoke) end + expect(ENV).to receive(:[]=).with('PGHOST', 'test.example.com') + expect(ENV).not_to receive(:[]=).with('PGPASSWORD', anything) + subject.restore(backup_dir) - expect(output).to include(%("PGHOST"=>"test.example.com")) - expect(output).to include(%("PGPASSWORD"=>"donotchange")) - expect(output).to include(%("PGPORT"=>"#{config['port']}")) if config['port'] - expect(output).to include(%("PGUSER"=>"#{config['username']}")) if config['username'] + expect(ENV['PGPORT']).to eq(config['port']) if config['port'] + expect(ENV['PGUSER']).to eq(config['username']) if config['username'] end end diff --git a/spec/lib/backup/gitaly_backup_spec.rb b/spec/lib/backup/gitaly_backup_spec.rb index 172fc28dd3e5f700412b9a92364d994572cc490d..40e835e9dc8e276178ff6479fa1382b8ca73ea2a 100644 --- a/spec/lib/backup/gitaly_backup_spec.rb +++ b/spec/lib/backup/gitaly_backup_spec.rb @@ -132,11 +132,8 @@ ) end - before do - stub_const('ENV', ssl_env) - end - it 'passes through SSL envs' do + expect(subject).to receive(:current_env).and_return(ssl_env) expect(Open3).to receive(:popen2).with(expected_env, anything, 'create', '-path', anything, '-layout', 'pointer', '-id', backup_id).and_call_original subject.start(:create, destination, backup_id: backup_id)