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_manifest
79 out, err = capture_subprocess_io do
80 assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6/', 'tmp/'
83 assert_match /^ERROR:/, err
86 def test_manifest_root_to_dir
88 out, err = capture_subprocess_io do
89 assert_arv_get '-r', @@foo_manifest_locator + '/', 'tmp/'
93 assert_equal 'foo', IO.read('tmp/foo')
96 def test_manifest_root_to_dir_noslash
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_display_md5sum
108 out, err = capture_subprocess_io do
109 assert_arv_get '-r', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
111 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
113 assert_equal 'foo', IO.read('tmp/foo')
116 def test_md5sum_nowrite
118 out, err = capture_subprocess_io do
119 assert_arv_get '-n', '--md5sum', @@foo_manifest_locator + '/', 'tmp/'
121 assert_equal "#{Digest::MD5.hexdigest('foo')} ./foo\n", err
123 assert_equal false, File.exists?('tmp/foo')
126 def test_sha1_nowrite
128 out, err = capture_subprocess_io do
129 assert_arv_get '-n', '-r', '--hash', 'sha1', @@foo_manifest_locator+'/', 'tmp/'
131 assert_equal "#{Digest::SHA1.hexdigest('foo')} ./foo\n", err
133 assert_equal false, File.exists?('tmp/foo')
136 def test_block_to_file
138 out, err = capture_subprocess_io do
139 assert_arv_get @@foo_manifest_locator, 'tmp/foo'
143 assert_equal foo_manifest, IO.read('tmp/foo')
146 def test_create_directory_tree
147 `rm -rf ./tmp/arv-get-test/`
148 Dir.mkdir './tmp/arv-get-test'
149 out, err = capture_subprocess_io do
150 assert_arv_get @@multilevel_manifest_locator + '/', 'tmp/arv-get-test/'
154 assert_equal 'baz', IO.read('tmp/arv-get-test/foo/bar/baz')
157 def test_create_partial_directory_tree
158 `rm -rf ./tmp/arv-get-test/`
159 Dir.mkdir './tmp/arv-get-test'
160 out, err = capture_subprocess_io do
161 assert_arv_get(@@multilevel_manifest_locator + '/foo/',
166 assert_equal 'baz', IO.read('tmp/arv-get-test/bar/baz')
170 def assert_arv_get(*args)
171 expect = case args.first
178 system(['./bin/arv-get', 'arv-get'], *args),
179 "`arv-get #{args.join ' '}` " +
180 "should exit #{if expect then 0 else 'non-zero' end}")
184 ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
189 File.unlink('tmp/foo')