From 338ab239adbc259d5cd070158b4e571925b9f81b Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Fri, 1 Mar 2019 15:51:08 -0500 Subject: [PATCH] 14870: Ruby SDK fix for copying collection into root of an empty collection Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- sdk/ruby/lib/arvados/collection.rb | 10 +++++++++- sdk/ruby/test/test_collection.rb | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/sdk/ruby/lib/arvados/collection.rb b/sdk/ruby/lib/arvados/collection.rb index 6cc3072b77..f236ce83a3 100644 --- a/sdk/ruby/lib/arvados/collection.rb +++ b/sdk/ruby/lib/arvados/collection.rb @@ -369,7 +369,11 @@ module Arv end def add_copy(src_item, key) - self[key] = src_item.copy_named("#{path}/#{key}") + if key == "." + self[key] = src_item.copy_named("#{path}") + else + self[key] = src_item.copy_named("#{path}/#{key}") + end end def merge(src_item, key) @@ -457,6 +461,10 @@ module Arv items["."] = CollectionStream.new(".") end + def add_copy(src_item, key) + items["."].add_copy(src_item, key) + end + def raise_root_write_error(key) raise ArgumentError.new("can't write to %p at collection root" % key) end diff --git a/sdk/ruby/test/test_collection.rb b/sdk/ruby/test/test_collection.rb index f34e58a6b5..288fd263fa 100644 --- a/sdk/ruby/test/test_collection.rb +++ b/sdk/ruby/test/test_collection.rb @@ -385,6 +385,16 @@ class CollectionTest < Minitest::Test dst_coll.manifest_text) end + def test_copy_root_into_empty_collection + block = random_block(8) + src_coll = Arv::Collection.new(". #{block} 0:8:f1\n") + dst_coll = Arv::Collection.new() + dst_coll.cp_r("./", ".", src_coll) + assert_equal(". %s 0:8:f1\n" % + [block], + dst_coll.manifest_text) + end + def test_copy_empty_source_path_raises_ArgumentError(src="", dst="./s1") coll = Arv::Collection.new(SIMPLEST_MANIFEST) assert_raises(ArgumentError) do -- 2.30.2