diff options
author | Josh Durgin <josh.durgin@inktank.com> | 2013-08-14 15:50:59 -0700 |
---|---|---|
committer | Josh Durgin <josh.durgin@inktank.com> | 2013-08-14 16:07:52 -0700 |
commit | 4422f21a6586467a63ce6841552d0f60aa849cf1 (patch) | |
tree | 31b01af94c76588ab6bc1dd247c5c68900b518c1 | |
parent | 34da9cbc33205623cf64aee1989f53dfb2c5bddd (diff) | |
download | ceph-4422f21a6586467a63ce6841552d0f60aa849cf1.tar.gz |
rados.py: fix Rados() unicode checking
Check new parameters and check that rados_id is not None again to
catch the empty string.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Reviewed-by: Sage Weil <sage.weil@inktank.com>
-rw-r--r-- | src/pybind/rados.py | 6 | ||||
-rw-r--r-- | src/test/pybind/test_rados.py | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/pybind/rados.py b/src/pybind/rados.py index 34d83c7b353..7768f8c39d3 100644 --- a/src/pybind/rados.py +++ b/src/pybind/rados.py @@ -187,10 +187,14 @@ Rados object in state %s." % (self.state)) self.librados = CDLL('librados.so.2') self.cluster = c_void_p() self.rados_id = rados_id - if rados_id and not isinstance(rados_id, str): + if rados_id is not None and not isinstance(rados_id, str): raise TypeError('rados_id must be a string or None') if conffile is not None and not isinstance(conffile, str): raise TypeError('conffile must be a string or None') + if name is not None and not isinstance(name, str): + raise TypeError('name must be a string or None') + if clustername is not None and not isinstance(clustername, str): + raise TypeError('clustername must be a string or None') if rados_id and name: raise Error("Rados(): can't supply both rados_id and name") if rados_id: diff --git a/src/test/pybind/test_rados.py b/src/test/pybind/test_rados.py index 019a86c2763..4628a44a652 100644 --- a/src/test/pybind/test_rados.py +++ b/src/test/pybind/test_rados.py @@ -11,6 +11,16 @@ def test_rados_init_error(): assert_raises(Error, Rados, conffile='', name='invalid') assert_raises(Error, Rados, conffile='', name='bad.invalid') +def test_rados_init_type_error(): + assert_raises(TypeError, Rados, rados_id=u'admin') + assert_raises(TypeError, Rados, rados_id=u'') + assert_raises(TypeError, Rados, name=u'client.admin') + assert_raises(TypeError, Rados, name=u'') + assert_raises(TypeError, Rados, conffile=u'blah') + assert_raises(TypeError, Rados, conffile=u'') + assert_raises(TypeError, Rados, clusternaem=u'blah') + assert_raises(TypeError, Rados, clustername=u'') + def test_rados_init(): with Rados(conffile='', rados_id='admin'): pass |