Skip to content

Commit 3afa84f

Browse files
[Storage] Fixed Pagination for list_directories_and_files when name_starts_with is specified (#43038)
1 parent 0f22c1a commit 3afa84f

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

sdk/storage/azure-storage-file-share/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "python",
44
"TagPrefix": "python/storage/azure-storage-file-share",
5-
"Tag": "python/storage/azure-storage-file-share_9c32ba27e3"
5+
"Tag": "python/storage/azure-storage-file-share_940404bec9"
66
}

sdk/storage/azure-storage-file-share/azure/storage/fileshare/_models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,6 @@ def _get_next_cb(self, continuation_token):
10241024
def _extract_data_cb(self, get_next_return):
10251025
self.location_mode, self._response = get_next_return
10261026
self.service_endpoint = self._response.service_endpoint
1027-
self.prefix = self._response.prefix
10281027
self.marker = self._response.marker
10291028
self.results_per_page = self._response.max_results
10301029
self.current_page = [DirectoryProperties._from_generated(i) for i in self._response.segment.directory_items] # pylint: disable = protected-access

sdk/storage/azure-storage-file-share/azure/storage/fileshare/aio/_models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ async def _get_next_cb(self, continuation_token):
200200
async def _extract_data_cb(self, get_next_return):
201201
self.location_mode, self._response = get_next_return
202202
self.service_endpoint = self._response.service_endpoint
203-
self.prefix = self._response.prefix
204203
self.marker = self._response.marker
205204
self.results_per_page = self._response.max_results
206205
self.current_page = [DirectoryProperties._from_generated(i) for i in self._response.segment.directory_items] # pylint: disable = protected-access

sdk/storage/azure-storage-file-share/tests/test_directory.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -993,6 +993,30 @@ def test_list_nested_subdirectories_and_files(self, **kwargs):
993993
assert list_dir[1]['is_directory'] == False
994994
assert list_dir[1]['size'] == 5
995995

996+
@FileSharePreparer()
997+
@recorded_by_proxy
998+
def test_list_pagination_name_starts_with(self, **kwargs):
999+
storage_account_name = kwargs.pop("storage_account_name")
1000+
storage_account_key = kwargs.pop("storage_account_key")
1001+
1002+
self._setup(storage_account_name, storage_account_key)
1003+
share_client = self.fsc.get_share_client(self.share_name)
1004+
directory_name, prefix = "dir", "samples_"
1005+
directory = share_client.create_directory(directory_name)
1006+
1007+
for i in range(6):
1008+
directory.upload_file(f"{prefix}{i}", "data1")
1009+
directory.upload_file(f"not_{i}", "data2")
1010+
1011+
list_all = list(share_client.list_directories_and_files(
1012+
directory_name=directory_name,
1013+
name_starts_with=prefix,
1014+
results_per_page=2
1015+
))
1016+
assert len(list_all) == 6
1017+
for i in range(6):
1018+
assert list_all[i]["name"] == f"{prefix}{i}"
1019+
9961020
@FileSharePreparer()
9971021
@recorded_by_proxy
9981022
def test_delete_directory_with_existing_share(self, **kwargs):

sdk/storage/azure-storage-file-share/tests/test_directory_async.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,32 @@ async def test_list_nested_subdirectories_and_files(self, **kwargs):
10791079
assert list_dir[1]['is_directory'] == False
10801080
assert list_dir[1]['size'] == 5
10811081

1082+
@FileSharePreparer()
1083+
@recorded_by_proxy_async
1084+
async def test_list_pagination_name_starts_with(self, **kwargs):
1085+
storage_account_name = kwargs.pop("storage_account_name")
1086+
storage_account_key = kwargs.pop("storage_account_key")
1087+
1088+
await self._setup(storage_account_name, storage_account_key)
1089+
share_client = self.fsc.get_share_client(self.share_name)
1090+
directory_name, prefix = "dir", "samples_"
1091+
directory = await share_client.create_directory(directory_name)
1092+
1093+
for i in range(6):
1094+
await directory.upload_file(f"{prefix}{i}", "data1")
1095+
await directory.upload_file(f"not_{i}", "data2")
1096+
1097+
list_all = []
1098+
async for path in share_client.list_directories_and_files(
1099+
directory_name=directory_name,
1100+
name_starts_with=prefix,
1101+
results_per_page=2
1102+
):
1103+
list_all.append(path)
1104+
assert len(list_all) == 6
1105+
for i in range(6):
1106+
assert list_all[i]["name"] == f"{prefix}{i}"
1107+
10821108
@FileSharePreparer()
10831109
@recorded_by_proxy_async
10841110
async def test_delete_directory_with_existing_share(self, **kwargs):

0 commit comments

Comments
 (0)