stickyflag 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/TODO.md +2 -1
  2. data/lib/stickyflag/version.rb +1 -1
  3. data/stickyflag.gemspec +5 -4
  4. metadata +8 -116
  5. data/.gitignore +0 -7
  6. data/.rspec +0 -4
  7. data/.simplecov +0 -9
  8. data/.travis.yml +0 -13
  9. data/features/clear.feature +0 -14
  10. data/features/clear_quietly.feature +0 -23
  11. data/features/configuration.feature +0 -14
  12. data/features/get.feature +0 -14
  13. data/features/get_quietly.feature +0 -23
  14. data/features/set.feature +0 -14
  15. data/features/set_quietly.feature +0 -22
  16. data/features/step_definitions/configuration_steps.rb +0 -31
  17. data/features/step_definitions/database_steps.rb +0 -41
  18. data/features/step_definitions/pending_steps.rb +0 -5
  19. data/features/step_definitions/tag_steps.rb +0 -62
  20. data/features/support/cukegem.rb +0 -82
  21. data/features/support/env.rb +0 -37
  22. data/features/tags.feature +0 -18
  23. data/features/unset.feature +0 -14
  24. data/features/unset_quietly.feature +0 -23
  25. data/spec/spec_helper.rb +0 -22
  26. data/spec/stickyflag/configuration_spec.rb +0 -132
  27. data/spec/stickyflag/database_spec.rb +0 -331
  28. data/spec/stickyflag/external_cmds_spec.rb +0 -175
  29. data/spec/stickyflag/patches/tempfile_encoding_spec.rb +0 -26
  30. data/spec/stickyflag/patches/tmpnam_spec.rb +0 -35
  31. data/spec/stickyflag/paths_spec.rb +0 -29
  32. data/spec/stickyflag/tag_factory_spec.rb +0 -126
  33. data/spec/stickyflag/tags/c_spec.rb +0 -14
  34. data/spec/stickyflag/tags/mkv_spec.rb +0 -54
  35. data/spec/stickyflag/tags/mmd_spec.rb +0 -40
  36. data/spec/stickyflag/tags/pdf_spec.rb +0 -39
  37. data/spec/stickyflag/tags/png_spec.rb +0 -6
  38. data/spec/stickyflag/tags/tex_spec.rb +0 -6
  39. data/spec/stickyflag_spec.rb +0 -482
  40. data/spec/support/examples.rb +0 -32
  41. data/spec/support/examples/c_all_comments.c +0 -3
  42. data/spec/support/examples/c_no_tags.c +0 -5
  43. data/spec/support/examples/c_with_tag.c +0 -6
  44. data/spec/support/examples/mkv_no_tags.mkv +0 -0
  45. data/spec/support/examples/mkv_with_tag.mkv +0 -0
  46. data/spec/support/examples/mmd_all_meta.mmd +0 -6
  47. data/spec/support/examples/mmd_crazy_keys.mmd +0 -8
  48. data/spec/support/examples/mmd_crazy_tags.mmd +0 -9
  49. data/spec/support/examples/mmd_no_tags.mmd +0 -1
  50. data/spec/support/examples/mmd_with_tag.mmd +0 -3
  51. data/spec/support/examples/pdf_no_tags.pdf +0 -0
  52. data/spec/support/examples/pdf_with_tag.pdf +0 -0
  53. data/spec/support/examples/png_no_tags.png +0 -0
  54. data/spec/support/examples/png_with_tag.png +0 -0
  55. data/spec/support/examples/tex_no_tags.tex +0 -10
  56. data/spec/support/examples/tex_with_tag.tex +0 -11
  57. data/spec/support/examples/untaggable.txt +0 -0
  58. data/spec/support/run_with_args.rb +0 -36
  59. data/spec/support/silence_stream.rb +0 -12
  60. data/spec/support/tag_handler_behavior.rb +0 -125
