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
|
require 'spec_helper'
describe Puppet::Type.type(:vcsrepo).provider(:cvs_provider) do
let(:resource) { Puppet::Type.type(:vcsrepo).new({
:name => 'test',
:ensure => :present,
:provider => :cvs,
:revision => '2634',
:source => 'lp:do',
:path => '/tmp/test',
})}
let(:provider) { resource.provider }
before :each do
Puppet::Util.stubs(:which).with('cvs').returns('/usr/bin/cvs')
end
describe 'creating' do
context "with a source" do
it "should execute 'cvs checkout'" do
resource[:source] = ':ext:source@example.com:/foo/bar'
resource[:revision] = 'an-unimportant-value'
expects_chdir('/tmp')
Puppet::Util::Execution.expects(:execute).with([:cvs, '-d', resource.value(:source), 'checkout', '-r', 'an-unimportant-value', '-d', 'test', 'bar'], :custom_environment => {})
provider.create
end
it "should execute 'cvs checkout' as user 'muppet'" do
resource[:source] = ':ext:source@example.com:/foo/bar'
resource[:revision] = 'an-unimportant-value'
resource[:user] = 'muppet'
expects_chdir('/tmp')
Puppet::Util::Execution.expects(:execute).with([:cvs, '-d', resource.value(:source), 'checkout', '-r', 'an-unimportant-value', '-d', 'test', 'bar'], :uid => 'muppet', :custom_environment => {})
provider.create
end
it "should just execute 'cvs checkout' without a revision" do
resource[:source] = ':ext:source@example.com:/foo/bar'
resource.delete(:revision)
Puppet::Util::Execution.expects(:execute).with([:cvs, '-d', resource.value(:source), 'checkout', '-d', File.basename(resource.value(:path)), File.basename(resource.value(:source))], :custom_environment => {})
provider.create
end
context "with a compression" do
it "should just execute 'cvs checkout' without a revision" do
resource[:source] = ':ext:source@example.com:/foo/bar'
resource[:compression] = '3'
resource.delete(:revision)
Puppet::Util::Execution.expects(:execute).with([:cvs, '-d', resource.value(:source), '-z', '3', 'checkout', '-d', File.basename(resource.value(:path)), File.basename(resource.value(:source))], :custom_environment => {})
provider.create
end
end
end
context "when a source is not given" do
it "should execute 'cvs init'" do
resource.delete(:source)
Puppet::Util::Execution.expects(:execute).with([:cvs, '-d', resource.value(:path), 'init'], :custom_environment => {})
provider.create
end
end
end
describe 'destroying' do
it "it should remove the directory" do
provider.destroy
end
end
describe "checking existence" do
it "should check for the CVS directory with source" do
resource[:source] = ':ext:source@example.com:/foo/bar'
File.expects(:directory?).with(File.join(resource.value(:path), 'CVS'))
provider.exists?
end
it "should check for the CVSROOT directory without source" do
resource.delete(:source)
File.expects(:directory?).with(File.join(resource.value(:path), 'CVSROOT'))
provider.exists?
end
end
describe "checking the revision property" do
before do
@tag_file = File.join(resource.value(:path), 'CVS', 'Tag')
end
context "when CVS/Tag exists" do
before do
@tag = 'TAG'
File.expects(:exist?).with(@tag_file).returns(true)
end
it "should read CVS/Tag" do
File.expects(:read).with(@tag_file).returns("T#{@tag}")
expect(provider.revision).to eq(@tag)
end
end
context "when CVS/Tag does not exist" do
before do
File.expects(:exist?).with(@tag_file).returns(false)
end
it "assumes HEAD" do
expect(provider.revision).to eq('HEAD')
end
end
end
describe "when setting the revision property" do
before do
@tag = 'SOMETAG'
end
it "should use 'cvs update -dr'" do
expects_chdir
Puppet::Util::Execution.expects(:execute).with([:cvs, 'update', '-dr', @tag, '.'], :custom_environment => {})
provider.revision = @tag
end
end
end
|