benry-cmdapp 0.1.0 → 1.0.0

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.
@@ -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