From dc0fa66e56a271f4de431ecfc909686d27d73f78 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 6 Jun 2012 02:10:52 +0000 Subject: exist?(dkey) raises on real errors Specifying an invalid domain will raise MogileFS::Backend::UnregDomain error instead of merely returning `false'. Only checks for keys in the correct domain (but non-existent keys) return false. --- lib/mogilefs/mogilefs.rb | 9 ++++++++- test/test_fresh.rb | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index ba8de2c..eccca78 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -140,7 +140,14 @@ class MogileFS::MogileFS < MogileFS::Client # Returns +true+ if +key+ exists, +false+ if not def exist?(key) args = { :key => key, :domain => @domain , :ruby_no_raise => true} - Hash === @backend.get_paths(args) + case rv = @backend.get_paths(args) + when Hash + true + when MogileFS::Backend::UnknownKeyError + false + else + raise rv + end end # Get the URIs for +key+ (paths) as URI::HTTP objects diff --git a/test/test_fresh.rb b/test/test_fresh.rb index b7882cd..41c30ef 100644 --- a/test/test_fresh.rb +++ b/test/test_fresh.rb @@ -14,4 +14,16 @@ class TestMogFresh < Test::Unit::TestCase client.list_keys end end + + def test_invalid_key_exists + add_host_device_domain + domain = @domain + ".non-existent" + client = MogileFS::MogileFS.new :hosts => @hosts, :domain => domain + assert_raises(MogileFS::Backend::UnregDomainError) do + client.exist?("FOO") + end + + client = MogileFS::MogileFS.new :hosts => @hosts, :domain => @domain + assert_equal false, client.exist?("non-existent") + end end -- cgit v1.2.3-24-ge0c7