@@ -1,40 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'stickyflag/tags/mmd'
3
-
4
- describe StickyFlag::Tags::MMD do
5
- it_behaves_like 'a tag handler'
6
-
7
- it 'handles multiline metadata documents' do
8
- StickyFlag::Tags::MMD.get(example_path('mmd_crazy_keys.mmd')).should include('test')
9
- end
10
-
11
- it 'handles multiline tag documents' do
12
- StickyFlag::Tags::MMD.get(example_path('mmd_crazy_tags.mmd')).should include('sdfg')
13
- end
14
-
15
- it 'handles all-metadata documents' do
16
- StickyFlag::Tags::MMD.get(example_path('mmd_all_meta.mmd')).should be_empty
17
- end
18
-
19
- it 'can edit multiline metadata documents' do
20
- path = copy_example('mmd_crazy_keys.mmd')
21
-
22
- StickyFlag::Tags::MMD.set(path, 'test2')
23
- StickyFlag::Tags::MMD.get(path).should include('test2')
24
-
25
- File.open(path, 'r:UTF-8').each_line.to_a.should include("Tags: test, test2 \n")
26
-
27
- File.delete path
28
- end
29
-
30
- it 'can edit multiline tag documents' do
31
- path = copy_example('mmd_crazy_tags.mmd')
32
-
33
- StickyFlag::Tags::MMD.set(path, 'test2')
34
- StickyFlag::Tags::MMD.get(path).should include('test2')
35
-
36
- File.open(path, 'r:UTF-8').each_line.to_a.should include("Tags: asdf, sdfg, dfgh, fghj, qwer, test2 \n")
37
-
38
- File.delete path
39
- end
40
- end
@@ -1,39 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'stickyflag/tags/pdf'
3
- require 'stickyflag/paths'
4
- require 'stickyflag/configuration'
5
- require 'stickyflag/external_cmds'
6
-
7
- class GetConfiguration
8
- include StickyFlag::Paths
9
- include StickyFlag::Configuration
10
- include StickyFlag::ExternalCmds
11
- end
12
-
13
- describe StickyFlag::Tags::PDF do
14
- it_behaves_like 'a tag handler' do
15
- let(:params) {
16
- config = GetConfiguration.new
17
- config.stub(:load_config!) { }
18
- config.stub(:save_config!) { }
19
-
20
- config.find_external_cmds
21
-
22
- [ config.get_config(:pdftk_path) ]
23
- }
24
- end
25
-
26
- context 'with a bad pdftk path' do
27
- it 'raises errors for everything' do
28
- expect { StickyFlag::Tags::PDF.get(example_path("pdf_with_tag.pdf"), '/wut/bad') }.to raise_error(Thor::Error)
29
- expect { StickyFlag::Tags::PDF.clear(example_path("pdf_with_tag.pdf"), '/wut/bad') }.to raise_error(Thor::Error)
30
-
31
- # If get doesn't succeed, we won't get all the way into set or unset
32
- # with the bad pdftk path.
33
- StickyFlag::Tags::PDF.stub(:get) { [ 'test' ] }
34
- expect { StickyFlag::Tags::PDF.set(example_path("pdf_with_tag.pdf"), 'test2', '/wut/bad') }.to raise_error(Thor::Error)
35
- expect { StickyFlag::Tags::PDF.unset(example_path("pdf_with_tag.pdf"), 'test', '/wut/bad') }.to raise_error(Thor::Error)
36
- StickyFlag::Tags::PDF.unstub(:get)
37
- end
38
- end
39
- end
@@ -1,6 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'stickyflag/tags/png'
3
-
4
- describe StickyFlag::Tags::PNG do
5
- it_behaves_like 'a tag handler'
6
- end
@@ -1,6 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'stickyflag/tags/tex'
3
-
4
- describe StickyFlag::Tags::TeX do
5
- it_behaves_like 'a tag handler'
6
- end
@@ -1,482 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'thor'
3
- require 'stickyflag'
4
-
5
- describe 'StickyFlag' do
6
- describe '#config' do
7
- context 'without any further parameters' do
8
- it 'prints out the configuration' do
9
- run_with_args('config') do |sf|
10
- sf.should_receive(:dump_config)
11
- end
12
- end
13
- end
14
-
15
- context 'with --reset' do
16
- it 'resets the configuration' do
17
- run_with_args('config', '--reset') do |sf|
18
- sf.should_receive(:reset_config!)
19
- end
20
- end
21
- end
22
-
23
- context 'with --list' do
24
- it 'prints out the configuration' do
25
- run_with_args('config', '--list') do |sf|
26
- sf.should_receive(:dump_config)
27
- end
28
- end
29
-
30
- it 'prints out the configuration with --quiet' do
31
- run_with_args('config', '--list', '--quiet') do |sf|
32
- sf.should_receive(:dump_config)
33
- end
34
- end
35
- end
36
-
37
- context 'with a key but no value' do
38
- it 'prints the value for that configuration item' do
39
- run_with_args('config', '--key', 'root') do |sf|
40
- sf.set_config :root, "/usr"
41
- sf.should_receive(:say).with("root: '/usr'")
42
- end
43
- end
44
- end
45
-
46
- context 'with a value but no key' do
47
- it 'raises an error' do
48
- expect {
49
- run_with_args('config', 'asdf')
50
- }.to raise_error
51
- end
52
- end
53
-
54
- context 'with a key and a value' do
55
- it 'sets the configuration value' do
56
- run_with_args('config', '--key', 'root', '/usr') do |sf|
57
- sf.set_config :root, ''
58
- sf.should_receive(:set_config).with('root', '/usr')
59
- end
60
- end
61
-
62
- it 'prints the new value' do
63
- run_with_args('config', '--key', 'root', '/usr') do |sf|
64
- sf.set_config :root, ''
65
- sf.should_receive(:say).with("'root' set to '/usr'")
66
- end
67
- end
68
-
69
- it "doesn't print out if we're given --quiet" do
70
- run_with_args('config', '--key', 'root', '/usr', '--quiet') do |sf|
71
- sf.set_config :root, ''
72
- sf.should_not_receive(:say)
73
- end
74
- end
75
- end
76
- end
77
-
78
- describe '#get' do
79
- context 'with no arguments' do
80
- it 'raises an error' do
81
- expect {
82
- run_with_args('get')
83
- }.to raise_error
84
- end
85
- end
86
-
87
- context 'with a missing file' do
88
- it 'prints an error message' do
89
- run_with_args('get', 'bad.pdf') do |sf|
90
- sf.should_receive(:say_status).with(:error, /bad\.pdf/, kind_of(Symbol))
91
- end
92
- end
93
-
94
- it 'does not print an error message with --quiet' do
95
- run_with_args('get', 'bad.pdf', '--quiet') do |sf|
96
- sf.should_not_receive(:say)
97
- sf.should_not_receive(:say_status)
98
- end
99
- end
100
-
101
- it 'does not print an error message with --force' do
102
- run_with_args('get', 'bad.pdf', '--force') do |sf|
103
- sf.should_not_receive(:say)
104
- sf.should_not_receive(:say_status)
105
- end
106
- end
107
- end
108
-
109
- context 'with a file without tags' do
110
- it 'prints a no-tags message' do
111
- run_with_args('get', example_path('c_no_tags.c')) do |sf|
112
- sf.should_receive(:say).with(/.*c_no_tags.c: no tags/)
113
- end
114
- end
115
-
116
- it 'does not print a no-tags message with --quiet' do
117
- run_with_args('get', example_path('c_no_tags.c'), '--quiet') do |sf|
118
- sf.should_not_receive(:say)
119
- sf.should_not_receive(:say_status)
120
- end
121
- end
122
-
123
- it 'does not print a no-tags message with --force' do
124
- run_with_args('get', example_path('c_no_tags.c'), '--force') do |sf|
125
- sf.should_not_receive(:say)
126
- sf.should_not_receive(:say_status)
127
- end
128
- end
129
- end
130
-
131
- context 'with a file with tags' do
132
- it 'prints the tags' do
133
- run_with_args('get', example_path('mmd_crazy_tags.mmd')) do |sf|
134
- sf.should_receive(:say).with(/ asdf, /)
135
- end
136
- end
137
-
138
- it 'prints the tags with --quiet' do
139
- run_with_args('get', example_path('mmd_crazy_tags.mmd'), '--quiet') do |sf|
140
- sf.should_receive(:say).with(/ asdf, /)
141
- end
142
- end
143
-
144
- it 'prints the tags with --force' do
145
- run_with_args('get', example_path('mmd_crazy_tags.mmd'), '--force') do |sf|
146
- sf.should_receive(:say).with(/ asdf, /)
147
- end
148
- end
149
- end
150
-
151
- context 'with multiple files with tags' do
152
- it 'prints all the files' do
153
- run_with_args('get', example_path('mmd_crazy_tags.mmd'), example_path('c_with_tag.c')) do |sf|
154
- sf.should_receive(:say).with(/mmd_crazy_tags\.mmd/)
155
- sf.should_receive(:say).with(/c_with_tag\.c/)
156
- end
157
- end
158
- end
159
- end
160
-
161
- describe '#set' do
162
- context 'with no parameters' do
163
- it 'raises an error' do
164
- expect {
165
- run_with_args('set')
166
- }.to raise_error
167
- end
168
- end
169
-
170
- context 'with just a file' do
171
- it 'raises an error' do
172
- expect {
173
- run_with_args('set', 'bad.pdf')
174
- }.to raise_error
175
- end
176
- end
177
-
178
- context 'with a good file and an invalid tag' do
179
- it 'raises an error' do
180
- expect {
181
- run_with_args('set', __FILE__, 'asdf,asdf')
182
- }.to raise_error
183
- end
184
-
185
- it 'also raises on blank tags' do
186
- expect {
187
- run_with_args('set', __FILE__, '')
188
- }.to raise_error
189
- end
190
- end
191
-
192
- context 'with a missing file and a good tag' do
193
- it 'prints an error message' do
194
- run_with_args('set', 'bad.pdf', 'asdf') do |sf|
195
- sf.should_receive(:say_status).with(:error, /bad\.pdf/, :red)
196
- end
197
- end
198
-
199
- it 'does not print an error message with --quiet' do
200
- run_with_args('set', 'bad.pdf', 'asdf', '--quiet') do |sf|
201
- sf.should_not_receive(:say)
202
- sf.should_not_receive(:say_status)
203
- end
204
- end
205
- end
206
-
207
- context 'with a good file and a good tag' do
208
- before(:each) do
209
- @path = copy_example('c_with_tag.c')
210
- end
211
- after(:each) do
212
- File.unlink(@path)
213
- end
214
-
215
- it 'sets the tags' do
216
- run_with_args('set', @path, 'test2')
217
- run_with_args('get', @path) do |sf|
218
- sf.should_receive(:say).with(/ test2/)
219
- end
220
- end
221
-
222
- it 'prints all the tags' do
223
- run_with_args('set', @path, 'test2') do |sf|
224
- sf.should_receive(:say_status).with(:success, /: test, test2/, :green)
225
- end
226
- end
227
-
228
- it 'prints nothing with --quiet' do
229
- run_with_args('set', @path, 'test2', '--quiet') do |sf|
230
- sf.should_not_receive(:say)
231
- sf.should_not_receive(:say_status)
232
- end
233
- end
234
- end
235
- end
236
-
237
- describe '#unset' do
238
- context 'with no parameters' do
239
- it 'raises an error' do
240
- expect {
241
- run_with_args('unset')
242
- }.to raise_error
243
- end
244
- end
245
-
246
- context 'with just a file' do
247
- it 'raises an error' do
248
- expect {
249
- run_with_args('unset', 'bad.pdf')
250
- }.to raise_error
251
- end
252
- end
253
-
254
- context 'with a good file and an invalid tag' do
255
- it 'raises an error' do
256
- expect {
257
- run_with_args('unset', __FILE__, 'asdf,asdf')
258
- }.to raise_error
259
- end
260
- end
261
-
262
- context 'with a missing file and a good tag' do
263
- it 'prints an error message' do
264
- run_with_args('unset', 'bad.pdf', 'asdf') do |sf|
265
- sf.should_receive(:say_status).with(:error, /bad\.pdf/, :red)
266
- end
267
- end
268
-
269
- it 'does not print an error message with --quiet' do
270
- run_with_args('unset', 'bad.pdf', 'asdf', '--quiet') do |sf|
271
- sf.should_not_receive(:say)
272
- sf.should_not_receive(:say_status)
273
- end
274
- end
275
- end
276
-
277
- context 'with a good file and a good tag' do
278
- before(:each) do
279
- @path = copy_example('c_with_tag.c')
280
- end
281
- after(:each) do
282
- File.unlink(@path)
283
- end
284
-
285
- it 'sets the tags' do
286
- run_with_args('unset', @path, 'test')
287
- run_with_args('get', @path) do |sf|
288
- sf.should_receive(:say).with(/ no tags/)
289
- end
290
- end
291
-
292
- it 'prints no tags' do
293
- run_with_args('unset', @path, 'test') do |sf|
294
- sf.should_receive(:say_status).with(:success, /: no tags/, :green)
295
- end
296
- end
297
-
298
- it 'prints nothing with --quiet' do
299
- run_with_args('unset', @path, 'test', '--quiet') do |sf|
300
- sf.should_not_receive(:say)
301
- sf.should_not_receive(:say_status)
302
- end
303
- end
304
- end
305
-
306
- context 'with a file with multiple tags' do
307
- before(:each) do
308
- @path = copy_example('mmd_crazy_tags.mmd')
309
- end
310
- after(:each) do
311
- File.unlink(@path)
312
- end
313
-
314
- it 'prints the remaining tags' do
315
- run_with_args('unset', @path, 'asdf') do |sf|
316
- sf.should_receive(:say_status).with(:success, /: sdfg/, :green)
317
- end
318
- end
319
- end
320
- end
321
-
322
- describe '#clear' do
323
- context 'with no parameters' do
324
- it 'raises an error' do
325
- expect {
326
- run_with_args('clear')
327
- }.to raise_error
328
- end
329
- end
330
-
331
- context 'with a missing file' do
332
- it 'prints an error message' do
333
- run_with_args('clear', 'bad.pdf') do |sf|
334
- sf.should_receive(:say_status).with(:error, /bad\.pdf/, :red)
335
- end
336
- end
337
-
338
- it 'does not print an error message with --quiet' do
339
- run_with_args('clear', 'bad.pdf', '--quiet') do |sf|
340
- sf.should_not_receive(:say)
341
- sf.should_not_receive(:say_status)
342
- end
343
- end
344
-
345
- it 'does not print an error message with --force' do
346
- run_with_args('clear', 'bad.pdf', '--force') do |sf|
347
- sf.should_not_receive(:say)
348
- sf.should_not_receive(:say_status)
349
- end
350
- end
351
- end
352
-
353
- context 'with a good file' do
354
- before(:each) do
355
- @path = copy_example('c_with_tag.c')
356
- end
357
- after(:each) do
358
- File.unlink(@path)
359
- end
360
-
361
- it 'clears the tags' do
362
- run_with_args('clear', @path)
363
- run_with_args('get', @path) do |sf|
364
- sf.should_receive(:say).with(/ no tags/)
365
- end
366
- end
367
-
368
- it 'prints a success message' do
369
- run_with_args('clear', @path) do |sf|
370
- sf.should_receive(:say_status).with(:success, /Tags cleared for /, :green)
371
- end
372
- end
373
-
374
- it 'prints nothing with --quiet' do
375
- run_with_args('unset', @path, 'test', '--quiet') do |sf|
376
- sf.should_not_receive(:say)
377
- sf.should_not_receive(:say_status)
378
- end
379
- end
380
- end
381
- end
382
-
383
- describe '#update' do
384
- it 'updates in the current directory by default' do
385
- run_with_args('update') do |sf|
386
- sf.set_config(:root, '')
387
- sf.should_receive(:update_database_from_files).with('.')
388
- end
389
- end
390
-
391
- it 'updates from the configured root dir' do
392
- run_with_args('update') do |sf|
393
- sf.set_config(:root, '/usr/')
394
- sf.should_receive(:update_database_from_files).with('/usr/')
395
- end
396
- end
397
- end
398
-
399
- describe '#tags' do
400
- context 'with --quiet' do
401
- it 'just prints all the tags, with no padding' do
402
- run_with_args('tags', '--quiet') do |sf|
403
- sf.update_database_from_files example_root
404
- sf.should_receive(:say).with('asdf').once
405
- sf.should_receive(:say).with(kind_of(String)).any_number_of_times
406
- end
407
- end
408
- end
409
-
410
- context 'without --quiet' do
411
- it 'prints an intro message and padded tags' do
412
- run_with_args('tags') do |sf|
413
- sf.update_database_from_files example_root
414
- sf.should_receive(:say).with('Tags currently in use:').once
415
- sf.should_receive(:say).with(/ ?test/).once
416
- sf.should_receive(:say).with(kind_of(String)).any_number_of_times
417
- end
418
- end
419
- end
420
- end
421
-
422
- describe '#find' do
423
- context 'with no tags' do
424
- it 'raises an error' do
425
- expect {
426
- run_with_args('find')
427
- }.to raise_error
428
- end
429
- end
430
-
431
- context 'with an invalid tag' do
432
- it 'raises an error' do
433
- expect {
434
- run_with_args('find', 'asdf,wut')
435
- }.to raise_error
436
- end
437
- end
438
-
439
- context 'with a missing tag' do
440
- it 'prints a warning message' do
441
- run_with_args('find', 'zuzzax') do |sf|
442
- sf.update_database_from_files example_root
443
- sf.should_receive(:say_status).with(:warning, /not present/, :yellow)
444
- end
445
- end
446
-
447
- it 'prints nothing with --quiet' do
448
- run_with_args('find', 'zuzzax', '--quiet') do |sf|
449
- sf.update_database_from_files example_root
450
- sf.should_not_receive(:say)
451
- sf.should_not_receive(:say_status)
452
- end
453
- end
454
- end
455
-
456
- context 'with a bad boolean combo' do
457
- it 'prints a warning message' do
458
- run_with_args('find', 'test', 'asdf') do |sf|
459
- sf.update_database_from_files example_root
460
- sf.should_receive(:say_status).with(:warning, /not found/, :yellow)
461
- end
462
- end
463
-
464
- it 'prints nothing with --quiet' do
465
- run_with_args('find', 'test', 'asdf', '--quiet') do |sf|
466
- sf.update_database_from_files example_root
467
- sf.should_not_receive(:say)
468
- sf.should_not_receive(:say_status)
469
- end
470
- end
471
- end
472
-
473
- context 'with a good tag' do
474
- it 'prints some filenames' do
475
- run_with_args('find', 'test') do |sf|
476
- sf.update_database_from_files example_root
477
- sf.should_receive(:say).with(/#{example_root}/).at_least(:once)
478
- end
479
- end
480
- end
481
- end
482
- end