Merge pull request #2462 from longjon/correct-python-exceptions
authorEvan Shelhamer <shelhamer@imaginarynumber.net>
Thu, 6 Aug 2015 07:27:59 +0000 (00:27 -0700)
committerEvan Shelhamer <shelhamer@imaginarynumber.net>
Thu, 6 Aug 2015 07:27:59 +0000 (00:27 -0700)
Handle Python layer exceptions correctly

1  2 
python/caffe/test/test_python_layer.py
tools/caffe.cpp

@@@ -22,8 -21,15 +22,15 @@@ class SimpleLayer(caffe.Layer)
          bottom[0].diff[...] = 10 * top[0].diff
  
  
+ class ExceptionLayer(caffe.Layer):
+     """A layer for checking exceptions from Python"""
+     def setup(self, bottom, top):
+         raise RuntimeError
  def python_net_file():
 -    with tempfile.NamedTemporaryFile(delete=False) as f:
 +    with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f:
          f.write("""name: 'pythonnet' force_backward: true
          input: 'data' input_shape { dim: 10 dim: 9 dim: 8 }
          layer { type: 'Python' name: 'one' bottom: 'data' top: 'one'
@@@ -59,6 -75,11 +76,11 @@@ class TestPythonLayer(unittest.TestCase
          s = 4
          self.net.blobs['data'].reshape(s, s, s, s)
          self.net.forward()
 -        for blob in self.net.blobs.itervalues():
 +        for blob in six.itervalues(self.net.blobs):
              for d in blob.data.shape:
                  self.assertEqual(s, d)
+     def test_exception(self):
+         net_file = exception_net_file()
+         self.assertRaises(RuntimeError, caffe.Net, net_file, caffe.TEST)
+         os.remove(net_file)
diff --cc tools/caffe.cpp
Simple merge