benry-cmdapp 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,402 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+
5
+ require_relative 'shared'
6
+
7
+
8
+ Oktest.scope do
9
+
10
+
11
+ topic Benry::CmdApp::Registry do
12
+
13
+ def new_registry_with_filter(*categories)
14
+ idx = Benry::CmdApp::Registry.new()
15
+ Benry::CmdApp::REGISTRY.metadata_each do |md|
16
+ idx.metadata_add(md) if md.name.start_with?(*categories)
17
+ end
18
+ return idx
19
+ end
20
+
21
+ before do
22
+ @registry = Benry::CmdApp::Registry.new
23
+ end
24
+
25
+
26
+ topic '#metadata_add()' do
27
+
28
+ spec "[!8bhxu] registers metadata with it's name as key." do
29
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
30
+ ok {@registry.metadata_get("hello")} == nil
31
+ @registry.metadata_add(metadata)
32
+ ok {@registry.metadata_get("hello")} == metadata
33
+ end
34
+
35
+ spec "[!k07kp] returns registered metadata objet." do
36
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
37
+ ok {@registry.metadata_add(metadata)} == metadata
38
+ end
39
+
40
+ end
41
+
42
+
43
+ topic '#metadata_get()' do
44
+
45
+ spec "[!l5m49] returns metadata object corresponding to name." do
46
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
47
+ @registry.metadata_add(metadata)
48
+ ok {@registry.metadata_get("hello")} == metadata
49
+ end
50
+
51
+ spec "[!rztk2] returns nil if metadata not found for the name." do
52
+ ok {@registry.metadata_get("hello")} == nil
53
+ end
54
+
55
+ end
56
+
57
+
58
+ topic '#metadata_del()' do
59
+
60
+ spec "[!69vo7] deletes metadata object corresponding to name." do
61
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
62
+ @registry.metadata_add(metadata)
63
+ ok {@registry.metadata_get("hello")} == metadata
64
+ @registry.metadata_del("hello") # !!!
65
+ ok {@registry.metadata_get("hello")} == nil
66
+ end
67
+
68
+ spec "[!8vg6w] returns deleted metadata object." do
69
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
70
+ @registry.metadata_add(metadata)
71
+ ok {@registry.metadata_del("hello")} == metadata
72
+ end
73
+
74
+ end
75
+
76
+
77
+ topic '#metadata_exist?()' do
78
+
79
+ spec "[!0ck5n] returns true if metadata object registered." do
80
+ metadata = Benry::CmdApp::REGISTRY.metadata_get("hello")
81
+ @registry.metadata_add(metadata)
82
+ ok {@registry.metadata_exist?("hello")} == true
83
+ end
84
+
85
+ spec "[!x7ziz] returns false if metadata object not registered." do
86
+ ok {@registry.metadata_exist?("hello")} == false
87
+ end
88
+
89
+ end
90
+
91
+
92
+ topic '#metadata_each()' do
93
+
94
+ spec "[!3l6r7] returns Enumerator object if block not given." do
95
+ x = Benry::CmdApp::REGISTRY.metadata_each()
96
+ ok {x}.is_a?(Enumerator)
97
+ end
98
+
99
+ spec "[!r8mb3] yields each metadata object if block given." do
100
+ n = 0
101
+ Benry::CmdApp::REGISTRY.metadata_each do |md|
102
+ n += 1
103
+ ok {md}.is_a?(Benry::CmdApp::BaseMetadata)
104
+ end
105
+ ok {n} > 0
106
+ end
107
+
108
+ spec "[!qvc77] ignores hidden metadata if `all: false` passed." do
109
+ found = false
110
+ Benry::CmdApp::REGISTRY.metadata_each(all: false) {|md| found = true if md.hidden? }
111
+ ok {found} == false
112
+ #
113
+ found = false
114
+ Benry::CmdApp::REGISTRY.metadata_each {|md| found = true if md.hidden? }
115
+ ok {found} == true
116
+ end
117
+
118
+ end
119
+
120
+
121
+ topic '#metadata_action2aliases()' do
122
+
123
+ before do
124
+ hello_action = Benry::CmdApp::REGISTRY.metadata_get("hello")
125
+ stage_action = Benry::CmdApp::REGISTRY.metadata_get("git:stage")
126
+ staged_action = Benry::CmdApp::REGISTRY.metadata_get("git:staged")
127
+ unstage_action = Benry::CmdApp::REGISTRY.metadata_get("git:unstage")
128
+ @aliases = [
129
+ Benry::CmdApp::AliasMetadata.new("hi", "hello", []),
130
+ Benry::CmdApp::AliasMetadata.new("chao", "hello", ["-l", "it"]),
131
+ Benry::CmdApp::AliasMetadata.new("clear", "git:unstage", []),
132
+ ]
133
+ @registry = Benry::CmdApp::Registry.new
134
+ reg = @registry
135
+ reg.metadata_add(hello_action)
136
+ reg.metadata_add(stage_action)
137
+ reg.metadata_add(staged_action)
138
+ reg.metadata_add(unstage_action)
139
+ @aliases.each do |md|
140
+ reg.metadata_add(md)
141
+ end
142
+ end
143
+
144
+ spec "[!krry6] returns a Hash object (key: action name, value: alias metadatas)." do
145
+ d = @registry.metadata_action2aliases()
146
+ ok {d}.is_a?(Hash)
147
+ ok {d.keys} == ["hello", "git:unstage"]
148
+ ok {Set.new(d["hello"])} == Set.new([@aliases[0], @aliases[1]])
149
+ ok {d["git:unstage"]} == [@aliases[2]]
150
+ end
151
+
152
+ spec "[!zhcm6] skips actions which has no aliases." do
153
+ d = @registry.metadata_action2aliases()
154
+ ok {d}.is_a?(Hash)
155
+ ok {d.keys} == ["hello", "git:unstage"]
156
+ ok {d.keys}.NOT.include?("git:stage")
157
+ ok {d.keys}.NOT.include?("git:staged")
158
+ end
159
+
160
+ end
161
+
162
+
163
+ topic '#metadata_lookup()' do
164
+
165
+ spec "[!dcs9v] looks up action metadata recursively if alias name specified." do
166
+ Benry::CmdApp.define_alias("ali61", "hello")
167
+ Benry::CmdApp.define_alias!("ali62", "ali61")
168
+ Benry::CmdApp.define_alias!("ali63", "ali62")
169
+ #
170
+ hello_md = Benry::CmdApp::REGISTRY.metadata_get("hello")
171
+ ok {hello_md}.is_a?(Benry::CmdApp::ActionMetadata)
172
+ ok {hello_md.name} == "hello"
173
+ #
174
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("hello")} == [hello_md, []]
175
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali61")} == [hello_md, []]
176
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali62")} == [hello_md, []]
177
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali63")} == [hello_md, []]
178
+ end
179
+
180
+ spec "[!f8fqx] returns action metadata and alias args." do
181
+ Benry::CmdApp.define_alias("ali71", ["hello", "a"])
182
+ Benry::CmdApp.define_alias!("ali72", "ali71")
183
+ Benry::CmdApp.define_alias!("ali73", ["ali72", "b", "c"])
184
+ #
185
+ hello_md = Benry::CmdApp::REGISTRY.metadata_get("hello")
186
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("hello")} == [hello_md, []]
187
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali71")} == [hello_md, ["a"]]
188
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali72")} == [hello_md, ["a"]]
189
+ ok {Benry::CmdApp::REGISTRY.metadata_lookup("ali73")} == [hello_md, ["a", "b", "c"]]
190
+ end
191
+
192
+ end
193
+
194
+
195
+ topic '#prefix_add()' do
196
+
197
+ spec "[!k27in] registers prefix if not registered yet." do
198
+ prefix = "p7885:"
199
+ ok {@registry.category_exist?(prefix)} == false
200
+ @registry.category_add(prefix, nil)
201
+ ok {@registry.category_exist?(prefix)} == true
202
+ ok {@registry.category_get_desc(prefix)} == nil
203
+ end
204
+
205
+ spec "[!xubc8] registers prefix whenever desc is not a nil." do
206
+ prefix = "p8796:"
207
+ @registry.category_add(prefix, "some description")
208
+ ok {@registry.category_exist?(prefix)} == true
209
+ ok {@registry.category_get_desc(prefix)} == "some description"
210
+ #
211
+ @registry.category_add(prefix, "other description")
212
+ ok {@registry.category_get_desc(prefix)} == "other description"
213
+ end
214
+
215
+ end
216
+
217
+
218
+ topic '#prefix_add_via_action()' do
219
+
220
+ spec "[!ztrfj] registers prefix of action." do
221
+ @registry.category_add_via_action("p5671:hello")
222
+ ok {@registry.category_exist?("p5671:")} == true
223
+ ok {@registry.category_get_desc("p5671:")} == nil
224
+ #
225
+ @registry.category_add_via_action("p5671:fo-o:ba_r:baz9:hello2")
226
+ ok {@registry.category_exist?("p5671:fo-o:ba_r:baz9:")} == true
227
+ ok {@registry.category_exist?("p5671:fo-o:ba_r:")} == false
228
+ ok {@registry.category_exist?("p5671:fo-o:")} == false
229
+ end
230
+
231
+ spec "[!31pik] do nothing if prefix already registered." do
232
+ prefix = "p0620:hello"
233
+ @registry.category_add(prefix, "some desc")
234
+ @registry.category_add_via_action(prefix)
235
+ ok {@registry.category_get_desc(prefix)} == "some desc"
236
+ end
237
+
238
+ spec "[!oqq7j] do nothing if action has no prefix." do
239
+ ok {@registry.category_each().count()} == 0
240
+ @registry.category_add_via_action("a4049")
241
+ ok {@registry.category_each().count()} == 0
242
+ end
243
+
244
+ end
245
+
246
+
247
+ topic '#prefix_each()' do
248
+
249
+ spec "[!67r3i] returns Enumerator object if block not given." do
250
+ ok {@registry.category_each()}.is_a?(Enumerator)
251
+ end
252
+
253
+ spec "[!g3d1z] yields block with each prefix and desc." do
254
+ @registry.category_add("p2358:", nil)
255
+ @registry.category_add("p3892:", "some desc")
256
+ d = {}
257
+ @registry.category_each() {|prefix, desc| d[prefix] = desc }
258
+ ok {d} == {"p2358:" => nil, "p3892:" => "some desc"}
259
+ end
260
+
261
+ end
262
+
263
+
264
+ topic '#prefix_exist?()' do
265
+
266
+ spec "[!79cyx] returns true if prefix is already registered." do
267
+ @registry.category_add("p0057:", nil)
268
+ ok {@registry.category_exist?("p0057:")} == true
269
+ end
270
+
271
+ spec "[!jx7fk] returns false if prefix is not registered yet." do
272
+ ok {@registry.category_exist?("p0760:")} == false
273
+ end
274
+
275
+ end
276
+
277
+
278
+ topic '#prefix_get_desc()' do
279
+
280
+ spec "[!d47kq] returns description if prefix is registered." do
281
+ Benry::CmdApp::REGISTRY.category_add("p5679", "bla bla")
282
+ ok {Benry::CmdApp::REGISTRY.category_get_desc("p5679")} == "bla bla"
283
+ end
284
+
285
+ spec "[!otp1b] returns nil if prefix is not registered." do
286
+ ok {Benry::CmdApp::REGISTRY.category_get_desc("p8233")} == nil
287
+ end
288
+
289
+ end
290
+
291
+
292
+ topic '#prefix_count_actions()' do
293
+
294
+ spec "[!8wipx] includes prefix of hidden actions if `all: true` passed." do
295
+ registry = new_registry_with_filter("giit:", "md:")
296
+ ok {registry.category_count_actions(1, all: true) }.key?("md:")
297
+ ok {registry.category_count_actions(1, all: false)}.NOT.key?("md:")
298
+ end
299
+
300
+ spec "[!5n3qj] counts prefix of specified depth." do
301
+ registry = new_registry_with_filter("giit:", "md:")
302
+ expected1 = {"giit:"=>13}
303
+ expected2 = {"giit:branch:"=>2, "giit:"=>0, "giit:commit:"=>1,
304
+ "giit:repo:"=>7,
305
+ "giit:staging:"=>3}
306
+ expected3 = {"giit:branch:"=>2, "giit:"=>0, "giit:commit:"=>1,
307
+ "giit:repo:config:"=>3, "giit:repo:"=>2, "giit:repo:remote:"=>2,
308
+ "giit:staging:"=>3}
309
+ ok {registry.category_count_actions(1)} == expected1
310
+ ok {registry.category_count_actions(2)} == expected2
311
+ ok {registry.category_count_actions(3)} == expected3
312
+ ok {registry.category_count_actions(4)} == expected3
313
+ ok {registry.category_count_actions(5)} == expected3
314
+ end
315
+
316
+ spec "[!r2frb] counts prefix of lesser depth." do
317
+ registry = new_registry_with_filter("giit:", "md:")
318
+ x = registry.category_count_actions(1)
319
+ ok {x}.key?("giit:")
320
+ ok {x}.NOT.key?("giit:branch:")
321
+ ok {x}.NOT.key?("giit:repo:config:")
322
+ x = registry.category_count_actions(2)
323
+ ok {x}.key?("giit:")
324
+ ok {x}.key?("giit:branch:")
325
+ ok {x}.NOT.key?("giit:repo:config:")
326
+ x = registry.category_count_actions(3)
327
+ ok {x}.key?("giit:")
328
+ ok {x}.key?("giit:branch:")
329
+ ok {x}.key?("giit:repo:config:")
330
+ end
331
+
332
+ end
333
+
334
+
335
+ topic '#abbrev_add()' do
336
+
337
+ spec "[!n475k] registers abbrev with prefix." do
338
+ @registry.abbrev_add("g:", "git:")
339
+ ok {@registry.abbrev_exist?("g:")} == true
340
+ ok {@registry.abbrev_get_prefix("g:")} == "git:"
341
+ end
342
+
343
+ end
344
+
345
+
346
+ topic '#abbrev_get_prefix()' do
347
+
348
+ spec "[!h1dvb] returns prefix bound to abbrev." do
349
+ @registry.abbrev_add("g:", "git:")
350
+ ok {@registry.abbrev_get_prefix("g:")} == "git:"
351
+ end
352
+
353
+ end
354
+
355
+
356
+ topic '#abbrev_exist?()' do
357
+
358
+ spec "[!tjbdy] returns true/false if abbrev registered or not." do
359
+ ok {@registry.abbrev_exist?("g:")} == false
360
+ @registry.abbrev_add("g:", "git:")
361
+ ok {@registry.abbrev_exist?("g:")} == true
362
+ end
363
+
364
+ end
365
+
366
+
367
+ topic '#abbrev_each()' do
368
+
369
+ spec "[!2oo4o] yields each abbrev name and prefix." do
370
+ @registry.abbrev_add("g1:", "git:")
371
+ @registry.abbrev_add("g2:", "git:")
372
+ arr = []
373
+ @registry.abbrev_each do |*args|
374
+ arr << args
375
+ end
376
+ ok {arr} == [["g1:", "git:"], ["g2:", "git:"]]
377
+ end
378
+
379
+ end
380
+
381
+
382
+ topic '#abbrev_resolve()' do
383
+
384
+ spec "[!n7zsy] replaces abbrev in action name with prefix." do
385
+ @registry.abbrev_add("g:", "git:")
386
+ ok {@registry.abbrev_resolve("g:stage")} == "git:stage"
387
+ end
388
+
389
+ spec "[!kdi3o] returns nil if abbrev not found in action name." do
390
+ @registry.abbrev_add("g:", "git:")
391
+ ok {@registry.abbrev_resolve("gi:stage")} == nil
392
+ ok {@registry.abbrev_resolve("h:stage")} == nil
393
+ ok {@registry.abbrev_resolve("gitstage")} == nil
394
+ end
395
+
396
+ end
397
+
398
+
399
+ end
400
+
401
+
402
+ end
data/test/run_all.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
 
4
- Dir.glob(File.dirname(__FILE__) + '/*.rb').each do |filename|
5
- #$stderr.puts "\033[0;31m*** debug: filename=#{filename.inspect}\033[0m"
6
- require_relative File.basename(filename)
4
+ Dir.glob(File.dirname(__FILE__) + '/**/*.rb').each do |filename|
5
+ if filename != __FILE__
6
+ require_relative File.basename(filename)
7
+ end
7
8
  end