@@ -1490,6 +1490,7 @@ def test_delete_w_force_w_user_project_w_miss_on_blob(self):
1490
1490
bucket .delete_blob .assert_called_once_with (
1491
1491
blob_name ,
1492
1492
client = client ,
1493
+ generation = None ,
1493
1494
if_generation_match = None ,
1494
1495
if_generation_not_match = None ,
1495
1496
if_metageneration_match = None ,
@@ -1649,6 +1650,7 @@ def test_delete_blobs_hit_w_explicit_client_w_timeout(self):
1649
1650
bucket .delete_blob .assert_called_once_with (
1650
1651
blob_name ,
1651
1652
client = client ,
1653
+ generation = None ,
1652
1654
if_generation_match = None ,
1653
1655
if_generation_not_match = None ,
1654
1656
if_metageneration_match = None ,
@@ -1693,6 +1695,7 @@ def test_delete_blobs_w_generation_match_w_retry(self):
1693
1695
call_1 = mock .call (
1694
1696
blob_name ,
1695
1697
client = None ,
1698
+ generation = None ,
1696
1699
if_generation_match = generation_number ,
1697
1700
if_generation_not_match = None ,
1698
1701
if_metageneration_match = None ,
@@ -1703,6 +1706,7 @@ def test_delete_blobs_w_generation_match_w_retry(self):
1703
1706
call_2 = mock .call (
1704
1707
blob_name2 ,
1705
1708
client = None ,
1709
+ generation = None ,
1706
1710
if_generation_match = generation_number2 ,
1707
1711
if_generation_not_match = None ,
1708
1712
if_metageneration_match = None ,
@@ -1730,6 +1734,7 @@ def test_delete_blobs_w_generation_match_none(self):
1730
1734
call_1 = mock .call (
1731
1735
blob_name ,
1732
1736
client = None ,
1737
+ generation = None ,
1733
1738
if_generation_match = generation_number ,
1734
1739
if_generation_not_match = None ,
1735
1740
if_metageneration_match = None ,
@@ -1740,6 +1745,7 @@ def test_delete_blobs_w_generation_match_none(self):
1740
1745
call_2 = mock .call (
1741
1746
blob_name2 ,
1742
1747
client = None ,
1748
+ generation = None ,
1743
1749
if_generation_match = None ,
1744
1750
if_generation_not_match = None ,
1745
1751
if_metageneration_match = None ,
@@ -1749,6 +1755,52 @@ def test_delete_blobs_w_generation_match_none(self):
1749
1755
)
1750
1756
bucket .delete_blob .assert_has_calls ([call_1 , call_2 ])
1751
1757
1758
+ def test_delete_blobs_w_preserve_generation (self ):
1759
+ name = "name"
1760
+ blob_name = "blob-name"
1761
+ blob_name2 = "blob-name2"
1762
+ generation_number = 1234567890
1763
+ generation_number2 = 7890123456
1764
+ client = mock .Mock (spec = [])
1765
+ bucket = self ._make_one (client = client , name = name )
1766
+ blob = self ._make_blob (bucket .name , blob_name )
1767
+ blob .generation = generation_number
1768
+ blob2 = self ._make_blob (bucket .name , blob_name2 )
1769
+ blob2 .generation = generation_number2
1770
+ bucket .delete_blob = mock .Mock ()
1771
+ retry = mock .Mock (spec = [])
1772
+
1773
+ # Test generation is propagated from list of blob instances
1774
+ bucket .delete_blobs (
1775
+ [blob , blob2 ],
1776
+ preserve_generation = True ,
1777
+ retry = retry ,
1778
+ )
1779
+
1780
+ call_1 = mock .call (
1781
+ blob_name ,
1782
+ client = None ,
1783
+ generation = generation_number ,
1784
+ if_generation_match = None ,
1785
+ if_generation_not_match = None ,
1786
+ if_metageneration_match = None ,
1787
+ if_metageneration_not_match = None ,
1788
+ timeout = self ._get_default_timeout (),
1789
+ retry = retry ,
1790
+ )
1791
+ call_2 = mock .call (
1792
+ blob_name2 ,
1793
+ client = None ,
1794
+ generation = generation_number2 ,
1795
+ if_generation_match = None ,
1796
+ if_generation_not_match = None ,
1797
+ if_metageneration_match = None ,
1798
+ if_metageneration_not_match = None ,
1799
+ timeout = self ._get_default_timeout (),
1800
+ retry = retry ,
1801
+ )
1802
+ bucket .delete_blob .assert_has_calls ([call_1 , call_2 ])
1803
+
1752
1804
def test_delete_blobs_miss_wo_on_error (self ):
1753
1805
from google .cloud .exceptions import NotFound
1754
1806
@@ -1766,6 +1818,7 @@ def test_delete_blobs_miss_wo_on_error(self):
1766
1818
call_1 = mock .call (
1767
1819
blob_name ,
1768
1820
client = None ,
1821
+ generation = None ,
1769
1822
if_generation_match = None ,
1770
1823
if_generation_not_match = None ,
1771
1824
if_metageneration_match = None ,
@@ -1776,6 +1829,7 @@ def test_delete_blobs_miss_wo_on_error(self):
1776
1829
call_2 = mock .call (
1777
1830
blob_name2 ,
1778
1831
client = None ,
1832
+ generation = None ,
1779
1833
if_generation_match = None ,
1780
1834
if_generation_not_match = None ,
1781
1835
if_metageneration_match = None ,
@@ -1804,6 +1858,7 @@ def test_delete_blobs_miss_w_on_error(self):
1804
1858
call_1 = mock .call (
1805
1859
blob_name ,
1806
1860
client = None ,
1861
+ generation = None ,
1807
1862
if_generation_match = None ,
1808
1863
if_generation_not_match = None ,
1809
1864
if_metageneration_match = None ,
@@ -1814,6 +1869,7 @@ def test_delete_blobs_miss_w_on_error(self):
1814
1869
call_2 = mock .call (
1815
1870
blob_name2 ,
1816
1871
client = None ,
1872
+ generation = None ,
1817
1873
if_generation_match = None ,
1818
1874
if_generation_not_match = None ,
1819
1875
if_metageneration_match = None ,
0 commit comments