Remove excess whitespace.
[puppet_vcsrepo.git] / spec / unit / puppet / provider / vcsrepo / hg_spec.rb
1 require 'spec_helper'
2
3 describe_provider :vcsrepo, :hg, :resource => {:path => '/tmp/vcsrepo'} do
4
5   describe 'creating' do
6     resource_with :source do
7       resource_with :revision do
8         it "should execute 'hg clone -u' with the revision" do
9           provider.expects(:hg).with('clone', '-u',
10                                       resource.value(:revision),
11                                       resource.value(:source),
12                                       resource.value(:path))
13           provider.create
14         end
15       end
16
17       resource_without :revision do
18         it "should just execute 'hg clone' without a revision" do
19           provider.expects(:hg).with('clone', resource.value(:source), resource.value(:path))
20           provider.create
21         end
22       end
23     end
24
25     context "when a source is not given" do
26       it "should execute 'hg init'" do
27         provider.expects(:hg).with('init', resource.value(:path))
28         provider.create
29       end
30     end
31   end
32
33   describe 'destroying' do
34     it "it should remove the directory" do
35       expects_rm_rf
36       provider.destroy
37     end
38   end
39
40   describe "checking existence" do
41     it "should check for the directory" do
42       expects_directory?(true, File.join(resource.value(:path), '.hg'))
43       provider.exists?
44     end
45   end
46
47   describe "checking the revision property" do
48     before do
49       expects_chdir
50     end
51
52     context "when given a non-SHA as the resource revision" do
53       before do
54         provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
55         provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
56       end
57
58       context "when its SHA is not different than the current SHA", :resource => {:revision => '0.6'} do
59         it "should return the ref" do
60           provider.revision.should == '0.6'
61         end
62       end
63
64       context "when its SHA is different than the current SHA", :resource => {:revision => '0.5.3'} do
65         it "should return the current SHA" do
66           provider.revision.should == '34e6012c783a'
67         end
68       end
69     end
70     context "when given a SHA as the resource revision" do
71       before do
72         provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
73       end
74
75       context "when it is the same as the current SHA", :resource => {:revision => '34e6012c783a'} do
76         it "should return it" do
77           provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
78           provider.revision.should == resource.value(:revision)
79         end
80       end
81
82       context "when it is not the same as the current SHA", :resource => {:revision => 'not-the-same'} do
83         it "should return the current SHA" do
84           provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
85           provider.revision.should == '34e6012c783a'
86         end
87       end
88     end
89   end
90
91   describe "setting the revision property" do
92     before do
93       @revision = '6aa99e9b3ab1'
94     end
95     it "should use 'hg update ---clean -r'" do
96       expects_chdir
97       provider.expects('hg').with('pull')
98       provider.expects('hg').with('merge')
99       provider.expects('hg').with('update', '--clean', '-r', @revision)
100       provider.revision = @revision
101     end
102   end
103
104 end