53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
RSpec.describe Gitlab::Backup::Cli::Dependencies do
 | 
						|
  let(:bin_path) { Dir.mktmpdir('dependencies', temp_path) }
 | 
						|
 | 
						|
  before do
 | 
						|
    stub_env('PATH', bin_path)
 | 
						|
  end
 | 
						|
 | 
						|
  after do
 | 
						|
    FileUtils.rmtree(bin_path)
 | 
						|
  end
 | 
						|
 | 
						|
  describe '.find_executable' do
 | 
						|
    it 'returns the full path of the executable' do
 | 
						|
      executable = create_dummy_executable('dummy')
 | 
						|
 | 
						|
      expect(described_class.find_executable('dummy')).to eq(executable)
 | 
						|
    end
 | 
						|
 | 
						|
    it 'returns nil when executable cant be found' do
 | 
						|
      expect(described_class.find_executable('non-existent')).to be_nil
 | 
						|
    end
 | 
						|
 | 
						|
    it 'also finds by absolute path' do
 | 
						|
      executable = create_dummy_executable('dummy')
 | 
						|
 | 
						|
      expect(described_class.find_executable(executable)).to eq(executable)
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe '.executable_exist?' do
 | 
						|
    it 'returns true if an executable exists in the PATH' do
 | 
						|
      create_dummy_executable('dummy')
 | 
						|
 | 
						|
      expect(described_class.executable_exist?('dummy')).to be_truthy
 | 
						|
    end
 | 
						|
 | 
						|
    it 'returns false when no exectuable can be found' do
 | 
						|
      expect(described_class.executable_exist?('non-existent')).to be_falsey
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def create_dummy_executable(name)
 | 
						|
    filepath = File.join(bin_path, name)
 | 
						|
 | 
						|
    FileUtils.touch(filepath)
 | 
						|
    File.chmod(0o755, filepath)
 | 
						|
 | 
						|
    filepath
 | 
						|
  end
 | 
						|
end
 |