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(false, arv_put,
21 'arv-put without args exits non-zero')
24 assert_match /^usage:/, err
28 out, err = capture_subprocess_io do
29 assert_equal(true, arv_put('-h'),
30 'arv-put -h exits zero')
34 assert_match /^usage:/, out
37 def test_filename_arg_with_directory
38 out, err = capture_subprocess_io do
39 assert_equal(false, arv_put('--filename', 'foo', './tmp/empty_dir/.'),
40 'arv-put --filename refuses directory')
42 assert_match /^usage:.*error:/m, err
46 def test_filename_arg_with_multiple_files
47 out, err = capture_subprocess_io do
48 assert_equal(false, arv_put('--filename', 'foo',
51 'arv-put --filename refuses directory')
53 assert_match /^usage:.*error:/m, err
57 def test_filename_arg_with_empty_file
58 out, err = capture_subprocess_io do
59 assert_equal true, arv_put('--filename', 'foo', './tmp/empty_file')
63 assert_equal "aa4f15cbf013142a7d98b1e273f9c661+45\n", out
67 out, err = capture_subprocess_io do
68 assert_equal true, arv_put('--as-stream', './tmp/foo')
72 assert_equal foo_manifest, out
76 out, err = capture_subprocess_io do
77 assert_equal true, arv_put('--progress', './tmp/foo')
80 assert_equal foo_manifest_locator+"\n", out
83 def test_batch_progress
84 out, err = capture_subprocess_io do
85 assert_equal true, arv_put('--batch-progress', './tmp/foo')
87 assert_match /: 0 written 3 total/, err
88 assert_match /: 3 written 3 total/, err
89 assert_equal foo_manifest_locator+"\n", out
92 def test_progress_and_batch_progress
93 out, err = capture_subprocess_io do
95 arv_put('--progress', '--batch-progress', './tmp/foo'),
96 'arv-put --progress --batch-progress is contradictory')
98 assert_match /^usage:.*error:/m, err
102 def test_read_from_dev_stdin
103 test_read_from_stdin(specify_stdin_as='/dev/stdin')
106 def test_read_from_stdin(specify_stdin_as='-')
107 out, err = capture_subprocess_io do
114 assert_equal true, arv_put('--filename', 'foo', specify_stdin_as,
121 assert_equal foo_manifest_locator+"\n", out
126 system ['./bin/arv-put', 'arv-put'], *args
130 ". #{Digest::MD5.hexdigest('foo')}+3 0:3:foo\n"
133 def foo_manifest_locator
134 Digest::MD5.hexdigest(foo_manifest) + "+#{foo_manifest.length}"