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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
require 'spec_helper'
describe Puppet::Type.type(:vcsrepo).provider(:hg) do
let(:resource) { Puppet::Type.type(:vcsrepo).new({
:name => 'test',
:ensure => :present,
:provider => :hg,
:path => '/tmp/vcsrepo',
})}
let(:provider) { resource.provider }
before :each do
Puppet::Util.stubs(:which).with('hg').returns('/usr/bin/hg')
end
describe 'creating' do
context 'with source and revision' do
it "should execute 'hg clone -u' with the revision" do
resource[:source] = 'something'
resource[:revision] = '1'
provider.expects(:hg).with('clone', '-u',
resource.value(:revision),
resource.value(:source),
resource.value(:path))
provider.create
end
end
context 'without revision' do
it "should just execute 'hg clone' without a revision" do
resource[:source] = 'something'
provider.expects(:hg).with('clone', resource.value(:source), resource.value(:path))
provider.create
end
end
context "when a source is not given" do
it "should execute 'hg init'" do
provider.expects(:hg).with('init', resource.value(:path))
provider.create
end
end
context "when basic auth is used" do
it "should execute 'hg clone'" do
resource[:source] = 'something'
resource[:basic_auth_username] = 'user'
resource[:basic_auth_password] = 'pass'
provider.expects(:hg).with('clone',
resource.value(:source),
resource.value(:path),
"--config","\"auth.x.prefix=" + resource.value(:source) + "\"",
"--config","\"auth.x.username=" + resource.value(:basic_auth_username) + "\"",
"--config","\"auth.x.password=" + resource.value(:basic_auth_password) + "\"",
"--config","\"auth.x.schemes=http https" + "\"")
provider.create
end
end
end
describe 'destroying' do
it "it should remove the directory" do
expects_rm_rf
provider.destroy
end
end
describe "checking existence" do
it "should check for the directory" do
expects_directory?(true, File.join(resource.value(:path), '.hg'))
provider.exists?
end
end
describe "checking the revision property" do
before do
expects_chdir
end
context "when given a non-SHA as the resource revision" do
before do
provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
end
context "when its SHA is not different than the current SHA" do
it "should return the ref" do
resource[:revision] = '0.6'
expect(provider.revision).to eq('0.6')
end
end
context "when its SHA is different than the current SHA" do
it "should return the current SHA" do
resource[:revision] = '0.5.3'
expect(provider.revision).to eq('34e6012c783a')
end
end
end
context "when given a SHA as the resource revision" do
before do
provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
end
context "when it is the same as the current SHA", :resource => {:revision => '34e6012c783a'} do
it "should return it" do
resource[:revision] = '34e6012c783a'
provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
expect(provider.revision).to eq(resource.value(:revision))
end
end
context "when it is not the same as the current SHA", :resource => {:revision => 'not-the-same'} do
it "should return the current SHA" do
resource[:revision] = 'not-the-same'
provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
expect(provider.revision).to eq('34e6012c783a')
end
end
end
end
describe "setting the revision property" do
before do
@revision = '6aa99e9b3ab1'
end
it "should use 'hg update ---clean -r'" do
expects_chdir
provider.expects(:hg).with('pull')
provider.expects(:hg).with('merge')
provider.expects(:hg).with('update', '--clean', '-r', @revision)
provider.revision = @revision
end
end
end
|