Skip to content

Commit ee174e1

Browse files
authored
fix: use tmp_path fixture in download tests to avoid cwd pollution (#1800)
* fix: use tmp_path fixture in test_download to avoid cwd pollution * fix: use tmp_path fixture in all download tests to avoid cwd pollution
1 parent 02cbd44 commit ee174e1

3 files changed

Lines changed: 26 additions & 27 deletions

File tree

test/test_datasource.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -608,15 +608,14 @@ def test_delete(server) -> None:
608608
server.datasources.delete("9dbd2263-16b5-46e1-9c43-a76bb8ab65fb")
609609

610610

611-
def test_download(server) -> None:
611+
def test_download(server, tmp_path) -> None:
612612
with requests_mock.mock() as m:
613613
m.get(
614614
server.datasources.baseurl + "/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/content",
615615
headers={"Content-Disposition": 'name="tableau_datasource"; filename="Sample datasource.tds"'},
616616
)
617-
file_path = server.datasources.download("9dbd2263-16b5-46e1-9c43-a76bb8ab65fb")
617+
file_path = server.datasources.download("9dbd2263-16b5-46e1-9c43-a76bb8ab65fb", filepath=tmp_path)
618618
assert os.path.exists(file_path)
619-
os.remove(file_path)
620619

621620

622621
def test_download_object(server) -> None:
@@ -630,21 +629,20 @@ def test_download_object(server) -> None:
630629
assert isinstance(file_path, BytesIO)
631630

632631

633-
def test_download_sanitizes_name(server) -> None:
632+
def test_download_sanitizes_name(server, tmp_path) -> None:
634633
filename = "Name,With,Commas.tds"
635634
disposition = f'name="tableau_workbook"; filename="{filename}"'
636635
with requests_mock.mock() as m:
637636
m.get(
638637
server.datasources.baseurl + "/1f951daf-4061-451a-9df1-69a8062664f2/content",
639638
headers={"Content-Disposition": disposition},
640639
)
641-
file_path = server.datasources.download("1f951daf-4061-451a-9df1-69a8062664f2")
640+
file_path = server.datasources.download("1f951daf-4061-451a-9df1-69a8062664f2", filepath=tmp_path)
642641
assert os.path.basename(file_path) == "NameWithCommas.tds"
643642
assert os.path.exists(file_path)
644-
os.remove(file_path)
645643

646644

647-
def test_download_extract_only(server) -> None:
645+
def test_download_extract_only(server, tmp_path) -> None:
648646
# Pretend we're 2.5 for 'extract_only'
649647
server.version = "2.5"
650648

@@ -654,12 +652,13 @@ def test_download_extract_only(server) -> None:
654652
headers={"Content-Disposition": 'name="tableau_datasource"; filename="Sample datasource.tds"'},
655653
complete_qs=True,
656654
)
657-
file_path = server.datasources.download("9dbd2263-16b5-46e1-9c43-a76bb8ab65fb", include_extract=False)
655+
file_path = server.datasources.download(
656+
"9dbd2263-16b5-46e1-9c43-a76bb8ab65fb", include_extract=False, filepath=tmp_path
657+
)
658658
assert os.path.exists(file_path)
659-
os.remove(file_path)
660659

661660

662-
def test_download_no_extract_emits_deprecation_warning(server) -> None:
661+
def test_download_no_extract_emits_deprecation_warning(server, tmp_path) -> None:
663662
"""no_extract=True should emit a DeprecationWarning and map to includeExtract=False."""
664663
server.version = "2.5"
665664

@@ -670,9 +669,10 @@ def test_download_no_extract_emits_deprecation_warning(server) -> None:
670669
complete_qs=True,
671670
)
672671
with pytest.warns(DeprecationWarning, match="deprecated and will be removed"):
673-
file_path = server.datasources.download("9dbd2263-16b5-46e1-9c43-a76bb8ab65fb", no_extract=True)
672+
file_path = server.datasources.download(
673+
"9dbd2263-16b5-46e1-9c43-a76bb8ab65fb", no_extract=True, filepath=tmp_path
674+
)
674675
assert os.path.exists(file_path)
675-
os.remove(file_path)
676676

677677

678678
def test_update_missing_id(server) -> None:

test/test_flow.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,14 @@ def server():
3333
return server
3434

3535

