diff options
author | Alexis Reigel <mail@koffeinfrei.org> | 2017-08-09 17:43:10 +0300 |
---|---|---|
committer | Alexis Reigel <mail@koffeinfrei.org> | 2017-08-11 09:38:42 +0300 |
commit | 6cd9888f6fc8bb1e0b6ff11ace8aacb19aedb268 (patch) | |
tree | 7aa89711bd0b4d2db833623fb7b051f996808653 | |
parent | 3a9f210b5ce44f1a464e765ff6e95c1eac5363d8 (diff) |
store gpg return directory locally
-rw-r--r-- | lib/gitlab/gpg.rb | 14 | ||||
-rw-r--r-- | spec/lib/gitlab/gpg_spec.rb | 22 |
2 files changed, 31 insertions, 5 deletions
diff --git a/lib/gitlab/gpg.rb b/lib/gitlab/gpg.rb index e1d1724295a..653c56d925b 100644 --- a/lib/gitlab/gpg.rb +++ b/lib/gitlab/gpg.rb @@ -44,19 +44,23 @@ module Gitlab def using_tmp_keychain Dir.mktmpdir do |dir| - @original_dirs ||= [GPGME::Engine.dirinfo('homedir')] - @original_dirs.push(dir) + previous_dir = current_home_dir GPGME::Engine.home_dir = dir return_value = yield - @original_dirs.pop - - GPGME::Engine.home_dir = @original_dirs[-1] + GPGME::Engine.home_dir = previous_dir return_value end end + + # 1. Returns the custom home directory if one has been set by calling + # `GPGME::Engine.home_dir=` + # 2. Returns the default home directory otherwise + def current_home_dir + GPGME::Engine.info.first.home_dir || GPGME::Engine.dirinfo('homedir') + end end end diff --git a/spec/lib/gitlab/gpg_spec.rb b/spec/lib/gitlab/gpg_spec.rb index 8041518117d..95d371ea178 100644 --- a/spec/lib/gitlab/gpg_spec.rb +++ b/spec/lib/gitlab/gpg_spec.rb @@ -43,6 +43,28 @@ describe Gitlab::Gpg do ).to eq [] end end + + describe '.current_home_dir' do + let(:default_home_dir) { GPGME::Engine.dirinfo('homedir') } + + it 'returns the default value when no explicit home dir has been set' do + expect(described_class.current_home_dir).to eq default_home_dir + end + + it 'returns the explicitely set home dir' do + GPGME::Engine.home_dir = '/tmp/gpg' + + expect(described_class.current_home_dir).to eq '/tmp/gpg' + + GPGME::Engine.home_dir = GPGME::Engine.dirinfo('homedir') + end + + it 'returns the default value when explicitely setting the home dir to nil' do + GPGME::Engine.home_dir = nil + + expect(described_class.current_home_dir).to eq default_home_dir + end + end end describe Gitlab::Gpg::CurrentKeyChain do |