From: Colin Nolan Date: Thu, 17 Sep 2015 10:45:43 +0000 (+0100) Subject: 7204: Setup for testing new `arg get` command. X-Git-Tag: 1.1.0~1309^2~13 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/ba0d6a92c642ca86dae5ab807b3ad7fe04e335d2 7204: Setup for testing new `arg get` command. --- diff --git a/sdk/cli/test/test_arv-get.rb b/sdk/cli/test/test_arv-get.rb index 5e58014cbf..869ea6d869 100644 --- a/sdk/cli/test/test_arv-get.rb +++ b/sdk/cli/test/test_arv-get.rb @@ -1,251 +1,24 @@ require 'minitest/autorun' -require 'digest/md5' +# Test for 'arv get' command. class TestArvGet < Minitest::Test + # Test setup. def setup - begin - Dir.mkdir './tmp' - rescue Errno::EEXIST - end - @@foo_manifest_locator ||= `echo -n foo | ./bin/arv-put --filename foo --no-progress -`.strip - @@baz_locator ||= `echo -n baz | ./bin/arv-put --as-raw --no-progress -`.strip - @@multilevel_manifest_locator ||= `echo ./foo/bar #{@@baz_locator} 0:3:baz | ./bin/arv-put --as-raw --no-progress -`.strip - end - - def test_no_args - out, err = capture_subprocess_io do - assert_arv_get false - end - assert_equal '', out - assert_match /^usage:/, err - end - - def test_help - out, err = capture_subprocess_io do - assert_arv_get '-h' - end - $stderr.write err - assert_equal '', err - assert_match /^usage:/, out - end - - def test_file_to_dev_stdout - test_file_to_stdout('/dev/stdout') - end - - def test_file_to_stdout(specify_stdout_as='-') - out, err = capture_subprocess_io do - assert_arv_get @@foo_manifest_locator + '/foo', specify_stdout_as - end - assert_equal '', err - assert_equal 'foo', out - end - - def test_file_to_file - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/foo' - end - assert_equal '', err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_file_to_file_no_overwrite_file - File.open './tmp/foo', 'wb' do |f| - f.write 'baz' - end - out, err = capture_subprocess_io do - assert_arv_get false, @@foo_manifest_locator + '/foo', 'tmp/foo' - end - assert_match /Local file tmp\/foo already exists/, err - assert_equal '', out - assert_equal 'baz', IO.read('tmp/foo') - end - - def test_file_to_file_no_overwrite_file_in_dir - File.open './tmp/foo', 'wb' do |f| - f.write 'baz' - end - out, err = capture_subprocess_io do - assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/' - end - assert_match /Local file tmp\/foo already exists/, err - assert_equal '', out - assert_equal 'baz', IO.read('tmp/foo') - end - - def test_file_to_file_force_overwrite - File.open './tmp/foo', 'wb' do |f| - f.write 'baz' - end - assert_equal 'baz', IO.read('tmp/foo') - out, err = capture_subprocess_io do - assert_arv_get '-f', @@foo_manifest_locator + '/', 'tmp/' - end - assert_match '', err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_file_to_file_skip_existing - File.open './tmp/foo', 'wb' do |f| - f.write 'baz' - end - assert_equal 'baz', IO.read('tmp/foo') - out, err = capture_subprocess_io do - assert_arv_get '--skip-existing', @@foo_manifest_locator + '/', 'tmp/' - end - assert_match '', err - assert_equal '', out - assert_equal 'baz', IO.read('tmp/foo') - end - - def test_file_to_dir - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/' - end - assert_equal '', err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_dir_to_file - out, err = capture_subprocess_io do - assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/foo' - end - assert_equal '', out - assert_match /^usage:/, err - end - - def test_dir_to_empty_string - out, err = capture_subprocess_io do - assert_arv_get false, @@foo_manifest_locator + '/', '' - end - assert_equal '', out - assert_match /^usage:/, err + # No setup required. end - def test_nonexistent_block + # Tests something... TODO. + def test_get_TODO out, err = capture_subprocess_io do - assert_arv_get false, 'e796ab2294f3e48ec709ffa8d6daf58c' + arv_get end - assert_equal '', out - assert_match /Error:/, err - end - def test_nonexistent_manifest - out, err = capture_subprocess_io do - assert_arv_get false, 'acbd18db4cc2f85cedef654fccc4a4d8/', 'tmp/' - end - assert_equal '', out - assert_match /Error:/, err - end - - def test_manifest_root_to_dir - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp/' - end - assert_equal '', err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_manifest_root_to_dir_noslash - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp' - end - assert_equal '', err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_display_md5sum - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get '-r', '--md5sum', @@foo_manifest_locator + '/', 'tmp/' - end - assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err - assert_equal '', out - assert_equal 'foo', IO.read('tmp/foo') - end - - def test_md5sum_nowrite - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get '-n', '--md5sum', @@foo_manifest_locator + '/', 'tmp/' - end - assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err - assert_equal '', out - assert_equal false, File.exists?('tmp/foo') - end - - def test_sha1_nowrite - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get '-n', '-r', '--hash', 'sha1', @@foo_manifest_locator+'/', 'tmp/' - end - assert_equal "#{Digest::SHA1.hexdigest('foo')} ./foo\n", err - assert_equal '', out - assert_equal false, File.exists?('tmp/foo') - end - - def test_block_to_file - remove_tmp_foo - out, err = capture_subprocess_io do - assert_arv_get @@foo_manifest_locator, 'tmp/foo' - end - assert_equal '', err - assert_equal '', out - - digest = Digest::MD5.hexdigest('foo') - !(IO.read('tmp/foo')).gsub!( /^(. #{digest}+3)(.*)( 0:3:foo)$/).nil? - end - - def test_create_directory_tree - `rm -rf ./tmp/arv-get-test/` - Dir.mkdir './tmp/arv-get-test' - out, err = capture_subprocess_io do - assert_arv_get @@multilevel_manifest_locator + '/', 'tmp/arv-get-test/' - end - assert_equal '', err - assert_equal '', out - assert_equal 'baz', IO.read('tmp/arv-get-test/foo/bar/baz') - end - - def test_create_partial_directory_tree - `rm -rf ./tmp/arv-get-test/` - Dir.mkdir './tmp/arv-get-test' - out, err = capture_subprocess_io do - assert_arv_get(@@multilevel_manifest_locator + '/foo/', - 'tmp/arv-get-test/') - end - assert_equal '', err - assert_equal '', out - assert_equal 'baz', IO.read('tmp/arv-get-test/bar/baz') + assert_empty err end protected - def assert_arv_get(*args) - expect = case args.first - when true, false - args.shift - else - true - end - assert_equal(expect, - system(['./bin/arv-get', 'arv-get'], *args), - "`arv-get #{args.join ' '}` " + - "should exit #{if expect then 0 else 'non-zero' end}") - end - - def remove_tmp_foo - begin - File.unlink('tmp/foo') - rescue Errno::ENOENT - end + # Runs 'arv get ' with given arguments. + def arv_get(*args) + system ['./bin/arv', 'arv get'], *args end end diff --git a/sdk/cli/test/test_arv-keep-get.rb b/sdk/cli/test/test_arv-keep-get.rb new file mode 100644 index 0000000000..0e578b8fb4 --- /dev/null +++ b/sdk/cli/test/test_arv-keep-get.rb @@ -0,0 +1,251 @@ +require 'minitest/autorun' +require 'digest/md5' + +class TestArvKeepGet < Minitest::Test + def setup + begin + Dir.mkdir './tmp' + rescue Errno::EEXIST + end + @@foo_manifest_locator ||= `echo -n foo | ./bin/arv-put --filename foo --no-progress -`.strip + @@baz_locator ||= `echo -n baz | ./bin/arv-put --as-raw --no-progress -`.strip + @@multilevel_manifest_locator ||= `echo ./foo/bar #{@@baz_locator} 0:3:baz | ./bin/arv-put --as-raw --no-progress -`.strip + end + + def test_no_args + out, err = capture_subprocess_io do + assert_arv_get false + end + assert_equal '', out + assert_match /^usage:/, err + end + + def test_help + out, err = capture_subprocess_io do + assert_arv_get '-h' + end + $stderr.write err + assert_equal '', err + assert_match /^usage:/, out + end + + def test_file_to_dev_stdout + test_file_to_stdout('/dev/stdout') + end + + def test_file_to_stdout(specify_stdout_as='-') + out, err = capture_subprocess_io do + assert_arv_get @@foo_manifest_locator + '/foo', specify_stdout_as + end + assert_equal '', err + assert_equal 'foo', out + end + + def test_file_to_file + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/foo' + end + assert_equal '', err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_file_to_file_no_overwrite_file + File.open './tmp/foo', 'wb' do |f| + f.write 'baz' + end + out, err = capture_subprocess_io do + assert_arv_get false, @@foo_manifest_locator + '/foo', 'tmp/foo' + end + assert_match /Local file tmp\/foo already exists/, err + assert_equal '', out + assert_equal 'baz', IO.read('tmp/foo') + end + + def test_file_to_file_no_overwrite_file_in_dir + File.open './tmp/foo', 'wb' do |f| + f.write 'baz' + end + out, err = capture_subprocess_io do + assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/' + end + assert_match /Local file tmp\/foo already exists/, err + assert_equal '', out + assert_equal 'baz', IO.read('tmp/foo') + end + + def test_file_to_file_force_overwrite + File.open './tmp/foo', 'wb' do |f| + f.write 'baz' + end + assert_equal 'baz', IO.read('tmp/foo') + out, err = capture_subprocess_io do + assert_arv_get '-f', @@foo_manifest_locator + '/', 'tmp/' + end + assert_match '', err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_file_to_file_skip_existing + File.open './tmp/foo', 'wb' do |f| + f.write 'baz' + end + assert_equal 'baz', IO.read('tmp/foo') + out, err = capture_subprocess_io do + assert_arv_get '--skip-existing', @@foo_manifest_locator + '/', 'tmp/' + end + assert_match '', err + assert_equal '', out + assert_equal 'baz', IO.read('tmp/foo') + end + + def test_file_to_dir + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/' + end + assert_equal '', err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_dir_to_file + out, err = capture_subprocess_io do + assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/foo' + end + assert_equal '', out + assert_match /^usage:/, err + end + + def test_dir_to_empty_string + out, err = capture_subprocess_io do + assert_arv_get false, @@foo_manifest_locator + '/', '' + end + assert_equal '', out + assert_match /^usage:/, err + end + + def test_nonexistent_block + out, err = capture_subprocess_io do + assert_arv_get false, 'e796ab2294f3e48ec709ffa8d6daf58c' + end + assert_equal '', out + assert_match /Error:/, err + end + + def test_nonexistent_manifest + out, err = capture_subprocess_io do + assert_arv_get false, 'acbd18db4cc2f85cedef654fccc4a4d8/', 'tmp/' + end + assert_equal '', out + assert_match /Error:/, err + end + + def test_manifest_root_to_dir + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp/' + end + assert_equal '', err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_manifest_root_to_dir_noslash + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp' + end + assert_equal '', err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_display_md5sum + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get '-r', '--md5sum', @@foo_manifest_locator + '/', 'tmp/' + end + assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err + assert_equal '', out + assert_equal 'foo', IO.read('tmp/foo') + end + + def test_md5sum_nowrite + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get '-n', '--md5sum', @@foo_manifest_locator + '/', 'tmp/' + end + assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err + assert_equal '', out + assert_equal false, File.exists?('tmp/foo') + end + + def test_sha1_nowrite + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get '-n', '-r', '--hash', 'sha1', @@foo_manifest_locator+'/', 'tmp/' + end + assert_equal "#{Digest::SHA1.hexdigest('foo')} ./foo\n", err + assert_equal '', out + assert_equal false, File.exists?('tmp/foo') + end + + def test_block_to_file + remove_tmp_foo + out, err = capture_subprocess_io do + assert_arv_get @@foo_manifest_locator, 'tmp/foo' + end + assert_equal '', err + assert_equal '', out + + digest = Digest::MD5.hexdigest('foo') + !(IO.read('tmp/foo')).gsub!( /^(. #{digest}+3)(.*)( 0:3:foo)$/).nil? + end + + def test_create_directory_tree + `rm -rf ./tmp/arv-get-test/` + Dir.mkdir './tmp/arv-get-test' + out, err = capture_subprocess_io do + assert_arv_get @@multilevel_manifest_locator + '/', 'tmp/arv-get-test/' + end + assert_equal '', err + assert_equal '', out + assert_equal 'baz', IO.read('tmp/arv-get-test/foo/bar/baz') + end + + def test_create_partial_directory_tree + `rm -rf ./tmp/arv-get-test/` + Dir.mkdir './tmp/arv-get-test' + out, err = capture_subprocess_io do + assert_arv_get(@@multilevel_manifest_locator + '/foo/', + 'tmp/arv-get-test/') + end + assert_equal '', err + assert_equal '', out + assert_equal 'baz', IO.read('tmp/arv-get-test/bar/baz') + end + + protected + def assert_arv_get(*args) + expect = case args.first + when true, false + args.shift + else + true + end + assert_equal(expect, + system(['./bin/arv-get', 'arv-get'], *args), + "`arv-get #{args.join ' '}` " + + "should exit #{if expect then 0 else 'non-zero' end}") + end + + def remove_tmp_foo + begin + File.unlink('tmp/foo') + rescue Errno::ENOENT + end + end +end diff --git a/sdk/cli/test/test_arv-put.rb b/sdk/cli/test/test_arv-keep-put.rb similarity index 99% rename from sdk/cli/test/test_arv-put.rb rename to sdk/cli/test/test_arv-keep-put.rb index 2f20e18440..fefbc27298 100644 --- a/sdk/cli/test/test_arv-put.rb +++ b/sdk/cli/test/test_arv-keep-put.rb @@ -1,7 +1,7 @@ require 'minitest/autorun' require 'digest/md5' -class TestArvPut < Minitest::Test +class TestArvKeepPut < Minitest::Test def setup begin Dir.mkdir './tmp' rescue Errno::EEXIST end begin Dir.mkdir './tmp/empty_dir' rescue Errno::EEXIST end