summaryrefslogtreecommitdiff
path: root/vendor/rsync_command/test/rsync_test.rb
blob: 7860f73b02aa350c4ffdd6914d4eede963155031 (plain)
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
require 'test/unit'
require File.expand_path('../../lib/rsync_command', __FILE__)

if RUBY_VERSION >= '1.9'
  SimpleOrderedHash = ::Hash
else
  class SimpleOrderedHash < Hash
    def each; self.keys.map(&:to_s).sort.each {|key| yield [key.to_sym, self[key.to_sym]]}; end
  end
end

class RsyncTest < Test::Unit::TestCase

  def test_build_simple_command
    command = rsync_command('bar', 'foo')
    assert_equal 'rsync -az bar foo', command
  end

  def test_allows_passing_delete
    command = rsync_command('bar', 'foo', :delete => true)
    assert_equal 'rsync -az --delete bar foo', command
  end

  def test_allows_specifying_an_exclude
    command = rsync_command('bar', 'foo', :excludes => '.git')
    assert_equal "rsync -az --exclude='.git' bar foo", command
  end

  def test_ssh_options_keys_only_lists_existing_files
    command = rsync_command('.', 'foo', :ssh => { :keys => [__FILE__, "#{__FILE__}dadijofs"] })
    assert_match /-i '#{__FILE__}'/, command
  end

  def test_ssh_options_ignores_keys_if_nil
    command = rsync_command('.', 'foo', :ssh => { :keys => nil })
    assert_equal 'rsync -az . foo', command
    command = rsync_command('bar', 'foo')
    assert_equal 'rsync -az bar foo', command
  end

  def test_ssh_options_config_adds_flag
    command = rsync_command('.', 'foo', :ssh => { :config => __FILE__ })
    assert_equal %Q[rsync -az -e "ssh -F '#{__FILE__}'" . foo], command
  end

  def test_ssh_options_port_adds_port
    command = rsync_command('.', 'foo', :ssh => { :port => '30022' })
    assert_equal %Q[rsync -az -e "ssh -p 30022" . foo], command
  end

  def test_ssh_options_ignores_config_if_nil_or_false
    command = rsync_command('.', 'foo', :ssh => { :config => nil })
    assert_equal 'rsync -az . foo', command
    command = rsync_command('.', 'foo', :ssh => { :config => false })
    assert_equal 'rsync -az . foo', command
  end

  def test_remote_address
    cmd = rsync_command('.', {:user => 'user', :host => 'box.local', :path => '/tmp'})
    assert_equal "rsync -az . user@box.local:/tmp", cmd
  end

  #def test_remote_address_drops_at_when_user_is_nil
  #  assert_equal 'box.local:/tmp', SupplyDrop::Rsync.remote_address(nil, 'box.local', '/tmp')
  #end

  protected

  def rsync_command(src, dest, options={})
    rsync = RsyncCommand.new(:flags => '-az')
    rsync.command(src, dest, options)
  end

end