gitosis_easy_conf 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.rvmrc +1 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +72 -0
- data/Rakefile +62 -0
- data/VERSION +1 -0
- data/examples/Rakefile +179 -0
- data/examples/gitosis.complex.conf +138 -0
- data/examples/gitosis.concise.conf +18 -0
- data/examples/gitosis.readme.conf +122 -0
- data/gitosis_easy_conf.gemspec +187 -0
- data/lib/gitosis_easy_conf/config.rb +26 -0
- data/lib/gitosis_easy_conf/forkers.rb +45 -0
- data/lib/gitosis_easy_conf/groups.rb +69 -0
- data/lib/gitosis_easy_conf/repositories.rb +88 -0
- data/lib/gitosis_easy_conf.rb +60 -0
- data/test/helper.rb +40 -0
- data/test/test_gitosis_config.rb +99 -0
- data/test/test_gitosis_forker.rb +96 -0
- data/test/test_gitosis_groups.rb +100 -0
- data/test/test_gitosis_repositories.rb +371 -0
- metadata +547 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestGitosisForker < Test::Unit::TestCase
|
4
|
+
context "forkers" do
|
5
|
+
should "only take the first argument" do
|
6
|
+
Gitosis.forkers do
|
7
|
+
fubar("one", "two") do
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
assert_equal "one", Gitosis.forkers.fubar
|
13
|
+
assert_equal "one", Gitosis.forkers['fubar']
|
14
|
+
end
|
15
|
+
|
16
|
+
should "raise error for unknown forkers" do
|
17
|
+
Gitosis.forkers do
|
18
|
+
fubar("one", "two") do
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_raises Gitosis::UnknownForker do
|
24
|
+
Gitosis.forkers[:fuabr]
|
25
|
+
end
|
26
|
+
assert_raises Gitosis::UnknownForker do
|
27
|
+
Gitosis.forkers.fuabr
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
should "have shortcut method" do
|
32
|
+
Gitosis.forkers do
|
33
|
+
fubar("one", "two") do
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
assert_raises Gitosis::UnknownForker do
|
39
|
+
Forker["unknonw"]
|
40
|
+
end
|
41
|
+
assert_raises Gitosis::UnknownForker do
|
42
|
+
Gitosis.forkers['unknonw']
|
43
|
+
end
|
44
|
+
assert_raises Gitosis::UnknownForker do
|
45
|
+
Gitosis.forkers.unknonw
|
46
|
+
end
|
47
|
+
|
48
|
+
assert_equal "one", Forker["fubar"]
|
49
|
+
assert_equal "one", Forker[:fubar]
|
50
|
+
end
|
51
|
+
|
52
|
+
should "return all forkers" do
|
53
|
+
Gitosis.forkers do
|
54
|
+
end
|
55
|
+
assert_equal [], Gitosis.forkers.all
|
56
|
+
|
57
|
+
Gitosis.forkers do
|
58
|
+
dev1 "some.public.key"
|
59
|
+
dev2 "some.other.key"
|
60
|
+
dev3 "more.key"
|
61
|
+
end
|
62
|
+
assert_equal [:dev1, :dev2, :dev3], Gitosis.forkers.all
|
63
|
+
assert_equal [:dev1, :dev2, :dev3], Forker[:all]
|
64
|
+
end
|
65
|
+
|
66
|
+
should "complain if using the duplicate pub keys" do
|
67
|
+
assert_raises Gitosis::SamePublicKeyForForkers do
|
68
|
+
Gitosis.forkers do
|
69
|
+
fubar "has.key"
|
70
|
+
fubar2 "has.key"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
assert_raises Gitosis::SamePublicKeyForForkers do
|
74
|
+
Gitosis.forkers do
|
75
|
+
fubar "haskey"
|
76
|
+
fubar2 :haskey
|
77
|
+
end
|
78
|
+
end
|
79
|
+
assert_raises Gitosis::SamePublicKeyForForkers do
|
80
|
+
Gitosis.forkers do
|
81
|
+
fubar "has.key"
|
82
|
+
fubar "has.key"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
should "complain if using the same forker name" do
|
88
|
+
assert_raises Gitosis::ForkerAlreadyDefined do
|
89
|
+
Gitosis.forkers do
|
90
|
+
fubar "has.key"
|
91
|
+
fubar "has.key.2"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestGitosisGroups < Test::Unit::TestCase
|
4
|
+
context "groups" do
|
5
|
+
|
6
|
+
should "avoid self reference" do
|
7
|
+
assert_raises Gitosis::SelfReferencingGroup do
|
8
|
+
Gitosis.roles do
|
9
|
+
fubar 'fubar.bad', :fubar
|
10
|
+
end
|
11
|
+
end
|
12
|
+
assert_raises Gitosis::SelfReferencingGroup do
|
13
|
+
Gitosis.roles do
|
14
|
+
admin :fubar
|
15
|
+
fubar 'fubar.bad', :admin
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_raises Gitosis::SelfReferencingGroup do
|
20
|
+
Gitosis.roles do
|
21
|
+
snafu :admin
|
22
|
+
admin :snafu
|
23
|
+
fubar 'fubar.bad', :admin
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
assert_raises Gitosis::SelfReferencingGroup do
|
28
|
+
Gitosis.roles do
|
29
|
+
snafu :fubar
|
30
|
+
admin :snafu
|
31
|
+
fubar 'fubar.bad', :admin
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'raise an error if symbol is not a group' do
|
37
|
+
assert_raises Gitosis::UnknownGroup do
|
38
|
+
Gitosis.roles do
|
39
|
+
fubar 'fubar.bad', :admins
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'strings are key names and symbols refer to group names' do
|
45
|
+
Gitosis.groups do
|
46
|
+
fubar 'public.key'
|
47
|
+
snafu :fubar
|
48
|
+
luke 'fubar'
|
49
|
+
combined :luke, :snafu, :fubar
|
50
|
+
end
|
51
|
+
|
52
|
+
assert_equal 'public.key', Gitosis.groups[:fubar]
|
53
|
+
assert_equal 'public.key', Gitosis.groups[:snafu]
|
54
|
+
assert_equal 'fubar', Gitosis.groups[:luke]
|
55
|
+
assert_equal 'fubar public.key', Gitosis.groups[:combined]
|
56
|
+
end
|
57
|
+
|
58
|
+
should "anything other than string or symbol causes error" do
|
59
|
+
assert_raises Gitosis::UnknownGroupType do
|
60
|
+
Gitosis.roles do
|
61
|
+
fubar 1234
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
should "blocks are ignored" do
|
67
|
+
Gitosis.roles do
|
68
|
+
fubar "fubar" do |a|
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
assert_equal "fubar", Gitosis.groups.fubar
|
73
|
+
end
|
74
|
+
|
75
|
+
should "be able to use roles" do
|
76
|
+
Gitosis.roles do
|
77
|
+
fubar 'fubar.bad', 'big.bear'
|
78
|
+
end
|
79
|
+
assert_equal 'fubar.bad big.bear', Gitosis.roles[:fubar]
|
80
|
+
assert_equal 'fubar.bad big.bear', Gitosis.roles.fubar
|
81
|
+
end
|
82
|
+
|
83
|
+
should "be denormalized and uniquized" do
|
84
|
+
Gitosis.groups do
|
85
|
+
admins 'key.one', 'key.two', 'shared.key'
|
86
|
+
developers 'dev.one', :admins
|
87
|
+
deployers 'app1.deploy', 'app2.deploy', 'shared.key'
|
88
|
+
shared_grp :admins, :deployers
|
89
|
+
all_developers :admins, :developers
|
90
|
+
everyone :all_developers, :deployers
|
91
|
+
end
|
92
|
+
|
93
|
+
groups = Gitosis.groups
|
94
|
+
assert_equal('key.one key.two shared.key dev.one app1.deploy app2.deploy',
|
95
|
+
groups.everyone)
|
96
|
+
assert_equal 'key.one key.two shared.key app1.deploy app2.deploy', groups.shared_grp
|
97
|
+
assert_raises(Gitosis::UnknownGroup) { groups.unknown_group }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,371 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestGitosisRepositories < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "no filename" do
|
6
|
+
should "work but not write anything to disk" do
|
7
|
+
Gitosis.setup do
|
8
|
+
config do
|
9
|
+
fork_naming_convention do |*args|
|
10
|
+
"[%s+%s]" % args.map{ |a| a.to_s }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
forkers do
|
15
|
+
dev1 "dev.one"
|
16
|
+
dev2 "dev.two"
|
17
|
+
end
|
18
|
+
|
19
|
+
roles do
|
20
|
+
admin "dev.three"
|
21
|
+
end
|
22
|
+
|
23
|
+
repositories do
|
24
|
+
test_one :writable => Forker[:dev1], :forks => :dev2, :readable => Forker[:dev2]
|
25
|
+
test_two :writable => :admin, :readable => Forker[:dev1]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_equal({"gitosis"=>{},
|
30
|
+
"group test_one.writable"=>{
|
31
|
+
"members"=>"dev.one",
|
32
|
+
"writable"=>"test_one"},
|
33
|
+
"group test_one.readonly"=>{
|
34
|
+
"members"=>"dev.two",
|
35
|
+
"readonly"=>"test_one"},
|
36
|
+
"group fork.test_one.dev2.writable"=>{
|
37
|
+
"members"=>"dev.two",
|
38
|
+
"writable"=>"[test_one+dev2]"},
|
39
|
+
"group fork.test_one.dev2.readonly"=>{
|
40
|
+
"members"=>"dev.two",
|
41
|
+
"readonly"=>"[test_one+dev2]"},
|
42
|
+
"group test_two.writable"=>{
|
43
|
+
"members"=>"dev.three",
|
44
|
+
"writable"=>"test_two"},
|
45
|
+
"group test_two.readonly"=>{
|
46
|
+
"members"=>"dev.one",
|
47
|
+
"readonly"=>"test_two"}},
|
48
|
+
Gitosis.repositories.instance_variable_get("@conffile"))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "repository exception handling" do
|
53
|
+
setup do
|
54
|
+
# write call does not happen
|
55
|
+
@results = {}
|
56
|
+
mock(File).exists?("fubar") { true }
|
57
|
+
mock(@results).clone { nil }
|
58
|
+
mock(IniFile).new("fubar") { @results }
|
59
|
+
end
|
60
|
+
|
61
|
+
should 'not allow unknown groups' do
|
62
|
+
Gitosis.config do
|
63
|
+
filename "fubar"
|
64
|
+
end
|
65
|
+
Gitosis.roles do
|
66
|
+
developers Forker[:dev1]
|
67
|
+
end
|
68
|
+
|
69
|
+
assert_raises Gitosis::UnknownGroup do
|
70
|
+
Gitosis.repositories do
|
71
|
+
gitosis_admin(:writable => :developers1)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
should "not allow unknown forkers - string" do
|
77
|
+
Gitosis.config do
|
78
|
+
filename "fubar"
|
79
|
+
end
|
80
|
+
Gitosis.forkers do
|
81
|
+
dev1 "dev.one.key"
|
82
|
+
dev2 "dev.two.key"
|
83
|
+
end
|
84
|
+
Gitosis.roles do
|
85
|
+
developers Forker[:dev1]
|
86
|
+
end
|
87
|
+
assert_raises Gitosis::UnknownForker do
|
88
|
+
Gitosis.repositories do
|
89
|
+
gitosis_admin(:writable => :developers,
|
90
|
+
:forks => 'dev3')
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
should "not allow unknown forkers - symbol" do
|
96
|
+
Gitosis.config do
|
97
|
+
filename "fubar"
|
98
|
+
end
|
99
|
+
Gitosis.forkers do
|
100
|
+
dev1 "dev.one.key"
|
101
|
+
dev2 "dev.two.key"
|
102
|
+
end
|
103
|
+
Gitosis.roles do
|
104
|
+
developers Forker[:dev1]
|
105
|
+
end
|
106
|
+
assert_raises Gitosis::UnknownForker do
|
107
|
+
Gitosis.repositories do
|
108
|
+
gitosis_admin(:writable => :developers,
|
109
|
+
:forks => :dev3)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "repositories" do
|
116
|
+
setup do
|
117
|
+
@results = {}
|
118
|
+
mock(File).exists?("fubar") { true }
|
119
|
+
mock(@results).write
|
120
|
+
mock(@results).clone { nil }
|
121
|
+
mock(IniFile).new("fubar") { @results }
|
122
|
+
# avoid fork naming convention leaking across tests.
|
123
|
+
Gitosis.config() do
|
124
|
+
fork_naming_convention nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
should "have a concise form" do
|
129
|
+
Gitosis.setup("fubar") do
|
130
|
+
config do
|
131
|
+
fork_naming_convention do |*args|
|
132
|
+
"[%s+%s]" % args.map{ |a| a.to_s }
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
forkers do
|
137
|
+
dev1 "dev.one"
|
138
|
+
dev2 "dev.two"
|
139
|
+
end
|
140
|
+
|
141
|
+
roles do
|
142
|
+
admin "dev.three"
|
143
|
+
end
|
144
|
+
|
145
|
+
repositories do
|
146
|
+
test_one :writable => Forker[:dev1], :forks => :dev2, :readable => Forker[:dev2]
|
147
|
+
test_two :writable => :admin, :readable => Forker[:dev1]
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
assert_config({ "group fork.test_one.dev2.readonly" => {
|
152
|
+
"members" => "dev.two",
|
153
|
+
"readonly" => "[test_one+dev2]"
|
154
|
+
},
|
155
|
+
"group fork.test_one.dev2.writable" => {
|
156
|
+
"members" => "dev.two",
|
157
|
+
"writable" => "[test_one+dev2]"
|
158
|
+
},
|
159
|
+
"group test_one.readonly" => {
|
160
|
+
"members" => "dev.two",
|
161
|
+
"readonly" => "test_one"
|
162
|
+
},
|
163
|
+
"group test_one.writable" => {
|
164
|
+
"members" => "dev.one",
|
165
|
+
"writable" => "test_one"
|
166
|
+
},
|
167
|
+
"group test_two.readonly" => {
|
168
|
+
"members" => "dev.one",
|
169
|
+
"readonly" => "test_two"
|
170
|
+
},
|
171
|
+
"group test_two.writable" => {
|
172
|
+
"members" => "dev.three",
|
173
|
+
"writable" => "test_two"
|
174
|
+
}
|
175
|
+
}, "concise setup")
|
176
|
+
end
|
177
|
+
|
178
|
+
should "handle the simplest case" do
|
179
|
+
Gitosis.config do
|
180
|
+
filename "fubar"
|
181
|
+
end
|
182
|
+
Gitosis.repositories do
|
183
|
+
with_base_configuration({}) do
|
184
|
+
empty_repo
|
185
|
+
another_empty_repo
|
186
|
+
end
|
187
|
+
end.write
|
188
|
+
assert_config({}, "simplest case")
|
189
|
+
end
|
190
|
+
|
191
|
+
should "provide a base_configuration stanza" do
|
192
|
+
Gitosis.config do
|
193
|
+
filename "fubar"
|
194
|
+
end
|
195
|
+
Gitosis.repositories do
|
196
|
+
with_base_configuration({ :writable => ['key.one', 'key.two'],
|
197
|
+
:readable => 'key.three' }) do
|
198
|
+
gitosis_admin :readable => 'dev.four'
|
199
|
+
another_repo :writable => 'another.developer'
|
200
|
+
a_third_repo :name => 'fubar-a-third-repo'
|
201
|
+
a_fourth_repo
|
202
|
+
end
|
203
|
+
no_base_config_repo :writable => 'me.you.them'
|
204
|
+
end.write
|
205
|
+
|
206
|
+
assert_config({ "group another_repo.readonly" => {
|
207
|
+
"members" => "key.three",
|
208
|
+
"readonly" => "another_repo"
|
209
|
+
},
|
210
|
+
"group another_repo.writable" => {
|
211
|
+
"members" => "key.one key.two another.developer",
|
212
|
+
"writable" => "another_repo"
|
213
|
+
},
|
214
|
+
"group fubar-a-third-repo.readonly" => {
|
215
|
+
"members" => "key.three",
|
216
|
+
"readonly" => "fubar-a-third-repo"
|
217
|
+
},
|
218
|
+
"group fubar-a-third-repo.writable" => {
|
219
|
+
"members" => "key.one key.two",
|
220
|
+
"writable" => "fubar-a-third-repo"
|
221
|
+
},
|
222
|
+
"group gitosis_admin.readonly" => {
|
223
|
+
"members" => "key.three dev.four",
|
224
|
+
"readonly" => "gitosis_admin"
|
225
|
+
},
|
226
|
+
"group gitosis_admin.writable" => {
|
227
|
+
"members" => "key.one key.two",
|
228
|
+
"writable" => "gitosis_admin"
|
229
|
+
},
|
230
|
+
"group no_base_config_repo.writable" => {
|
231
|
+
"members" => "me.you.them",
|
232
|
+
"writable" => "no_base_config_repo"
|
233
|
+
},
|
234
|
+
"group a_fourth_repo.readonly" => {
|
235
|
+
"members" => "key.three",
|
236
|
+
"readonly" => "a_fourth_repo"
|
237
|
+
},
|
238
|
+
"group a_fourth_repo.writable" => {
|
239
|
+
"members" => "key.one key.two",
|
240
|
+
"writable" => "a_fourth_repo"
|
241
|
+
},
|
242
|
+
},"with base config")
|
243
|
+
end
|
244
|
+
|
245
|
+
should "allow just repositories definition" do
|
246
|
+
Gitosis.config do
|
247
|
+
filename "fubar"
|
248
|
+
end
|
249
|
+
Gitosis.repositories do
|
250
|
+
gitosis_admin(:writable => ['key.one', 'key.two'],
|
251
|
+
:readable => 'key.three')
|
252
|
+
end.write
|
253
|
+
|
254
|
+
assert_config({"group gitosis_admin.writable" => {
|
255
|
+
"members" => "key.one key.two",
|
256
|
+
"writable" => "gitosis_admin"
|
257
|
+
},
|
258
|
+
"group gitosis_admin.readonly" => {
|
259
|
+
"members" => "key.three",
|
260
|
+
"readonly" => "gitosis_admin"
|
261
|
+
},
|
262
|
+
},"just repositories defined")
|
263
|
+
end
|
264
|
+
|
265
|
+
should "allow string forkers and string developers that aren't a group/role" do
|
266
|
+
Gitosis.config do
|
267
|
+
filename "fubar"
|
268
|
+
end
|
269
|
+
Gitosis.forkers do
|
270
|
+
dev1 "dev.one.key"
|
271
|
+
dev2 "dev.two.key"
|
272
|
+
end
|
273
|
+
Gitosis.roles do
|
274
|
+
developers Forker[:dev1]
|
275
|
+
end
|
276
|
+
Gitosis.repositories do
|
277
|
+
gitosis_admin(:writable => [:developers, 'key.specific'],
|
278
|
+
:forks => ['dev1', :dev2])
|
279
|
+
end.write
|
280
|
+
|
281
|
+
assert_config({"group gitosis_admin.writable" => {
|
282
|
+
"members" => "dev.one.key key.specific",
|
283
|
+
"writable" => "gitosis_admin"
|
284
|
+
},
|
285
|
+
"group fork.gitosis_admin.dev1.writable" => {
|
286
|
+
"members" => "dev.one.key",
|
287
|
+
"writable" => "dev1_gitosis_admin"
|
288
|
+
},
|
289
|
+
"group fork.gitosis_admin.dev2.writable" => {
|
290
|
+
"members" => "dev.two.key",
|
291
|
+
"writable" => "dev2_gitosis_admin"
|
292
|
+
},
|
293
|
+
},"string roles + forks")
|
294
|
+
end
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
should "forking and naming convention" do
|
299
|
+
Gitosis.config do
|
300
|
+
filename "fubar"
|
301
|
+
fork_naming_convention do |*args|
|
302
|
+
"[%s]=={%s}" % args.map { |a| a.to_s}
|
303
|
+
end
|
304
|
+
end
|
305
|
+
Gitosis.forkers do
|
306
|
+
dev1 "dev.one.key"
|
307
|
+
dev2 "dev.two.key"
|
308
|
+
end
|
309
|
+
Gitosis.roles do
|
310
|
+
developers Forker[:dev1]
|
311
|
+
end
|
312
|
+
Gitosis.repositories do
|
313
|
+
gitosis_admin(:writable => [:developers,'dev.three.key'],
|
314
|
+
:name => "gitosis-admin",
|
315
|
+
:forks => :dev2)
|
316
|
+
end.write
|
317
|
+
|
318
|
+
assert_config({"group gitosis-admin.writable" => {
|
319
|
+
"members" => "dev.one.key dev.three.key",
|
320
|
+
"writable" => "gitosis-admin"
|
321
|
+
},
|
322
|
+
"group fork.gitosis-admin.dev2.writable" => {
|
323
|
+
"members" => "dev.two.key",
|
324
|
+
"writable" => "[gitosis-admin]=={dev2}"
|
325
|
+
},
|
326
|
+
},"forking and name convention")
|
327
|
+
end
|
328
|
+
|
329
|
+
should "repo_naming" do
|
330
|
+
Gitosis.config do
|
331
|
+
filename "fubar"
|
332
|
+
end
|
333
|
+
Gitosis.forkers do
|
334
|
+
dev1 "dev.one.key"
|
335
|
+
end
|
336
|
+
Gitosis.roles do
|
337
|
+
developers Forker[:dev1]
|
338
|
+
end
|
339
|
+
Gitosis.repositories do
|
340
|
+
gitosis_admin :writable => :developers, :name => "gitosis-admin"
|
341
|
+
end.write
|
342
|
+
|
343
|
+
assert_config({"group gitosis-admin.writable" => {
|
344
|
+
"members" => "dev.one.key",
|
345
|
+
"writable" => "gitosis-admin"
|
346
|
+
}
|
347
|
+
},"handle repository naming")
|
348
|
+
end
|
349
|
+
|
350
|
+
should "handle simple case" do
|
351
|
+
Gitosis.config do
|
352
|
+
filename "fubar"
|
353
|
+
end
|
354
|
+
Gitosis.forkers do
|
355
|
+
dev1 "dev.one.key"
|
356
|
+
end
|
357
|
+
Gitosis.roles do
|
358
|
+
developers Forker[:dev1]
|
359
|
+
end
|
360
|
+
Gitosis.repositories do
|
361
|
+
fritz :writable => :developers
|
362
|
+
end.write
|
363
|
+
|
364
|
+
assert_config({"group fritz.writable" => {
|
365
|
+
"members" => "dev.one.key",
|
366
|
+
"writable" => "fritz"
|
367
|
+
}
|
368
|
+
},"handle simple case")
|
369
|
+
end
|
370
|
+
end
|
371
|
+
end
|