X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/552e26d7f7e2e7bf1c994d8f5da771f6f88655d6..b1aa428167b50c40d64253a8faf4f0783759dca7:/sdk/ruby/test/test_collection.rb?ds=sidebyside diff --git a/sdk/ruby/test/test_collection.rb b/sdk/ruby/test/test_collection.rb index a6aa1cf48b..e2a39bc5ed 100644 --- a/sdk/ruby/test/test_collection.rb +++ b/sdk/ruby/test/test_collection.rb @@ -223,13 +223,17 @@ class CollectionTest < Minitest::Test assert_equal(expected.join(""), coll.manifest_text) end - def test_copy_stream_over_file_raises_ENOTDIR + def test_copy_stream_over_file_raises_ENOTDIR(source="./s1", target="./f2") coll = Arv::Collection.new(TWO_BY_TWO_MANIFEST_S) assert_raises(Errno::ENOTDIR) do - coll.cp_r("./s1", "./f2") + coll.cp_r(source, target) end end + def test_copy_file_under_file_raises_ENOTDIR + test_copy_stream_over_file_raises_ENOTDIR("./f1", "./f2/newfile") + end + def test_copy_stream_over_nonempty_stream_merges_and_overwrites blocks = random_blocks(3, 9) manifest_a = @@ -323,6 +327,20 @@ class CollectionTest < Minitest::Test assert_equal(expect_lines.join(""), coll.manifest_text) end + def test_copy_file_into_new_stream_with_implicit_filename + coll = Arv::Collection.new(SIMPLEST_MANIFEST) + coll.cp_r("./simple.txt", "./new/") + assert_equal(SIMPLEST_MANIFEST + SIMPLEST_MANIFEST.sub(". ", "./new "), + coll.manifest_text) + end + + def test_copy_file_into_new_stream_with_explicit_filename + coll = Arv::Collection.new(SIMPLEST_MANIFEST) + coll.cp_r("./simple.txt", "./new/newfile.txt") + new_line = SIMPLEST_MANIFEST.sub(". ", "./new ").sub(":simple", ":newfile") + assert_equal(SIMPLEST_MANIFEST + new_line, coll.manifest_text) + end + def test_copy_stream_contents_into_root coll = Arv::Collection.new(TWO_BY_TWO_MANIFEST_S) coll.cp_r("./s1/", ".") @@ -374,6 +392,40 @@ class CollectionTest < Minitest::Test test_copy_empty_source_path_raises_ArgumentError(".", "") end + ### .each_file_path + + def test_each_file_path + coll = Arv::Collection.new(TWO_BY_TWO_MANIFEST_S) + if block_given? + result = yield(coll) + else + result = [] + coll.each_file_path { |path| result << path } + end + assert_equal(["./f1", "./f2", "./s1/f1", "./s1/f3"], result.sort) + end + + def test_each_file_path_without_block + test_each_file_path { |coll| coll.each_file_path.to_a } + end + + def test_each_file_path_empty_collection + assert_empty(Arv::Collection.new.each_file_path.to_a) + end + + def test_each_file_path_after_collection_emptied + coll = Arv::Collection.new(SIMPLEST_MANIFEST) + coll.rm("simple.txt") + assert_empty(coll.each_file_path.to_a) + end + + def test_each_file_path_deduplicates_manifest_listings + coll = Arv::Collection.new(MULTIBLOCK_FILE_MANIFEST) + assert_equal(["./repfile", "./s1/repfile", "./s1/uniqfile", + "./uniqfile", "./uniqfile2"], + coll.each_file_path.to_a.sort) + end + ### .exist? def test_exist(test_method=:assert, path="f2") @@ -394,7 +446,7 @@ class CollectionTest < Minitest::Test end def test_path_inside_stream_not_exist - test_exist(:refute, "s1/nonexistent") + test_exist(:refute, "s1/f2") end def test_path_under_file_not_exist