Skip to content

Commit

Permalink
Files moved under other files now placed in parent folder
Browse files Browse the repository at this point in the history
  • Loading branch information
ddlsmurf committed Aug 3, 2012
1 parent 9da439a commit 200b5c0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/fled/file_listing.rb
Expand Up @@ -89,7 +89,7 @@ def operations_from! source_listing
next if path.any? { |o| o[:error] } next if path.any? { |o| o[:error] }
if target[:name] != "" && !target[:uid] if target[:name] != "" && !target[:uid]
operations << [:mk, self.path_of(target).map { |o| o[:name] }] operations << [:mk, self.path_of(target).map { |o| o[:name] }]
fake_source = {:name => target[:name]} fake_source = {:name => target[:name], :dir => true}
fake_source[:parent] = running_source[path.last[:source][:uid]] unless path.empty? fake_source[:parent] = running_source[path.last[:source][:uid]] unless path.empty?
target_uid = "new_#{running_source.count}" target_uid = "new_#{running_source.count}"
target_uid += "_" while @objects_by_id[target_uid] || running_source[target_uid] target_uid += "_" while @objects_by_id[target_uid] || running_source[target_uid]
Expand All @@ -111,11 +111,16 @@ def operations_from! source_listing
if new_name != target[:name] if new_name != target[:name]
pending_renames << [:renamed, target, target[:name]] pending_renames << [:renamed, target, target[:name]]
end end
if (target_parent = target[:parent])
until !target_parent || !target_parent[:source] || target_parent[:source][:dir]
target_parent = target_parent[:parent]
end
end
source_path = running_source.path_of(source).map { |o| o[:name] } source_path = running_source.path_of(source).map { |o| o[:name] }
target[:name] = source[:name] = new_name target[:name] = source[:name] = new_name
operations << [:moved, operations << [:moved,
source_path, source_path,
self.path_of(target).map { |o| o[:name] } self.path_of(target_parent).map { |o| o[:name] } + [target[:name]]
] ]
if target[:parent] if target[:parent]
source[:parent] = running_source[target[:parent][:uid]] source[:parent] = running_source[target[:parent][:uid]]
Expand Down
27 changes: 27 additions & 0 deletions tests/test_operations.rb
Expand Up @@ -165,6 +165,33 @@ def test_reparent
TEST TEST
assert_equal [[:mv, 'folder/sous/truc', 'truc']], ops assert_equal [[:mv, 'folder/sous/truc', 'truc']], ops
end end
def test_reparent_under_file
ops = @fs.operations_if_edited_as <<-TEST
folder :0
sous :1
truc :2
truc.txt :3
TEST
assert_equal [[:mv, "folder/truc.txt", "folder/sous/truc.txt"]], ops
end
def test_reparent_under_file_at_root
ops = TestFS.new do
folder(0) {
file_one(1)
file_two(2)
file_three(3)
}
end.operations_if_edited_as <<-TEST
file_one :1
file_two :2
file_three :3
TEST
assert_equal [
[:mv, "folder/file_one", "file_one"],
[:mv, "folder/file_two", "file_two"],
[:mv, "folder/file_three", "file_three"],
], ops
end
def test_reparent_impact_on_mkdir def test_reparent_impact_on_mkdir
ops = @fs.operations_if_edited_as <<-TEST ops = @fs.operations_if_edited_as <<-TEST
folder :0 folder :0
Expand Down

0 comments on commit 200b5c0

Please sign in to comment.