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
|
require 'pathname'; Pathname.new(__FILE__).realpath.ascend { |x| begin; require (x + 'spec_helper.rb'); break; rescue LoadError; end }
provider_class = Puppet::Type.type(:vcsrepo).provider(:cvs)
describe provider_class do
before :each do
@resource = stub("resource")
@provider = provider_class.new(@resource)
@path = '/tmp/vcsrepo'
end
describe 'when creating' do
before do
@resource.expects(:value).with(:path).returns(@path).at_least_once
end
context "when a source is given" do
before do
@source = ":pserver:anonymous@example.com:/sources/myproj"
@resource.expects(:value).with(:source).returns(@source).at_least_once
Dir.expects(:chdir).with(File.dirname(@path)).yields
end
context "and when a revision is given" do
before do
@tag = 'SOMETAG'
@resource.expects(:value).with(:revision).returns(@tag).at_least_once
@resource.expects(:value).with(:compression).returns(nil).at_least_once
end
it "should execute 'cvs checkout' and 'cvs update -r'" do
@provider.expects(:cvs).with('-d', @source, 'checkout', '-d', File.basename(@path), File.basename(@source))
Dir.expects(:chdir).with(@path).yields
@provider.expects(:cvs).with('update', '-r', @tag, '.')
@provider.create
end
end
context "and when a revision is not given" do
before do
@resource.expects(:value).with(:revision).returns(nil).at_least_once
@resource.expects(:value).with(:compression).returns(nil).at_least_once
end
it "should just execute 'cvs checkout' without a revision" do
@provider.expects(:cvs).with('-d', @source, 'checkout', '-d', File.basename(@path), File.basename(@source))
@provider.create
end
end
context "when a compression level is given" do
before do
@resource.expects(:value).with(:revision).returns(nil).at_least_once
@resource.expects(:value).with(:compression).returns('3').at_least_once
end
it "should just execute 'cvs checkout' without a revision" do
@provider.expects(:cvs).with('-d', @source, '-z', '3', 'checkout', '-d', File.basename(@path), File.basename(@source))
@provider.create
end
end
end
context "when a source is not given" do
before do
@resource.expects(:value).with(:source).returns(nil)
end
it "should execute 'cvs init'" do
@provider.expects(:cvs).with('-d', @path, 'init')
@provider.create
end
end
end
describe 'when destroying' do
it "it should remove the directory" do
@resource.expects(:value).with(:path).returns(@path).at_least_once
FileUtils.expects(:rm_rf).with(@path)
@provider.destroy
end
end
describe "when checking existence" do
before do
@resource.expects(:value).with(:path).returns(@path)
end
context "when a source is provided" do
before do
@resource.expects(:value).with(:source).returns(":pserver:anonymous@example.com:/sources/myproj")
end
it "should check for the CVS directory" do
File.expects(:directory?).with(File.join(@path, 'CVS'))
@provider.exists?
end
end
context "when a source is not provided" do
before do
@resource.expects(:value).with(:source).returns(nil)
end
it "should check for the CVSROOT directory" do
File.expects(:directory?).with(File.join(@path, 'CVSROOT'))
@provider.exists?
end
end
end
describe "when checking the revision property" do
before do
@resource.expects(:value).with(:path).returns(@path).at_least_once
@tag_file = File.join(@path, 'CVS', 'Tag')
end
context "when CVS/Tag exists" do
before do
@tag = 'HEAD'
File.expects(:exist?).with(@tag_file).returns(true)
end
it "should read CVS/Tag" do
File.expects(:read).with(@tag_file).returns("T#{@tag}")
@provider.revision.should == @tag
end
end
context "when CVS/Tag does not exist" do
before do
File.expects(:exist?).with(@tag_file).returns(false)
end
it "assumes MAIN" do
@provider.revision.should == 'MAIN'
end
end
end
describe "when setting the revision property" do
before do
@resource.expects(:value).with(:path).returns(@path).at_least_once
@tag = 'SOMETAG'
end
it "should use 'cvs update -r'" do
Dir.expects(:chdir).with(@path).yields
@provider.expects('cvs').with('update', '-r', @tag, '.')
@provider.revision = @tag
end
end
end
|