1 require 'minitest/autorun'
4 class TestArvGet < Minitest::Test
10 @@foo_manifest_locator ||= `echo -n foo | ./bin/arv-put --filename foo --no-progress -`.strip
11 @@baz_locator ||= `echo -n baz | ./bin/arv-put --as-raw --no-progress -`.strip
12 @@multilevel_manifest_locator ||= `echo ./foo/bar #{@@baz_locator} 0:3:baz | ./bin/arv-put --as-raw --no-progress -`.strip
16 out, err = capture_subprocess_io do
20 assert_match /^usage:/, err
24 out, err = capture_subprocess_io do
29 assert_match /^usage:/, out
32 def test_file_to_dev_stdout
33 test_file_to_stdout('/dev/stdout')
36 def test_file_to_stdout(specify_stdout_as='-')
37 out, err = capture_subprocess_io do
38 assert_arv_get @@foo_manifest_locator + '/foo', specify_stdout_as
41 assert_equal 'foo', out
46 out, err = capture_subprocess_io do
47 assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/foo'
51 assert_equal 'foo', IO.read('tmp/foo')
56 out, err = capture_subprocess_io do
57 assert_arv_get @@foo_manifest_locator + '/foo', 'tmp/'
61 assert_equal 'foo', IO.read('tmp/foo')
65 out, err = capture_subprocess_io do
66 assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/foo'
69 assert_match /^usage:/, err
72 def test_dir_to_empty_string
73 out, err = capture_subprocess_io do
74 assert_arv_get false, @@foo_manifest_locator + '/', ''
77 assert_match /^usage:/, err
80 def test_nonexistent_block
81 out, err = capture_subprocess_io do
82 assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6'
85 assert_match /^ERROR:/, err
88 def test_nonexistent_manifest
89 out, err = capture_subprocess_io do
90 assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6/', 'tmp/'
93 assert_match /^ERROR:/, err
96 def test_manifest_root_to_dir
98 out, err = capture_subprocess_io do
99 assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp/'
103 assert_equal 'foo', IO.read('tmp/foo')
106 def test_manifest_root_to_dir_noslash
108 out, err = capture_subprocess_io do
109 assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp'
113 assert_equal 'foo', IO.read('tmp/foo')
116 def test_display_md5sum
118 out, err = capture_subprocess_io do
119 assert_arv_get '-r', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
121 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
123 assert_equal 'foo', IO.read('tmp/foo')
126 def test_md5sum_nowrite
128 out, err = capture_subprocess_io do
129 assert_arv_get '-n', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
131 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
133 assert_equal false, File.exists?('tmp/foo')
136 def test_sha1_nowrite
138 out, err = capture_subprocess_io do
139 assert_arv_get '-n', '-r', '--hash', 'sha1', @@foo_manifest_locator+'/', 'tmp/'
141 assert_equal "#{Digest::SHA1.hexdigest('foo')} ./foo\n", err
143 assert_equal false, File.exists?('tmp/foo')
146 def test_block_to_file
148 out, err = capture_subprocess_io do
149 assert_arv_get @@foo_manifest_locator, 'tmp/foo'
153 assert_equal foo_manifest, IO.read('tmp/foo')
156 def test_create_directory_tree
157 `rm -rf ./tmp/arv-get-test/`
158 Dir.mkdir './tmp/arv-get-test'
159 out, err = capture_subprocess_io do
160 assert_arv_get @@multilevel_manifest_locator + '/', 'tmp/arv-get-test/'
164 assert_equal 'baz', IO.read('tmp/arv-get-test/foo/bar/baz')
167 def test_create_partial_directory_tree
168 `rm -rf ./tmp/arv-get-test/`
169 Dir.mkdir './tmp/arv-get-test'
170 out, err = capture_subprocess_io do
171 assert_arv_get(@@multilevel_manifest_locator + '/foo/',
176 assert_equal 'baz', IO.read('tmp/arv-get-test/bar/baz')
180 def assert_arv_get(*args)
181 expect = case args.first
188 system(['./bin/arv-get', 'arv-get'], *args),
189 "`arv-get #{args.join ' '}` " +
190 "should exit #{if expect then 0 else 'non-zero' end}")
194 ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
199 File.unlink('tmp/foo')