rbsync 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
data/lib/rbsync.rb CHANGED
@@ -96,9 +96,11 @@ class RbSync
96
96
  files = Dir.glob "./**/*", File::FNM_DOTMATCH
97
97
  exclude_files =[]
98
98
  exclude_files = excludes.map{|g| Dir.glob "./**/#{g}",File::FNM_DOTMATCH }
99
+ #files.each{|e|pp [e, File.directory?(e)] }
100
+ files = files.reject{|e| File.directory?(e) }
99
101
  files = files - exclude_files.flatten
100
102
  }
101
- files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }}
103
+ files = files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }}
102
104
  end
103
105
  # compare two directory by name and FileUtis,cmp
104
106
  def find_files(src,dest,options)
@@ -299,7 +301,6 @@ class RbSync
299
301
  self.copy_r(files)
300
302
  end
301
303
  def copy_r(files)
302
- ##todo 進捗を調べる.
303
304
  if(@conf[:progress])
304
305
  puts ("copy #{files.size} files")
305
306
  $stdout.flush
@@ -312,6 +313,7 @@ class RbSync
312
313
  end
313
314
  #main
314
315
  copy_thread = Thread.start{
316
+ FileUtils.mkdir_p File.dirname(e[1]) unless File.exists?(File.dirname(e[1]))
315
317
  FileUtils.copy( e[0] , e[1] ,{:preserve=>self.preserve?,:verbose=>self.verbose? } )
316
318
  }
317
319
  #progress of each file
@@ -467,3 +469,25 @@ class ProgressBar
467
469
  end
468
470
  end
469
471
 
472
+
473
+
474
+ if __FILE__ == $0
475
+ require 'tmpdir'
476
+ require 'find'
477
+ require 'pp'
478
+ Dir.mktmpdir('goo') do |dir|
479
+ Dir.chdir dir do
480
+ Dir.mkdir("old")
481
+ Dir.mkdir("new")
482
+ open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
483
+ time1 = Time.local(2008, 1, 1, 1, 1, 1)
484
+ File::utime( time1 , time1, "./old/test.txt")
485
+ rsync = RbSync.new
486
+ rsync.sync("old","new",{:update=>true})
487
+ # timestamp is preserved?
488
+ p File.mtime("./new/test.txt") == time1
489
+ p File.atime("./new/test.txt") == time1
490
+ end
491
+ end
492
+ puts :END
493
+ end
data/rbsync.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rbsync}
8
- s.version = "0.0.7"
8
+ s.version = "0.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["takuya"]
data/test/test_rbsync.rb CHANGED
@@ -166,5 +166,87 @@ class TestRbsync < Test::Unit::TestCase
166
166
  end
167
167
  end
168
168
  end
169
+ def test_sync_old_to_new_twice
170
+ Dir.mktmpdir('foo') do |dir|
171
+ Dir.chdir dir do
172
+ Dir.mkdir("old")
173
+ Dir.mkdir("new")
174
+ open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
175
+ rsync = RbSync.new
176
+ rsync.sync("old","new")
177
+ rsync.sync("old","new")
178
+ assert FileUtils.cmp("old/test.txt","new/test.txt")
179
+ files = Dir.glob "./new/**/*"
180
+ assert files.size == 1
181
+ end
182
+ end
183
+ end
184
+ def test_sync_old_to_new_sub_dir
185
+ Dir.mktmpdir('foo') do |dir|
186
+ Dir.chdir dir do
187
+ Dir.mkdir("old")
188
+ Dir.mkdir("old/dir1")
189
+ Dir.mkdir("new")
190
+ open("./old/dir1/test.txt", "w+"){|f| 10.times{f.puts("test")}}
191
+ rsync = RbSync.new
192
+ rsync.sync("old","new")
193
+ assert FileUtils.cmp("old/dir1/test.txt","new/dir1/test.txt")
194
+ files = Dir.glob "./new/**/*"
195
+ files = files.reject{|e| File.directory?(e) }
196
+ assert files.size == 1
197
+ end
198
+ end
199
+ end
200
+ def test_sync_old_to_new_sub_dir2
201
+ Dir.mktmpdir('foo') do |dir|
202
+ Dir.chdir dir do
203
+ Dir.mkdir("old")
204
+ Dir.mkdir("old/dir1")
205
+ Dir.mkdir("new")
206
+ open("./old/dir1/test.txt", "w+"){|f| 10.times{f.puts("test")}}
207
+ open("./old/dir1/test2.txt", "w+"){|f| 10.times{f.puts("test")}}
208
+ rsync = RbSync.new
209
+ rsync.sync("old","new")
210
+ assert FileUtils.cmp("old/dir1/test.txt","new/dir1/test.txt")
211
+ files = Dir.glob "./new/**/*"
212
+ files = files.reject{|e| File.directory?(e) }
213
+ assert files.size == 2
214
+ end
215
+ end
216
+ end
217
+ def test_sync_preserve_time_stamp_1
218
+ Dir.mktmpdir('goo') do |dir|
219
+ Dir.chdir dir do
220
+ Dir.mkdir("old")
221
+ Dir.mkdir("new")
222
+ open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
223
+ open("./new/test.txt", "w+"){|f| 10.times{f.puts("different")}}
224
+ time1 = Time.local(2018, 1, 1, 1, 1, 1)
225
+ time2 = Time.local(2008, 1, 1, 1, 1, 1)
226
+ # //old/test.txt is more newer than ./new/test.txt
227
+ File::utime( time1 , time1, "./old/test.txt")
228
+ File::utime( time2 , time2, "./new/test.txt")
229
+ rsync = RbSync.new
230
+ rsync.sync("old","new",{:update=>true})
231
+ assert File.atime("./new/test.txt") == time1
232
+ end
233
+ end
234
+ end
235
+ def test_sync_preserve_time_stamp_2
236
+ Dir.mktmpdir('goo') do |dir|
237
+ Dir.chdir dir do
238
+ Dir.mkdir("old")
239
+ Dir.mkdir("new")
240
+ open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
241
+ time1 = Time.local(2008, 1, 1, 1, 1, 1)
242
+ File::utime( time1 , time1, "./old/test.txt")
243
+ rsync = RbSync.new
244
+ rsync.sync("old","new",{:update=>true})
245
+ # timestamp is preserved?
246
+ assert File.mtime("./new/test.txt") == time1
247
+ assert File.atime("./new/test.txt") == time1
248
+ end
249
+ end
250
+ end
169
251
 
170
252
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbsync
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - takuya