X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Farchive%2Fspec%2Funit%2Fpuppet_x%2Fbodeco%2Farchive_spec.rb;fp=3rdparty%2Fmodules%2Farchive%2Fspec%2Funit%2Fpuppet_x%2Fbodeco%2Farchive_spec.rb;h=14862536720b2ca04017856d3642ec8d2325c061;hb=ce70d6baf887ae03a2a6a7f5e73eb2e2c3dea208;hp=0000000000000000000000000000000000000000;hpb=0ba93256399fbad7ed8fabfa39c24dd47169dde3;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/archive/spec/unit/puppet_x/bodeco/archive_spec.rb b/3rdparty/modules/archive/spec/unit/puppet_x/bodeco/archive_spec.rb new file mode 100644 index 000000000..148625367 --- /dev/null +++ b/3rdparty/modules/archive/spec/unit/puppet_x/bodeco/archive_spec.rb @@ -0,0 +1,96 @@ +# rubocop:disable RSpec/MultipleExpectations +require 'spec_helper' +require 'puppet_x/bodeco/archive' + +describe PuppetX::Bodeco::Archive do + let(:zipfile) do + File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'files', 'test.zip')) + end + + it '#checksum' do + Dir.mktmpdir do |dir| + tempfile = File.join(dir, 'test.zip') + FileUtils.cp(zipfile, tempfile) + + archive = described_class.new(tempfile) + expect(archive.checksum(:none)).to be nil + expect(archive.checksum(:md5)).to eq '557e2ebb67b35d1fddff18090b6bc26b' + expect(archive.checksum(:sha1)).to eq '377ec712d7fdb7266221db3441e3af2055448ead' + end + end + + it '#parse_flags' do + archive = described_class.new('test.tar.gz') + expect(archive.send(:parse_flags, 'xf', :undef, 'tar')).to eq 'xf' + expect(archive.send(:parse_flags, 'xf', 'xvf', 'tar')).to eq 'xvf' + expect(archive.send(:parse_flags, 'xf', { 'tar' => 'xzf', '7z' => '-y x' }, 'tar')).to eq 'xzf' + end + + it '#command on RedHat' do + Facter.stubs(:value).with(:osfamily).returns 'RedHat' + + tar = described_class.new('test.tar.gz') + expect(tar.send(:command, :undef)).to eq 'tar xzf test.tar.gz' + expect(tar.send(:command, 'xvf')).to eq 'tar xvf test.tar.gz' + tar = described_class.new('test.tar.bz2') + expect(tar.send(:command, :undef)).to eq 'tar xjf test.tar.bz2' + expect(tar.send(:command, 'xjf')).to eq 'tar xjf test.tar.bz2' + tar = described_class.new('test.tar.xz') + expect(tar.send(:command, :undef)).to eq 'unxz -dc test.tar.xz | tar xf -' + gunzip = described_class.new('test.gz') + expect(gunzip.send(:command, :undef)).to eq 'gunzip -d test.gz' + zip = described_class.new('test.zip') + expect(zip.send(:command, :undef)).to eq 'unzip -o test.zip' + expect(zip.send(:command, '-a')).to eq 'unzip -a test.zip' + + zip = described_class.new('/tmp/fun folder/test.zip') + expect(zip.send(:command, :undef)).to eq 'unzip -o /tmp/fun\ folder/test.zip' + expect(zip.send(:command, '-a')).to eq 'unzip -a /tmp/fun\ folder/test.zip' + end + + system_v = %w[Solaris AIX] + system_v.each do |os| + it "#command on #{os}" do + Facter.stubs(:value).with(:osfamily).returns os + + tar = described_class.new('test.tar.gz') + expect(tar.send(:command, :undef)).to eq 'gunzip -dc test.tar.gz | tar xf -' + expect(tar.send(:command, 'gunzip' => '-dc', 'tar' => 'xvf')).to eq 'gunzip -dc test.tar.gz | tar xvf -' + tar = described_class.new('test.tar.bz2') + expect(tar.send(:command, :undef)).to eq 'bunzip2 -dc test.tar.bz2 | tar xf -' + expect(tar.send(:command, 'bunzip' => '-dc', 'tar' => 'xvf')).to eq 'bunzip2 -dc test.tar.bz2 | tar xvf -' + tar = described_class.new('test.tar.xz') + expect(tar.send(:command, :undef)).to eq 'unxz -dc test.tar.xz | tar xf -' + gunzip = described_class.new('test.gz') + expect(gunzip.send(:command, :undef)).to eq 'gunzip -d test.gz' + zip = described_class.new('test.zip') + expect(zip.send(:command, :undef)).to eq 'unzip -o test.zip' + expect(zip.send(:command, '-a')).to eq 'unzip -a test.zip' + + zip = described_class.new('/tmp/fun folder/test.zip') + expect(zip.send(:command, :undef)).to eq 'unzip -o /tmp/fun\ folder/test.zip' + expect(zip.send(:command, '-a')).to eq 'unzip -a /tmp/fun\ folder/test.zip' + end + end + + it '#command on Windows' do + Facter.stubs(:value).with(:osfamily).returns 'windows' + + tar = described_class.new('test.tar.gz') + tar.stubs(:win_7zip).returns('7z.exe') + expect(tar.send(:command, :undef)).to eq '7z.exe x -aoa "test.tar.gz"' + expect(tar.send(:command, 'x -aot')).to eq '7z.exe x -aot "test.tar.gz"' + + zip = described_class.new('test.zip') + zip.stubs(:win_7zip).returns('7z.exe') + expect(zip.send(:command, :undef)).to eq '7z.exe x -aoa "test.zip"' + + zip = described_class.new('C:/Program Files/test.zip') + zip.stubs(:win_7zip).returns('7z.exe') + expect(zip.send(:command, :undef)).to eq '7z.exe x -aoa "C:/Program Files/test.zip"' + + zip = described_class.new('C:/Program Files/test.zip') + zip.stubs(:win_7zip).returns('powershell') + expect(zip.send(:command, :undef)).to eq 'powershell' + end +end