Fail gracefully when fetching a raw block that does not exist
authorTom Clegg <tom@clinicalfuture.com>
Mon, 9 Dec 2013 20:45:00 +0000 (12:45 -0800)
committerTom Clegg <tom@clinicalfuture.com>
Mon, 9 Dec 2013 20:45:00 +0000 (12:45 -0800)
sdk/cli/bin/arv-get
sdk/cli/test/test_arv-get.rb

index 10c05cc6714d0126319dc5379824e8e7de31baab..e994ef9a2f4f58d9cc49e086f68f4098f43db407 100755 (executable)
@@ -95,10 +95,14 @@ if args.r and not get_prefix:
 todo = []
 todo_bytes = 0
 if not get_prefix:
-    if not args.n:
-        with open(args.destination, 'wb') as f:
-            f.write(arvados.Keep.get(collection))
-    sys.exit(0)
+    try:
+        if not args.n:
+            with open(args.destination, 'wb') as f:
+                f.write(arvados.Keep.get(collection))
+        sys.exit(0)
+    except arvados.errors.NotFoundError as e:
+        logger.error(e)
+        sys.exit(1)
 
 reader = arvados.CollectionReader(collection)
 
index 52a9cd15521f3beae140d82132bf7d82118af405..c5519a90640f05a98cc1ff9f7d1a56fe5acb49ee 100644 (file)
@@ -75,6 +75,14 @@ class TestArvGet < Minitest::Test
     assert_match /^usage:/, err
   end
 
+  def test_nonexistent_block
+    out, err = capture_subprocess_io do
+      assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6'
+    end
+    assert_equal '', out
+    assert_match /^ERROR:/, err
+  end
+
   def test_nonexistent_manifest
     out, err = capture_subprocess_io do
       assert_arv_get false, 'f1554a91e925d6213ce7c3103c5110c6/', 'tmp/'