summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/obj/test_diskfile.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/unit/obj/test_diskfile.py b/test/unit/obj/test_diskfile.py
index eab8ebf..72db849 100644
--- a/test/unit/obj/test_diskfile.py
+++ b/test/unit/obj/test_diskfile.py
@@ -1142,3 +1142,31 @@ class TestDiskFile(unittest.TestCase):
self.assertFalse(_m_do_fchown.called)
assert os.path.exists(gdf._data_file)
assert not os.path.exists(tmppath)
+
+ def test_unlink_not_called_on_non_existent_object(self):
+ # Create container dir
+ cpath = os.path.join(self.td, "vol0", "container")
+ os.makedirs(cpath)
+ self.assertTrue(os.path.exists(cpath))
+
+ # This file does not exist
+ obj_path = os.path.join(cpath, "object")
+ self.assertFalse(os.path.exists(obj_path))
+
+ # Create diskfile instance and check attribute initialization
+ gdf = self._get_diskfile("vol0", "p57", "ufo47", "container", "object")
+ assert gdf._obj == "object"
+ assert gdf._data_file == obj_path
+ self.assertFalse(gdf._disk_file_does_not_exist)
+
+ # Simulate disk file call sequence issued during DELETE request.
+ # And confirm that read_metadata() and unlink() is not called.
+ self.assertRaises(DiskFileNotExist, gdf.read_metadata)
+ self.assertTrue(gdf._disk_file_does_not_exist)
+ _m_rmd = Mock()
+ _m_do_unlink = Mock()
+ with patch("gluster.swift.obj.diskfile.read_metadata", _m_rmd):
+ with patch("gluster.swift.obj.diskfile.do_unlink", _m_do_unlink):
+ gdf.delete(0)
+ self.assertFalse(_m_rmd.called)
+ self.assertFalse(_m_do_unlink.called)