1 require 'minitest/autorun'
4 class TestArvPut < Minitest::Test
8 Dir.mkdir './tmp/empty_dir'
11 File.open './tmp/empty_file', 'wb' do
13 File.open './tmp/foo', 'wb' do |f|
19 out, err = capture_subprocess_io do
20 assert_equal(true, arv_put('-h'),
21 'arv-put -h exits zero')
25 assert_match /^usage:/, out
28 def test_filename_arg_with_directory
29 out, err = capture_subprocess_io do
30 assert_equal(false, arv_put('--filename', 'foo', './tmp/empty_dir/.'),
31 'arv-put --filename refuses directory')
33 assert_match /^usage:.*error:/m, err
37 def test_filename_arg_with_multiple_files
38 out, err = capture_subprocess_io do
39 assert_equal(false, arv_put('--filename', 'foo',
42 'arv-put --filename refuses directory')
44 assert_match /^usage:.*error:/m, err
48 def test_filename_arg_with_empty_file
49 out, err = capture_subprocess_io do
50 assert_equal true, arv_put('--filename', 'foo', './tmp/empty_file')
54 assert_equal "aa4f15cbf013142a7d98b1e273f9c661+45\n", out
58 out, err = capture_subprocess_io do
59 assert_equal true, arv_put('--as-stream', './tmp/foo')
63 assert_equal foo_manifest, out
67 out, err = capture_subprocess_io do
68 assert_equal true, arv_put('--manifest', '--progress', './tmp/foo')
71 assert_equal foo_manifest_locator+"\n", out
74 def test_batch_progress
75 out, err = capture_subprocess_io do
76 assert_equal true, arv_put('--manifest', '--batch-progress', './tmp/foo')
78 assert_match /: 0 written 3 total/, err
79 assert_match /: 3 written 3 total/, err
80 assert_equal foo_manifest_locator+"\n", out
83 def test_progress_and_batch_progress
84 out, err = capture_subprocess_io do
86 arv_put('--progress', '--batch-progress', './tmp/foo'),
87 'arv-put --progress --batch-progress is contradictory')
89 assert_match /^usage:.*error:/m, err
93 def test_read_from_implicit_stdin
94 test_read_from_stdin(specify_stdin_as='--manifest')
97 def test_read_from_dev_stdin
98 test_read_from_stdin(specify_stdin_as='/dev/stdin')
101 def test_read_from_stdin(specify_stdin_as='-')
102 out, err = capture_subprocess_io do
109 assert_equal true, arv_put('--filename', 'foo', specify_stdin_as,
116 assert_equal foo_manifest_locator+"\n", out
121 system ['./bin/arv-put', 'arv-put'], *args
125 ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
128 def foo_manifest_locator
129 Digest::MD5.hexdigest(foo_manifest) + "+#{foo_manifest.length}"