pa 1.2.0 → 1.2.1

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/.gitignore CHANGED
@@ -1 +1 @@
1
- *~
1
+ /*.gem
@@ -14,6 +14,12 @@ class Pa
14
14
  module Cmd
15
15
  extend Util::Concern
16
16
  module ClassMethods
17
+ DELEGATE_METHODS = [ :home ]
18
+
19
+ def home2
20
+ Dir.home
21
+ end
22
+
17
23
  # link
18
24
  #
19
25
  # @overload ln(src, dest)
@@ -31,7 +37,7 @@ class Pa
31
37
  # @see ln
32
38
  # @return [nil]
33
39
  def ln_f(src_s, dest, o={})
34
- o[:force]=true
40
+ o[:force] = true
35
41
  _ln(:link, src_s, dest, o)
36
42
  end
37
43
 
@@ -158,10 +164,6 @@ class Pa
158
164
  p
159
165
  end # def mktmpdir
160
166
 
161
- def home
162
- Dir.home
163
- end
164
-
165
167
  # make temp file
166
168
  # @see mktmpdir
167
169
  #
@@ -211,7 +213,7 @@ class Pa
211
213
  paths, o = Util.extract_options(paths)
212
214
  glob(*paths) { |pa|
213
215
  extra_doc = o[:force] ? "-f " : nil
214
- puts "rm #{extra_doc}#{pd.p}" if o[:verbose]
216
+ puts "rm #{extra_doc}#{pa.p}" if o[:verbose]
215
217
 
216
218
  if File.directory?(pa.p)
217
219
  if o[:force]
@@ -417,6 +419,7 @@ class Pa
417
419
  end
418
420
  end # def _move
419
421
 
422
+ # @param [Array<String,Pa>] paths
420
423
  def _touch(paths, o)
421
424
  o[:mode] ||= 0644
422
425
  paths.map!{|v|get(v)}
@@ -430,7 +433,7 @@ class Pa
430
433
 
431
434
  mkdir(File.dirname(p)) if o[:mkdir]
432
435
 
433
- if win32?
436
+ if Util.win32?
434
437
  # win32 BUG. must f.write("") then file can be deleted.
435
438
  File.open(p, "w"){|f| f.chmod(o[:mode]); f.write("")}
436
439
  else
@@ -548,6 +551,14 @@ class Pa
548
551
  rescue Errno::ENOENT
549
552
  end
550
553
  end # _copy
554
+
555
+ DELEGATE_METHODS.each do |mth|
556
+ class_eval <<-EOF
557
+ def #{mth}(*args, &blk)
558
+ Pa(#{mth}2(*args, &blk))
559
+ end
560
+ EOF
561
+ end
551
562
  end
552
563
  end
553
564
  end
@@ -27,6 +27,10 @@ class Pa
27
27
  def wrap_array(value)
28
28
  Array === value ? value : [value]
29
29
  end
30
+
31
+ def win32?
32
+ RUBY_PLATFORM =~ /mingw32|mswin/
33
+ end
30
34
  end
31
35
  end
32
36
  end
@@ -1,3 +1,3 @@
1
1
  class Pa
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
data/pa.gemspec CHANGED
@@ -1,6 +1,8 @@
1
1
  $: << File.expand_path("../lib", __FILE__)
2
2
  require "pa/version"
3
3
 
4
+ pd Pa::VERSION
5
+
4
6
  Gem::Specification.new do |s|
5
7
  s.name = "pa"
6
8
  s.version = Pa::VERSION
@@ -10,134 +10,379 @@ describe Pa do
10
10
  before :all do
11
11
  @curdir = Dir.pwd
12
12
  @tmpdir = Dir.mktmpdir
13
- Dir.chdir(@tmpdir)
13
+ Dir.chdir @tmpdir
14
14
  end
15
+
15
16
  after :all do
16
- Dir.chdir(@curdir)
17
+ Dir.chdir @curdir
17
18
  FileUtils.rm_r @tmpdir
18
19
  end
19
20
 
21
+ # clean up directory after each run
22
+ after :each do
23
+ FileUtils.rm_r Dir.glob("*", File::FNM_DOTMATCH)-%w[. ..]
24
+ end
25
+
26
+ describe "#home2" do
27
+ it "works" do
28
+ Pa.home2.should == Dir.home
29
+ end
30
+ end
31
+
20
32
  describe "#_ln" do
21
- # lna
22
- before :all do
23
- FileUtils.touch(%w[lna])
33
+ # _lna
34
+ before :each do
35
+ FileUtils.touch %w[_lna]
24
36
  end
25
37
 
26
38
  it "works" do
27
39
  output = capture :stdout do
28
- Pa._ln(:link, "lna", "lnb", :verbose => true)
40
+ Pa._ln(:link, "_lna", "_lnb", :verbose => true)
29
41
  end
30
42
 
31
- output.should == "ln lna lnb\n"
32
- File.identical?("lna", "lnb").should be_true
43
+ output.should == "ln _lna _lnb\n"
44
+ File.identical?("_lna", "_lnb").should be_true
45
+ end
46
+ end
47
+
48
+ describe "#ln" do
49
+ # file1
50
+ before :each do
51
+ FileUtils.touch %w[file1]
52
+ end
53
+
54
+ it "works" do
55
+ Pa.ln("file1", "lna")
56
+ File.identical?("file1", "lna").should be_true
57
+
58
+ Pa.ln(Pa("file1"), Pa("lnb"))
59
+ File.identical?("file1", "lnb").should be_true
60
+ end
61
+ end
62
+
63
+ describe "#ln_f" do
64
+ # file1
65
+ # file2
66
+ # file3
67
+ before :each do
68
+ FileUtils.touch %w[file1 file2 file3]
69
+ end
70
+
71
+ it "works" do
72
+ Pa.ln_f("file1", "file2")
73
+ File.identical?("file1", "file2").should be_true
74
+
75
+ Pa.ln_f(Pa("file1"), Pa("file3"))
76
+ File.identical?("file1", "file3").should be_true
77
+ end
78
+ end
79
+
80
+ describe "#symln" do
81
+ # file1
82
+ before :each do
83
+ FileUtils.touch %w[file1]
84
+ end
85
+
86
+ it "works" do
87
+ Pa.symln("file1", "syma")
88
+ File.symlink?("syma").should be_true
89
+
90
+ Pa.symln(Pa("file1"), Pa("symb"))
91
+ File.symlink?("symb").should be_true
92
+ end
93
+ end
94
+
95
+ describe "#symln_f" do
96
+ # file1
97
+ # file2
98
+ # file3
99
+ before :each do
100
+ FileUtils.touch %w[file1 file2 file3]
101
+ end
102
+
103
+ it "works" do
104
+ Pa.symln_f("file1", "file2")
105
+ File.symlink?("file2").should be_true
106
+
107
+ Pa.symln_f(Pa("file1"), Pa("file3"))
108
+ File.symlink?("file3").should be_true
109
+ end
110
+ end
111
+
112
+ describe "#readlink" do
113
+ # syma -> file1
114
+ before :each do
115
+ FileUtils.touch %w[file1]
116
+ File.symlink "file1", "syma"
117
+ end
118
+
119
+ it "works" do
120
+ Pa.readlink("syma").should == "file1"
121
+ Pa.readlink(Pa("syma")).should == "file1"
122
+ end
123
+ end
124
+
125
+ describe "#cd" do
126
+ # dir1/
127
+ before :each do
128
+ FileUtils.mkdir_p %w[dir1]
129
+ end
130
+
131
+ after :each do
132
+ Dir.chdir @tmpdir
133
+ end
134
+
135
+ it "works" do
136
+ Pa.cd("dir1")
137
+ Dir.pwd.should == File.join(@tmpdir, "dir1")
138
+ end
139
+ end
140
+
141
+ describe "#chroot" do
142
+ it "works" do
143
+ Dir.should_receive(:chroot).with("dir1")
144
+ Pa.chroot "dir1"
145
+
146
+ Dir.should_receive(:chroot).with("dir2")
147
+ Pa.chroot Pa("dir2")
148
+ end
149
+ end
150
+
151
+ describe "#_touch" do
152
+ it "works" do
153
+ Pa._touch ["file1", Pa("file2")], {}
154
+
155
+ File.exists?("file1").should be_true
156
+ File.exists?("file2").should be_true
157
+ end
158
+ end
159
+
160
+ describe "#touch" do
161
+ it "works" do
162
+ Pa.touch("file1", "file2")
163
+
164
+ File.exists?("file1").should be_true
165
+ File.exists?("file2").should be_true
166
+ end
167
+ end
168
+
169
+ describe "#touch" do
170
+ # file1
171
+ # file2
172
+ before :each do
173
+ FileUtils.touch %w[file1 file2]
174
+ end
175
+
176
+ it "works" do
177
+ Pa.touch_f("file1", "file2")
178
+
179
+ File.exists?("file1").should be_true
180
+ File.exists?("file2").should be_true
181
+ end
182
+ end
183
+
184
+ describe "#mkdir" do
185
+ it "mkdir" do
186
+ Pa.mkdir("guten/tag")
187
+ File.exists?("guten/tag").should be_true
188
+ end
189
+ end
190
+
191
+ describe "#mkdir_f" do
192
+ # dir1/dira
193
+ before :each do
194
+ FileUtils.mkdir_p %w[dir1/dira]
195
+ end
196
+
197
+ it "mkdir" do
198
+ Pa.mkdir_f "dir1/dira"
199
+ end
200
+ end
201
+
202
+ describe "#_mktmpname" do
203
+ it "works" do
204
+ path = Pa._mktmpname("foo", :tmpdir => "guten")
205
+
206
+ path.should =~ %r~guten/foo\..{6}~
207
+ end
208
+ end
209
+
210
+ describe "#mktmpdir" do
211
+ it "works" do
212
+ Dir.should_receive(:mkdir)
213
+
214
+ path = Pa.mktmpdir("foo")
215
+
216
+ path.should =~ %r~#{Regexp.escape(ENV["TEMP"])}/foo~
217
+ end
218
+ end
219
+
220
+ describe "#mktmpfile2" do
221
+ it "works" do
222
+ path = Pa.mktmpfile2 :tmpdir => "foo"
223
+
224
+ path.should =~ %r~foo/#{$$}~
225
+ end
226
+ end
227
+
228
+ describe "#mktmpfile" do
229
+ it "works" do
230
+ path = Pa.mktmpfile
231
+
232
+ path.should be_an_instance_of(Pa)
33
233
  end
34
234
  end
35
235
 
36
236
  describe "#_rmdir" do
37
237
  # dir/
38
238
  # a
39
- # dira/
239
+ # dir1/
40
240
  # aa
41
- before(:all) do
42
- @_rmdir = Pa.method(:_rmdir)
43
- FileUtils.mkdir_p(%w(dir/dira))
44
- FileUtils.touch(%w(dir/a dir/dira/aa))
241
+ before :each do
242
+ FileUtils.mkdir_p %w[dir/dir1]
243
+ FileUtils.touch %w[dir/a dir/dir1/aa]
45
244
  end
46
245
 
47
246
  it "remove directory" do
48
- @_rmdir.call Pa("dir")
247
+ Pa._rmdir Pa("dir")
49
248
  File.exists?("dir").should be_false
50
249
  end
51
250
  end
52
251
 
53
- # rm family
54
- describe "" do
55
- # a
56
- # dir/
57
- # dira/
58
- # a
59
- before :each do
60
- FileUtils.mkdir_p(%w(dir/dira))
61
- FileUtils.touch(%w(a dir/a))
62
- end
252
+ describe "#rm" do
253
+ # rm family
254
+ # a
255
+ # dir/
256
+ # dir1/
257
+ # a
258
+ before :each do
259
+ FileUtils.mkdir_p %w[dir/dir1]
260
+ FileUtils.touch %w[a dir/a]
261
+ end
63
262
 
64
- describe "#rm" do
65
- it "remove file" do
66
- Pa.rm "a"
67
- File.exists?("a").should be_false
68
- lambda{Pa.rm("dir")}.should raise_error(Errno::EISDIR)
69
- end
70
- end
263
+ it "remove file" do
264
+ Pa.rm "a"
265
+ File.exists?("a").should be_false
266
+ lambda{Pa.rm("dir")}.should raise_error(Errno::EISDIR)
267
+ end
268
+ end
71
269
 
72
- describe "#rm_f" do
73
- it "remove file force" do
74
- lambda{Pa.rm_f("dir")}.should_not raise_error(Errno::EISDIR)
75
- end
76
- end
270
+ describe "#rm_f" do
271
+ # rm family
272
+ # a
273
+ # dir/
274
+ # dir1/
275
+ # a
276
+ before :each do
277
+ FileUtils.mkdir_p %w[dir/dir1]
278
+ FileUtils.touch %w[a dir/a]
279
+ end
77
280
 
78
- describe "#rmdir" do
79
- it "remove directory" do
80
- Pa.rmdir "dir"
81
- File.exists?("dir").should be_false
82
- lambda{Pa.rmdir("a")}.should raise_error(Errno::ENOTDIR)
83
- end
84
- end
281
+ it "remove file force" do
282
+ lambda{Pa.rm_f("dir")}.should_not raise_error(Errno::EISDIR)
283
+ end
284
+ end
85
285
 
86
- describe "#rmdir_f" do
87
- it "remove directory force" do
88
- lambda{Pa.rmdir_r("a")}.should_not raise_error(Errno::ENOTDIR)
89
- end
90
- end
286
+ describe "#rmdir" do
287
+ # rm family
288
+ # a
289
+ # dir/
290
+ # dir1/
291
+ # a
292
+ before :each do
293
+ FileUtils.mkdir_p %w[dir/dir1]
294
+ FileUtils.touch %w[a dir/a]
295
+ end
91
296
 
92
- describe "#rm_r" do
93
- it "remove both file and directory" do
94
- Pa.rm "a"
95
- File.exists?("a").should be_false
96
- Pa.rm_r "dir"
97
- File.exists?("dir").should be_false
98
- end
99
- end
297
+ it "remove directory" do
298
+ Pa.rmdir "dir"
299
+ File.exists?("dir").should be_false
300
+ lambda{Pa.rmdir("a")}.should raise_error(Errno::ENOTDIR)
301
+ end
302
+ end
100
303
 
101
- describe "#rm_if" do
102
- it "remove if condition" do
103
- Pa.rm_if "." do |pa|
104
- next if pa.p=="a"
105
- yield if pa.b=="a"
106
- end
304
+ describe "#rmdir_f" do
305
+ # rm family
306
+ # a
307
+ # dir/
308
+ # dir1/
309
+ # a
310
+ before :each do
311
+ FileUtils.mkdir_p %w[dir/dir1]
312
+ FileUtils.touch %w[a dir/a]
313
+ end
107
314
 
108
- File.exists?("a").should be_true
109
- File.exists?("dir/dira/a").should be_false
110
- end
111
- end
315
+ it "remove directory force" do
316
+ lambda{Pa.rmdir_r("a")}.should_not raise_error(Errno::ENOTDIR)
317
+ end
318
+ end
112
319
 
113
- end
320
+ describe "#rm_r" do
321
+ # rm family
322
+ # a
323
+ # dir/
324
+ # dir1/
325
+ # a
326
+ before :each do
327
+ FileUtils.mkdir_p %w[dir/dir1]
328
+ FileUtils.touch %w[a dir/a]
329
+ end
114
330
 
115
- describe "#mkdir" do
116
- after :each do
117
- FileUtils.rm_r Dir["*"]-%w(. ..)
118
- end
331
+ it "remove both file and directory" do
332
+ Pa.rm "a"
333
+ File.exists?("a").should be_false
334
+ Pa.rm_r "dir"
335
+ File.exists?("dir").should be_false
336
+ end
337
+ end
119
338
 
120
- it "mkdir" do
121
- Pa.mkdir("guten/tag")
122
- File.exists?("guten/tag").should be_true
123
- end
124
- end
339
+ describe "#rm_if" do
340
+ # rm family
341
+ # a
342
+ # dir/
343
+ # dir1/
344
+ # a
345
+ before :each do
346
+ FileUtils.mkdir_p %w[dir/dir1]
347
+ FileUtils.touch %w[a dir/a]
348
+ end
349
+
350
+ it "remove if condition" do
351
+ Pa.rm_if(".") { |pa|
352
+ next if pa.p=="a"
353
+ yield if pa.b=="a"
354
+ }
355
+
356
+ File.exists?("a").should be_true
357
+ File.exists?("dir/dir1/a").should be_false
358
+ end
359
+ end
125
360
 
126
361
  describe "#_copy" do
362
+ # rm family
363
+ # a
364
+ # dir/
365
+ # dir1/
366
+ # a
367
+ before :each do
368
+ FileUtils.mkdir_p %w[dir/dir1]
369
+ FileUtils.touch %w[a dir/a]
370
+ end
371
+
127
372
  # a symfile
128
373
  # ab
129
374
  # ac
130
375
  # dir/
131
376
  # b # guten
132
- # dira/
377
+ # dir1/
133
378
  # c
134
379
  # destdir/
135
380
  # b # tag
136
381
  # dir/
137
- before :all do
138
- FileUtils.mkdir_p(%w(dir/dira destdir/dir))
139
- FileUtils.touch(%w(a ab ac dir/b dir/dira/c destdir/dir/b))
140
- File.symlink("a", "symfile")
382
+ before :each do
383
+ FileUtils.mkdir_p %w[dir/dir1 destdir/dir]
384
+ FileUtils.touch %w[a ab ac dir/b dir/dir1/c destdir/dir/b]
385
+ File.symlink "a", "symfile"
141
386
  open("dir/b", "w"){|f|f.write "guten"}
142
387
  open("destdir/dir/b", "w"){|f|f.write "tag"}
143
388
  end
@@ -154,8 +399,8 @@ describe Pa do
154
399
 
155
400
  context "with :symlink" do
156
401
  it "_copy" do
157
- Pa._copy 'symfile', 'symfilea'
158
- File.symlink?('symfilea').should be_true
402
+ Pa._copy 'symfile', 'symfile1'
403
+ File.symlink?('symfile1').should be_true
159
404
  end
160
405
 
161
406
  it "_copy with :folsymlink" do
@@ -167,60 +412,66 @@ describe Pa do
167
412
  end
168
413
 
169
414
  context "with :mkdir" do
170
- it "_copy" do
415
+ it "_copy with :mkdir => false" do
171
416
  lambda{Pa.cp "a", "destdir/mkdir/dir"}.should raise_error(Errno::ENOENT)
172
417
  end
173
418
 
174
- it "_copy with :mkdir" do
419
+ it "_copy with :mkdir => true" do
175
420
  lambda{Pa.cp "a", "destdir/mkdir/dir", mkdir:true}.should_not raise_error(Errno::ENOENT)
176
421
  File.exists?("destdir/mkdir/dir/a").should be_true
177
422
  end
178
423
 
179
- it "_copy with :mkdir" do
180
- lambda{Pa.cp "a", "destdir/mkdira", mkdir:true}.should_not raise_error(Errno::ENOENT)
181
- File.exists?("destdir/mkdira/a").should be_true
424
+ it "_copy with :mkdir => true" do
425
+ lambda{Pa.cp "a", "destdir/mkdir1", mkdir:true}.should_not raise_error(Errno::ENOENT)
426
+ File.exists?("destdir/mkdir1/a").should be_true
182
427
  end
183
428
  end
184
429
 
185
- context "with :force" do
186
- it "_copy" do
187
- File.open("destdir/overwrite","w"){|f|f.write("")}
188
- lambda{Pa.cp "a", "destdir/overwrite"}.should raise_error(Errno::EEXIST)
189
- end
430
+ it "_copy with :force => false" do
431
+ File.open("destdir/overwrite","w"){|f|f.write("")}
432
+ lambda{Pa.cp "a", "destdir/overwrite"}.should raise_error(Errno::EEXIST)
433
+ end
190
434
 
191
- it "_copy with :force" do
192
- lambda{Pa.cp "a", "destdir/overwrite", force:true}.should_not raise_error(Errno::EEXIST)
193
- end
194
- end
435
+ it "_copy with :force => true" do
436
+ lambda{Pa.cp "a", "destdir/overwrite", force:true}.should_not raise_error(Errno::EEXIST)
437
+ end
195
438
 
196
- it "_copy with :normal" do
439
+ it "_copy with :normal => true" do
197
440
  Pa._copy 'dir', 'dir_normal', special: true
198
441
  dir_empty = (Dir.entries('dir_normal').length==2)
199
442
  dir_empty.should be_true
200
443
  end
201
-
202
444
  end
203
445
 
204
446
  describe "#cp" do
447
+ # file1
448
+ # file2
449
+ # file3
450
+ # dir1/
451
+
452
+ before :each do
453
+ FileUtils.mkdir_p %w[dir1]
454
+ FileUtils.touch %w[file1 file2 file3]
455
+ end
456
+
205
457
  it "cp file destdir/file" do
206
- Pa.cp "a", "destdir/aa"
207
- File.exists?("destdir/aa").should be_true
458
+ Pa.cp "file1", "dir1/file2"
459
+ File.exists?("dir1/file2").should be_true
208
460
  end
209
461
 
210
462
  it "cp file destdir/" do
211
- Pa.cp "a", "destdir"
212
- File.exists?("destdir/a").should be_true
463
+ Pa.cp "file1", "dir1"
464
+ File.exists?("dir1/file1").should be_true
213
465
  end
214
466
 
215
467
  it "cp file1 file2 .. dest_file" do
216
- lambda{Pa.cp(%w(a ab), "ac")}.should raise_error(Errno::ENOTDIR)
468
+ lambda{Pa.cp(%w[file1 file2], "file3")}.should raise_error(Errno::ENOTDIR)
217
469
  end
218
470
 
219
- it "cp file1 file2 .. dird/" do
220
- Dir.mkdir 'dird'
221
- Pa.cp %w(a ab), "dird"
222
- File.exists?("dird/a").should be_true
223
- File.exists?("dird/ab").should be_true
471
+ it "cp file1 file2 .. destdir/" do
472
+ Pa.cp %w[file1 file2], "dir1"
473
+ File.exists?("dir1/file1").should be_true
474
+ File.exists?("dir1/file2").should be_true
224
475
  end
225
476
  end
226
477
 
@@ -228,11 +479,8 @@ describe Pa do
228
479
  # a
229
480
  # dir/ b
230
481
  before :each do
231
- FileUtils.mkdir_p(%w(dir))
232
- FileUtils.touch(%w(a dir/b))
233
- end
234
- after :each do
235
- FileUtils.rm_r Dir["*"]-%w(. ..)
482
+ FileUtils.mkdir_p %w[dir]
483
+ FileUtils.touch %w[a dir/b]
236
484
  end
237
485
 
238
486
  it "mv a dir/a" do
@@ -260,11 +508,8 @@ describe Pa do
260
508
  # a b c
261
509
  # dir/ aa
262
510
  before :each do
263
- FileUtils.mkdir_p(%w(dir))
264
- FileUtils.touch(%w(a b c dir/aa))
265
- end
266
- after :each do
267
- FileUtils.rm_r Dir["*"]-%w(. ..)
511
+ FileUtils.mkdir_p %w[dir]
512
+ FileUtils.touch %w[a b c dir/aa]
268
513
  end
269
514
 
270
515
  it "mv a dir/" do
@@ -283,37 +528,35 @@ describe Pa do
283
528
  end
284
529
  end
285
530
 
286
- describe "#_mktmpname" do
287
- it "works" do
288
- path = Pa._mktmpname("foo", :tmpdir => "guten")
289
-
290
- path.should =~ %r~guten/foo\..{6}~
291
- end
292
- end
293
-
294
- describe "#mktmpdir" do
295
- it "works" do
296
- File.should_receive(:mkdir)
297
-
298
- path = Pa.mktmpdir("foo")
299
-
300
- path.should =~ %r~#{Regexp.escape(ENV["TEMP"])}/foo~
301
- end
302
- end
531
+ describe "#mv_f" do
532
+ # file1 with foo
533
+ # file2
534
+ # dir1/
535
+ # filea
536
+ # dir2/
537
+ # dir1/
538
+ before :each do
539
+ FileUtils.mkdir_p %w[dir1 dir2/dir1]
540
+ FileUtils.touch %w[file1 file2 dir1/filea]
541
+ open("file1", "w") {|f| f.write("foo")}
542
+ end
303
543
 
304
- describe "#mktmpfile2" do
305
- it "works" do
306
- path = Pa.mktmpfile2 :tmpdir => "foo"
544
+ it "works" do
545
+ Pa.mv_f "file1", "file2"
546
+ File.read("file2").should == "foo"
307
547
 
308
- path.should =~ %r~foo/#{$$}~
309
- end
310
- end
548
+ Pa.mv_f "dir1", "dir2"
549
+ File.exists?("dir2/dir1/filea").should be_true
550
+ end
551
+ end
311
552
 
312
- describe "#mktmpfile" do
553
+ describe "class DELEGATE_METHODS" do
313
554
  it "works" do
314
- path = Pa.mktmpfile
555
+ Pa.stub(:home2) { "/home/foo" }
556
+ Pa.home.should == Pa("/home/foo")
315
557
 
316
- path.should be_an_instance_of(Pa)
558
+ Pa.should_receive(:home2).with(1, 2)
559
+ Pa.home(1, 2)
317
560
  end
318
561
  end
319
562
  end
@@ -12,14 +12,19 @@ describe Pa do
12
12
  before :all do
13
13
  @curdir = Dir.pwd
14
14
  @tmpdir = Dir.mktmpdir
15
- Dir.chdir(@tmpdir)
15
+ Dir.chdir @tmpdir
16
16
  end
17
17
 
18
18
  after :all do
19
- Dir.chdir(@curdir)
19
+ Dir.chdir @curdir
20
20
  FileUtils.rm_r @tmpdir
21
21
  end
22
22
 
23
+ # clean up directory after each run
24
+ after :each do
25
+ FileUtils.rm_r Dir.glob("*", File::FNM_DOTMATCH)-%w[. ..]
26
+ end
27
+
23
28
  describe ".tmpdir2" do
24
29
  it "works" do
25
30
  Pa.tmpdir2.should == Dir.tmpdir
@@ -33,12 +38,10 @@ describe Pa do
33
38
  end
34
39
 
35
40
  describe ".glob2" do
36
- before(:each) do
37
- @files = %w(fa .fa)
38
- FileUtils.touch(@files)
39
- end
40
- after(:each) do
41
- FileUtils.rm @files
41
+ # filea
42
+ # .filea
43
+ before :each do
44
+ FileUtils.touch %w[filea .filea]
42
45
  end
43
46
 
44
47
  it "returns 1 items" do
@@ -55,25 +58,19 @@ describe Pa do
55
58
  end
56
59
 
57
60
  describe ".each2" do
58
- # fa .fa fa~
61
+ # filea .filea filea~
59
62
  # dira/
60
63
  # dirb/
61
64
  # b
62
- before(:each) do
63
- @dirs = %w(dira/dirb)
64
- @files = %w(fa .fa fa~ dira/dirb/b)
65
- FileUtils.mkdir_p(@dirs)
66
- FileUtils.touch(@files)
67
- end
68
- after(:each) do
69
- FileUtils.rm @files
70
- FileUtils.rm_r @dirs
65
+ before :each do
66
+ FileUtils.mkdir_p %w[dira/dirb]
67
+ FileUtils.touch %w[filea .filea filea~ dira/dirb/b]
71
68
  end
72
69
 
73
70
  it "works" do
74
71
  ret = []
75
72
  Pa.each2{|pa| ret << pa}
76
- ret.sort.should == %w(.fa dira fa fa~)
73
+ ret.sort.should == %w(.filea dira filea filea~)
77
74
  end
78
75
 
79
76
  it "return a Enumerator when call without block" do
@@ -85,23 +82,23 @@ describe Pa do
85
82
  end
86
83
 
87
84
  it "raise Errno::ENOTDIDR if path isn't a directory" do
88
- lambda { Pa.each2("fa"){} }.should raise_error(Errno::ENOTDIR)
85
+ lambda { Pa.each2("filea"){} }.should raise_error(Errno::ENOTDIR)
89
86
  end
90
87
 
91
88
  it "each2(.) return 'foo' not '.foo'" do
92
- Pa.each2.with_object([]){|(pa),m| m<<pa}.sort.should == %w(.fa dira fa fa~)
89
+ Pa.each2.with_object([]){|(pa),m| m<<pa}.sort.should == %w(.filea dira filea filea~)
93
90
  end
94
91
 
95
92
  it ".each2 with :dot => false -> list all files except dot file" do
96
- Pa.each2(:dot => false).with_object([]){|(pa),m|m<<pa}.sort.should == %w[dira fa fa~]
93
+ Pa.each2(:dot => false).with_object([]){|(pa),m|m<<pa}.sort.should == %w[dira filea filea~]
97
94
  end
98
95
 
99
96
  it ".each2 with :backup => false" do
100
- Pa.each2(:backup => false).with_object([]){|(pa),m|m<<pa}.sort.should == %w[.fa dira fa]
97
+ Pa.each2(:backup => false).with_object([]){|(pa),m|m<<pa}.sort.should == %w[.filea dira filea]
101
98
  end
102
99
 
103
100
  it ".each2 with :absolute => true" do
104
- b = %w[.fa dira fa fa~].map{|v| File.join(Dir.pwd, v)}
101
+ b = %w[.filea dira filea filea~].map{|v| File.join(Dir.pwd, v)}
105
102
  Pa.each2(:absolute => true).with_object([]){|(pa),m|m<<pa}.sort.should == b
106
103
  end
107
104
 
@@ -114,26 +111,19 @@ describe Pa do
114
111
  end
115
112
 
116
113
  describe ".each" do
117
- # fa .fa fa~
114
+ # filea .filea filea~
118
115
  # dira/
119
116
  # dirb/
120
117
  # b
121
- before(:each) do
122
- @dirs = %w(dira/dirb)
123
- @files = %w(fa .fa fa~ dira/dirb/b)
124
- FileUtils.mkdir_p(@dirs)
125
- FileUtils.touch(@files)
126
- end
127
-
128
- after(:each) do
129
- FileUtils.rm @files
130
- FileUtils.rm_r @dirs
118
+ before :each do
119
+ FileUtils.mkdir_p %w[dira/dirb]
120
+ FileUtils.touch %w[filea .filea filea~ dira/dirb/b]
131
121
  end
132
122
 
133
123
  it "works" do
134
124
  ret = []
135
125
  Pa.each{|pa| ret << pa.p }
136
- ret.sort.should == %w(.fa dira fa fa~)
126
+ ret.sort.should == %w(.filea dira filea filea~)
137
127
  end
138
128
 
139
129
  it "return a Enumerator when call without block" do
@@ -142,28 +132,22 @@ describe Pa do
142
132
  end
143
133
 
144
134
  describe ".each2_r" do
145
- # fa .fa fa~
135
+ # filea .filea filea~
146
136
  # dira/
147
137
  # dirb/
148
138
  # b
149
- before(:each) do
150
- @dirs = %w(dira/dirb)
151
- @files = %w(fa .fa fa~ dira/dirb/b)
152
- FileUtils.mkdir_p(@dirs)
153
- FileUtils.touch(@files)
154
- end
155
- after(:each) do
156
- FileUtils.rm @files
157
- FileUtils.rm_r @dirs
139
+ before :each do
140
+ FileUtils.mkdir_p %w[dira/dirb]
141
+ FileUtils.touch %w[filea .filea filea~ dira/dirb/b]
158
142
  end
159
143
 
160
144
  it "each2_r -> Enumerator" do
161
145
  Pa.each2_r.should be_an_instance_of Enumerator
162
- Pa.each2_r.with_object([]){|(pa,r),m|m<<r}.sort.should == %w[.fa dira dira/dirb dira/dirb/b fa fa~]
146
+ Pa.each2_r.with_object([]){|(pa,r),m|m<<r}.sort.should == %w[.filea dira dira/dirb dira/dirb/b filea filea~]
163
147
  end
164
148
 
165
149
  it "with :absolute => true" do
166
- Pa.each2_r(:absolute => true).to_a[0][0].should == File.join(Dir.pwd, "fa~")
150
+ Pa.each2_r(:absolute => true).to_a[0][0].should == File.join(Dir.pwd, "filea~")
167
151
  end
168
152
 
169
153
 
@@ -179,15 +163,9 @@ describe Pa do
179
163
  # filea
180
164
  # dira/
181
165
  # fileb
182
- before(:each) do
183
- @dirs = %w(dira)
184
- @files = %w(filea dira/fileb)
185
- FileUtils.mkdir_p(@dirs)
186
- FileUtils.touch(@files)
187
- end
188
- after(:each) do
189
- FileUtils.rm @files
190
- FileUtils.rm_r @dirs
166
+ before :each do
167
+ FileUtils.mkdir_p %w[dira]
168
+ FileUtils.touch %w[filea dira/fileb]
191
169
  end
192
170
 
193
171
  it "works" do
@@ -208,15 +186,9 @@ describe Pa do
208
186
  # filea
209
187
  # dira/
210
188
  # fileb
211
- before(:each) do
212
- @dirs = %w(dira)
213
- @files = %w(filea dira/fileb)
214
- FileUtils.mkdir_p(@dirs)
215
- FileUtils.touch(@files)
216
- end
217
- after(:each) do
218
- FileUtils.rm @files
219
- FileUtils.rm_r @dirs
189
+ before :each do
190
+ FileUtils.mkdir_p %w[dira]
191
+ FileUtils.touch %w[filea dira/fileb]
220
192
  end
221
193
 
222
194
  it "works" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -53,18 +53,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
53
53
  - - ! '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
- segments:
57
- - 0
58
- hash: -4359841082193627011
59
56
  required_rubygems_version: !ruby/object:Gem::Requirement
60
57
  none: false
61
58
  requirements:
62
59
  - - ! '>='
63
60
  - !ruby/object:Gem::Version
64
61
  version: '0'
65
- segments:
66
- - 0
67
- hash: -4359841082193627011
68
62
  requirements: []
69
63
  rubyforge_project: xx
70
64
  rubygems_version: 1.8.11