rbsync 0.0.7 → 0.0.8

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/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