Sha256: b7ed23c90a1618ce525fd512b446c2234447ddfbde28fcfb4771b725b749b710

Contents?: true

Size: 1.61 KB

Versions: 3

Compression:

Stored size: 1.61 KB

Contents

require 'spec_helper'

require 'fileutils'
include FileUtils

describe 'tar backup' do
  before(:all) do
    # need both local and instance vars
    # instance variables are used in tests
    # local variables are used in the backup definition (instance vars can't be seen)
    @root = root = 'tmp/cleanup_example'

    # clean state
    rm_rf @root
    mkdir_p @root

    # create source tree
    @src = src = "#{@root}/src"
    mkdir_p src

    File.open(qwe = "#{@src}/qwe", 'w') {|f| f.write('qwe') }

    @dst = dst = "#{@root}/backup"
    mkdir_p "#{@dst}/archive"

    @now = Time.now
    @timestamp = @now.strftime('%y%m%d-%H%M')

    stub(Time).now {@now} # Freeze

    cp qwe, "#{dst}/archive/archive-foo.000001.tar.gz"
    cp qwe, "#{dst}/archive/archive-foo.000002.tar.gz"
    cp qwe, "#{dst}/archive/archive-foobar.000001.tar.gz"
    cp qwe, "#{dst}/archive/archive-foobar.000002.tar.gz"

    config = WebTranslateIt::Safe.safe do
      local :path => "#{dst}/:kind"
      tar do
        keep :local => 1 # only leave the latest
        archive :foo do
          files src
        end
      end
    end
    WebTranslateIt::Safe.process config

    @backup = "#{dst}/archive/archive-foo.#{@timestamp}.tar.gz"
  end

  it 'should create backup file' do
    File.exist?(@backup).should be true
  end

  it 'should remove old backups' do
    Dir["#{@dst}/archive/archive-foo.*"].should == [@backup]
  end

  it 'should NOT remove backups with base having same prefix' do
    Dir["#{@dst}/archive/archive-foobar.*"].sort.should == ["#{@dst}/archive/archive-foobar.000001.tar.gz", "#{@dst}/archive/archive-foobar.000002.tar.gz"]
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
webtranslateit-safe-0.4.2 spec/integration/cleanup_spec.rb
webtranslateit-safe-0.4.1 spec/integration/cleanup_spec.rb
webtranslateit-safe-0.4.0 spec/integration/cleanup_spec.rb