11import os
2+ import posixpath
3+ import subprocess
24import sys
35import textwrap
46from typing import List
57from unittest import mock
68from zipfile import ZipFile
79
8- import pytest
9-
10- if sys .platform != "win32" :
11- import sh
12-
1310
1411def walk_to_root (path : str ):
1512 last_dir = None
1613 current_dir = path
1714 while last_dir != current_dir :
1815 yield current_dir
19- ( parent_dir , _ ) = os . path . split (current_dir )
16+ parent_dir = posixpath . dirname (current_dir )
2017 last_dir , current_dir = current_dir , parent_dir
2118
2219
@@ -32,12 +29,10 @@ def setup_zipfile(path, files: List[FileToAdd]):
3229 with ZipFile (zip_file_path , "w" ) as zipfile :
3330 for f in files :
3431 zipfile .writestr (data = f .content , zinfo_or_arcname = f .path )
35- for dirname in walk_to_root (os . path .dirname (f .path )):
32+ for dirname in walk_to_root (posixpath .dirname (f .path )):
3633 if dirname not in dirs_init_py_added_to :
37- print (os .path .join (dirname , "__init__.py" ))
38- zipfile .writestr (
39- data = "" , zinfo_or_arcname = os .path .join (dirname , "__init__.py" )
40- )
34+ init_path = posixpath .join (dirname , "__init__.py" )
35+ zipfile .writestr (data = "" , zinfo_or_arcname = init_path )
4136 dirs_init_py_added_to .add (dirname )
4237 return zip_file_path
4338
@@ -65,7 +60,6 @@ def test_load_dotenv_gracefully_handles_zip_imports_when_no_env_file(tmp_path):
6560 import child1 .child2 .test # noqa
6661
6762
68- @pytest .mark .skipif (sys .platform == "win32" , reason = "sh module doesn't support Windows" )
6963def test_load_dotenv_outside_zip_file_when_called_in_zipfile (tmp_path ):
7064 zip_file_path = setup_zipfile (
7165 tmp_path ,
@@ -83,7 +77,7 @@ def test_load_dotenv_outside_zip_file_when_called_in_zipfile(tmp_path):
8377 ],
8478 )
8579 dotenv_path = tmp_path / ".env"
86- dotenv_path .write_bytes (b"a=b " )
80+ dotenv_path .write_bytes (b"A=B " )
8781 code_path = tmp_path / "code.py"
8882 code_path .write_text (
8983 textwrap .dedent (
@@ -95,12 +89,16 @@ def test_load_dotenv_outside_zip_file_when_called_in_zipfile(tmp_path):
9589
9690 import child1.child2.test
9791
98- print(os.environ['a '])
92+ print(os.environ['A '])
9993 """
10094 )
10195 )
102- os .chdir (str (tmp_path ))
10396
104- result = sh .Command (sys .executable )(code_path )
97+ result = subprocess .run (
98+ [sys .executable , str (code_path )],
99+ capture_output = True ,
100+ text = True ,
101+ cwd = tmp_path ,
102+ )
105103
106- assert result == "b \n "
104+ assert result . stdout == "B \n "
0 commit comments