36-
def test_download(server: TSC.Server) -> None:
36+
def test_download(server: TSC.Server, tmp_path: Path) -> None:
3737
with requests_mock.mock() as m:
3838
m.get(
3939
server.flows.baseurl + "/587daa37-b84d-4400-a9a2-aa90e0be7837/content",
4040
headers={"Content-Disposition": 'name="tableau_flow"; filename="FlowOne.tfl"'},
4141
)
42-
file_path = server.flows.download("587daa37-b84d-4400-a9a2-aa90e0be7837")
42+
file_path = server.flows.download("587daa37-b84d-4400-a9a2-aa90e0be7837", filepath=tmp_path)
4343
assert os.path.exists(file_path) is True
44-
os.remove(file_path)
4544

4645

4746
def test_download_object(server: TSC.Server) -> None:

test/test_workbook.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -318,15 +318,14 @@ def test_update_tags(server: TSC.Server) -> None:
318318
assert single_workbook._initial_tags == updated_workbook._initial_tags
319319

320320

321-
def test_download(server: TSC.Server) -> None:
321+
def test_download(server: TSC.Server, tmp_path: Path) -> None:
322322
with requests_mock.mock() as m:
323323
m.get(
324324
server.workbooks.baseurl + "/1f951daf-4061-451a-9df1-69a8062664f2/content",
325325
headers={"Content-Disposition": 'name="tableau_workbook"; filename="RESTAPISample.twbx"'},
326326
)
327-
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2")
327+
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2", filepath=tmp_path)
328328
assert os.path.exists(file_path)
329-
os.remove(file_path)
330329

331330

332331
def test_download_object(server: TSC.Server) -> None:
@@ -340,21 +339,20 @@ def test_download_object(server: TSC.Server) -> None:
340339
assert isinstance(file_path, BytesIO)
341340

342341

343-
def test_download_sanitizes_name(server: TSC.Server) -> None:
342+
def test_download_sanitizes_name(server: TSC.Server, tmp_path: Path) -> None:
344343
filename = "Name,With,Commas.twbx"
345344
disposition = f'name="tableau_workbook"; filename="{filename}"'
346345
with requests_mock.mock() as m:
347346
m.get(
348347
server.workbooks.baseurl + "/1f951daf-4061-451a-9df1-69a8062664f2/content",
349348
headers={"Content-Disposition": disposition},
350349
)
351-
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2")
350+
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2", filepath=tmp_path)
352351
assert os.path.basename(file_path) == "NameWithCommas.twbx"
353352
assert os.path.exists(file_path)
354-
os.remove(file_path)
355353

356354

357-
def test_download_extract_only(server: TSC.Server) -> None:
355+
def test_download_extract_only(server: TSC.Server, tmp_path: Path) -> None:
358356
# Pretend we're 2.5 for 'extract_only'
359357
server.version = "2.5"
360358

@@ -365,12 +363,13 @@ def test_download_extract_only(server: TSC.Server) -> None:
365363
complete_qs=True,
366364
)
367365
# Technically this shouldn't download a twbx, but we are interested in the qs, not the file
368-
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2", include_extract=False)
366+
file_path = server.workbooks.download(
367+
"1f951daf-4061-451a-9df1-69a8062664f2", include_extract=False, filepath=tmp_path
368+
)
369369
assert os.path.exists(file_path)
370-
os.remove(file_path)
371370

372371

373-
def test_download_no_extract_emits_deprecation_warning(server: TSC.Server) -> None:
372+
def test_download_no_extract_emits_deprecation_warning(server: TSC.Server, tmp_path: Path) -> None:
374373
"""no_extract=True should emit a DeprecationWarning and map to includeExtract=False."""
375374
server.version = "2.5"
376375

@@ -381,9 +380,10 @@ def test_download_no_extract_emits_deprecation_warning(server: TSC.Server) -> No
381380
complete_qs=True,
382381
)
383382
with pytest.warns(DeprecationWarning, match="deprecated and will be removed"):
384-
file_path = server.workbooks.download("1f951daf-4061-451a-9df1-69a8062664f2", no_extract=True)
383+
file_path = server.workbooks.download(
384+
"1f951daf-4061-451a-9df1-69a8062664f2", no_extract=True, filepath=tmp_path
385+
)
385386
assert os.path.exists(file_path)
386-
os.remove(file_path)
387387

388388

389389
def test_download_missing_id(server: TSC.Server) -> None:

0 commit comments

Comments
 (0)