X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0eb72b526bf8bbb011551ecf019f604e17a534f1..a50fab63068c1e8d67ce1d477c6f2c2429464b5c:/sdk/ruby/test/test_collection.rb diff --git a/sdk/ruby/test/test_collection.rb b/sdk/ruby/test/test_collection.rb index f34e58a6b5..29ec6d418c 100644 --- a/sdk/ruby/test/test_collection.rb +++ b/sdk/ruby/test/test_collection.rb @@ -15,6 +15,10 @@ class CollectionTest < Minitest::Test "./s1 #{TWO_BY_TWO_BLOCKS.last} 0:5:f1 5:4:f3\n"] TWO_BY_TWO_MANIFEST_S = TWO_BY_TWO_MANIFEST_A.join("") + def abcde_blocks + ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+9", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb+9", "cccccccccccccccccccccccccccccccc+9", "dddddddddddddddddddddddddddddddd+9", "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee+9"] + end + ### .new def test_empty_construction @@ -145,12 +149,12 @@ class CollectionTest < Minitest::Test test_normalization_file_spans_two_whole_blocks("2:3:f1 2:3:f1", 1) end - def test_normalization_dedups_locators + def test_normalization_handles_duplicate_locator blocks = random_blocks(2, 5) coll = Arv::Collection.new(". %s %s 1:8:f1 11:8:f1\n" % [blocks.join(" "), blocks.reverse.join(" ")]) coll.normalize - assert_equal(". #{blocks.join(' ')} 1:8:f1 6:4:f1 0:4:f1\n", + assert_equal(". #{blocks.join(' ')} #{blocks[0]} 1:8:f1 6:8:f1\n", coll.manifest_text) end @@ -385,6 +389,36 @@ 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_with_repeated_blocks + blocks = abcde_blocks + src_coll = Arv::Collection.new(". #{blocks[0]} #{blocks[1]} #{blocks[2]} #{blocks[0]} #{blocks[1]} #{blocks[2]} #{blocks[3]} #{blocks[4]} 27:27:f1\n") + dst_coll = Arv::Collection.new() + dst_coll.cp_r("f1", "./", src_coll) + toks = dst_coll.manifest_text.split(" ") + assert_equal(". #{blocks[0]} #{blocks[1]} #{blocks[2]} 0:27:f1\n", dst_coll.manifest_text, "mangled by cp_r") + end + + def test_copy_with_repeated_split_blocks + blocks = abcde_blocks + src_coll = Arv::Collection.new(". #{blocks[0]} #{blocks[1]} #{blocks[2]} #{blocks[0]} #{blocks[1]} #{blocks[2]} #{blocks[3]} #{blocks[4]} 20:27:f1\n") + dst_coll = Arv::Collection.new() + src_coll.normalize + assert_equal(". #{blocks[2]} #{blocks[0]} #{blocks[1]} #{blocks[2]} 2:27:f1\n", src_coll.manifest_text, "mangled by normalize()") + dst_coll.cp_r("f1", "./", src_coll) + toks = dst_coll.manifest_text.split(" ") + assert_equal(". #{blocks[2]} #{blocks[0]} #{blocks[1]} #{blocks[2]} 2:27:f1\n", dst_coll.manifest_text, "mangled by cp_r") + end + def test_copy_empty_source_path_raises_ArgumentError(src="", dst="./s1") coll = Arv::Collection.new(SIMPLEST_MANIFEST) assert_raises(ArgumentError) do