File: archive_spec.rb

package info (click to toggle)
puppet-module-puppet-archive 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 688 kB
  • sloc: ruby: 2,152; sh: 30; makefile: 2
file content (96 lines) | stat: -rw-r--r-- 4,213 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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