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')
55 out, err = capture_subprocess_io do
56 assert_arv_get false, @@foo_manifest_locator + '/foo', 'tmp/'
59 assert_match /^usage:/, err
63 out, err = capture_subprocess_io do
64 assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/foo'
67 assert_match /^usage:/, err
70 def test_dir_to_empty_string
71 out, err = capture_subprocess_io do
72 assert_arv_get false, @@foo_manifest_locator + '/', ''
75 assert_match /^usage:/, err
78 def test_nonexistent_block
79 out, err = capture_subprocess_io do
80 assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6'
83 assert_match /^ERROR:/, err
86 def test_nonexistent_manifest
87 out, err = capture_subprocess_io do
88 assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6/', 'tmp/'
91 assert_match /^ERROR:/, err
94 def test_manifest_root_to_dir
96 out, err = capture_subprocess_io do
97 assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp/'
101 assert_equal 'foo', IO.read('tmp/foo')
104 def test_manifest_root_to_dir_noslash
106 out, err = capture_subprocess_io do
107 assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp'
111 assert_equal 'foo', IO.read('tmp/foo')
114 def test_display_md5sum
116 out, err = capture_subprocess_io do
117 assert_arv_get '-r', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
119 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
121 assert_equal 'foo', IO.read('tmp/foo')
124 def test_md5sum_nowrite
126 out, err = capture_subprocess_io do
127 assert_arv_get '-n', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
129 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
131 assert_equal false, File.exists?('tmp/foo')
134 def test_sha1_nowrite
136 out, err = capture_subprocess_io do
137 assert_arv_get '-n', '-r', '--hash', 'sha1', @@foo_manifest_locator+'/', 'tmp/'
139 assert_equal "#{Digest::SHA1.hexdigest('foo')} ./foo\n", err
141 assert_equal false, File.exists?('tmp/foo')
144 def test_block_to_file
146 out, err = capture_subprocess_io do
147 assert_arv_get @@foo_manifest_locator, 'tmp/foo'
151 assert_equal foo_manifest, IO.read('tmp/foo')
154 def test_create_directory_tree
155 `rm -rf ./tmp/arv-get-test/`
156 Dir.mkdir './tmp/arv-get-test'
157 out, err = capture_subprocess_io do
158 assert_arv_get @@multilevel_manifest_locator + '/', 'tmp/arv-get-test/'
162 assert_equal 'baz', IO.read('tmp/arv-get-test/foo/bar/baz')
165 def test_create_partial_directory_tree
166 `rm -rf ./tmp/arv-get-test/`
167 Dir.mkdir './tmp/arv-get-test'
168 out, err = capture_subprocess_io do
169 assert_arv_get(@@multilevel_manifest_locator + '/foo/',
174 assert_equal 'baz', IO.read('tmp/arv-get-test/bar/baz')
178 def assert_arv_get(*args)
179 expect = case args.first
186 system(['./bin/arv-get', 'arv-get'], *args),
187 "`arv-get #{args.join ' '}` " +
188 "should exit #{if expect then 0 else 'non-zero' end}")
192 ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
197 File.unlink('tmp/foo')