diff options
author | Ahmad Sherif <me@ahmadsherif.com> | 2017-10-05 13:21:55 +0200 |
---|---|---|
committer | Ahmad Sherif <me@ahmadsherif.com> | 2017-10-10 18:49:47 +0200 |
commit | de1446d3a34c110c9cea0c6b8fb0c76826201426 (patch) | |
tree | b6df18df77b4582e3719973dfb229332dd94f806 /spec | |
parent | bbda5bd1dd2e841410d73a68fa8cd3a8425159c5 (diff) | |
download | gitlab-shell-de1446d3a34c110c9cea0c6b8fb0c76826201426.tar.gz |
Add relative git object dir envvars to check access requestfeature/add-pwd-envvar-to-check-access-request
Diffstat (limited to 'spec')
-rw-r--r-- | spec/object_dirs_helper_spec.rb | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/spec/object_dirs_helper_spec.rb b/spec/object_dirs_helper_spec.rb new file mode 100644 index 0000000..c2d0db7 --- /dev/null +++ b/spec/object_dirs_helper_spec.rb @@ -0,0 +1,95 @@ +require_relative 'spec_helper' +require_relative '../lib/object_dirs_helper' + +describe ObjectDirsHelper do + before do + allow(Dir).to receive(:pwd).and_return('/home/git/repositories/foo/bar.git') + end + + describe '.all_attributes' do + it do + expect(described_class.all_attributes.keys).to include(*%w[ + GIT_OBJECT_DIRECTORY + GIT_OBJECT_DIRECTORY_RELATIVE + GIT_ALTERNATE_OBJECT_DIRECTORIES + GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE + ]) + end + end + + describe '.absolute_object_dir' do + subject { described_class.absolute_object_dir } + + context 'when GIT_OBJECT_DIRECTORY is set' do + let(:dir) { '/home/git/repositories/foo/bar.git/./objects' } + + before do + allow(ENV).to receive(:[]).with('GIT_OBJECT_DIRECTORY').and_return(dir) + end + + it { expect(subject).to eq(dir) } + end + + context 'when GIT_OBJECT_DIRECTORY is not set' do + it { expect(subject).to be_nil } + end + end + + describe '.absolute_alt_object_dirs' do + subject { described_class.absolute_alt_object_dirs } + + context 'when GIT_ALTERNATE_OBJECT_DIRECTORIES is set' do + let(:dirs) { [ + '/home/git/repositories/foo/bar.git/./incoming-UKU6Gl', + '/home/git/repositories/foo/bar.git/./incoming-AcU7Qr' + ] } + + before do + allow(ENV).to receive(:[]).with('GIT_ALTERNATE_OBJECT_DIRECTORIES').and_return(dirs.join(File::PATH_SEPARATOR)) + end + + it { expect(subject).to eq(dirs) } + end + + context 'when GIT_ALTERNATE_OBJECT_DIRECTORIES is not set' do + it { expect(subject).to eq([]) } + end + end + + describe '.relative_alt_object_dirs' do + subject { described_class.relative_alt_object_dirs } + + context 'when GIT_ALTERNATE_OBJECT_DIRECTORIES is set' do + let(:dirs) { [ + '/home/git/repositories/foo/bar.git/./objects/incoming-UKU6Gl', + '/home/git/repositories/foo/bar.git/./objects/incoming-AcU7Qr' + ] } + + before do + allow(ENV).to receive(:[]).with('GIT_ALTERNATE_OBJECT_DIRECTORIES').and_return(dirs.join(File::PATH_SEPARATOR)) + end + + it { expect(subject).to eq(['objects/incoming-UKU6Gl', 'objects/incoming-AcU7Qr']) } + end + + context 'when GIT_ALTERNATE_OBJECT_DIRECTORIES is not set' do + it { expect(subject).to eq([]) } + end + end + + describe '.relative_object_dir' do + subject { described_class.relative_object_dir } + + context 'when GIT_OBJECT_DIRECTORY is set' do + before do + allow(ENV).to receive(:[]).with('GIT_OBJECT_DIRECTORY').and_return('/home/git/repositories/foo/bar.git/./objects') + end + + it { expect(subject).to eq('objects') } + end + + context 'when GIT_OBJECT_DIRECTORY is not set' do + it { expect(subject).to be_nil } + end + end +end |