|
1 | 1 | import math
|
| 2 | +import os |
| 3 | +import zipfile |
2 | 4 | from datetime import datetime
|
3 | 5 | from io import BytesIO
|
4 | 6 | from random import choice, randbytes
|
@@ -541,6 +543,56 @@ def test_fs_node_str(nc):
|
541 | 543 | nc.files.delete("test_file_name.txt")
|
542 | 544 |
|
543 | 545 |
|
| 546 | +@pytest.mark.parametrize("nc", NC_TO_TEST) |
| 547 | +def test_download_as_zip(nc): |
| 548 | + nc.files.makedirs("test_root_folder/test_subfolder", exist_ok=True) |
| 549 | + try: |
| 550 | + nc.files.mkdir("test_root_folder/test_subfolder2") |
| 551 | + nc.files.upload("test_root_folder/0.txt", content="") |
| 552 | + nc.files.upload("test_root_folder/1.txt", content="123") |
| 553 | + nc.files.upload("test_root_folder/test_subfolder/0.txt", content="") |
| 554 | + result = nc.files.download_directory_as_zip("test_root_folder") |
| 555 | + try: |
| 556 | + with zipfile.ZipFile(result, "r") as zip_ref: |
| 557 | + assert zip_ref.filelist[0].filename == "test_root_folder/" |
| 558 | + assert not zip_ref.filelist[0].file_size |
| 559 | + assert zip_ref.filelist[1].filename == "test_root_folder/0.txt" |
| 560 | + assert not zip_ref.filelist[1].file_size |
| 561 | + assert zip_ref.filelist[2].filename == "test_root_folder/1.txt" |
| 562 | + assert zip_ref.filelist[2].file_size == 3 |
| 563 | + assert zip_ref.filelist[3].filename == "test_root_folder/test_subfolder/" |
| 564 | + assert not zip_ref.filelist[3].file_size |
| 565 | + assert zip_ref.filelist[4].filename == "test_root_folder/test_subfolder/0.txt" |
| 566 | + assert not zip_ref.filelist[4].file_size |
| 567 | + assert zip_ref.filelist[5].filename == "test_root_folder/test_subfolder2/" |
| 568 | + assert not zip_ref.filelist[5].file_size |
| 569 | + assert len(zip_ref.filelist) == 6 |
| 570 | + finally: |
| 571 | + os.remove(result) |
| 572 | + result = nc.files.download_directory_as_zip("test_root_folder/test_subfolder", "2.zip") |
| 573 | + try: |
| 574 | + assert str(result) == "2.zip" |
| 575 | + with zipfile.ZipFile(result, "r") as zip_ref: |
| 576 | + assert zip_ref.filelist[0].filename == "test_subfolder/" |
| 577 | + assert not zip_ref.filelist[0].file_size |
| 578 | + assert zip_ref.filelist[1].filename == "test_subfolder/0.txt" |
| 579 | + assert not zip_ref.filelist[1].file_size |
| 580 | + assert len(zip_ref.filelist) == 2 |
| 581 | + finally: |
| 582 | + os.remove("2.zip") |
| 583 | + result = nc.files.download_directory_as_zip("test_root_folder/test_subfolder2", "empty_folder.zip") |
| 584 | + try: |
| 585 | + assert str(result) == "empty_folder.zip" |
| 586 | + with zipfile.ZipFile(result, "r") as zip_ref: |
| 587 | + assert zip_ref.filelist[0].filename == "test_subfolder2/" |
| 588 | + assert not zip_ref.filelist[0].file_size |
| 589 | + assert len(zip_ref.filelist) == 1 |
| 590 | + finally: |
| 591 | + os.remove("empty_folder.zip") |
| 592 | + finally: |
| 593 | + nc.files.delete("test_root_folder") |
| 594 | + |
| 595 | + |
544 | 596 | @pytest.mark.parametrize("nc", NC_TO_TEST[:1])
|
545 | 597 | def test_fs_node_is_xx(nc):
|
546 | 598 | nc.files.delete("test_root_folder", not_fail=True)
|
|
0 commit comments