@@ -662,6 +662,7 @@ def test_grep_nonexistent_path_errors(self):
662662 out = grep_tool ().run ({"regex" : "x" , "path" : os .path .join (self .tmp .name , "nope" )}, self .ctx )
663663 self .assertIn ("Error" , out )
664664
665+ @unittest .skipIf (sys .platform == "darwin" , "macOS uses GlobMac (find), not the tree fallback" )
665666 @mock .patch ("shutil.which" , return_value = None )
666667 def test_glob_errors_when_tree_missing (self , _which ):
667668 d = self ._mkdir ("proj" )
@@ -902,8 +903,12 @@ def test_write_full_path_in_filename_expands_tilde(self):
902903 with tempfile .TemporaryDirectory () as d :
903904 home = os .path .join (d , "home" )
904905 os .makedirs (home )
905- orig_home = os .environ .get ("HOME" )
906+ saved = { v : os .environ .get (v ) for v in ( "HOME" , "USERPROFILE" , "HOMEDRIVE" , "HOMEPATH" )}
906907 os .environ ["HOME" ] = home
908+ if os .name == "nt" :
909+ os .environ ["USERPROFILE" ] = home
910+ os .environ .pop ("HOMEDRIVE" , None )
911+ os .environ .pop ("HOMEPATH" , None )
907912 try :
908913 ctx , _ = make_ctx ()
909914 result = Write ().run (
@@ -914,10 +919,11 @@ def test_write_full_path_in_filename_expands_tilde(self):
914919 self .assertEqual (f .read (), "hi\n " )
915920 self .assertFalse (os .path .exists (os .path .join (d , "~" )))
916921 finally :
917- if orig_home is not None :
918- os .environ ["HOME" ] = orig_home
919- else :
920- os .environ .pop ("HOME" , None )
922+ for var , val in saved .items ():
923+ if val is not None :
924+ os .environ [var ] = val
925+ else :
926+ os .environ .pop (var , None )
921927
922928 def test_overwrite_non_utf8_file_does_not_fail (self ):
923929 """Regression: reading the old content with strict UTF-8 raised
@@ -1118,6 +1124,7 @@ def test_git_lsfiles_oserror_reported(self):
11181124 self .assertTrue (out .startswith ("Error" ))
11191125 self .assertIn ("No such file" , out )
11201126
1127+ @unittest .skipIf (sys .platform == "darwin" , "macOS uses GlobMac (find), not the tree fallback" )
11211128 def test_tree_nonzero_exit_reported (self ):
11221129 d = os .path .join (self .tmp .name , "plain" )
11231130 os .makedirs (d )
@@ -2217,18 +2224,28 @@ class TestTildeExpansion(unittest.TestCase):
22172224 """All filesystem tools must expand ~ in user-provided paths."""
22182225
22192226 def setUp (self ):
2220- self .tmp = tempfile .TemporaryDirectory ()
2227+ # mkdtemp (system temp dir, outside the repo): a temp dir inside the
2228+ # repo would make _git_root find this repo and route Glob/Grep to the
2229+ # git backend, which needs `tree`/PCRE support the platform may lack.
2230+ self .tmp = tempfile .TemporaryDirectory (dir = tempfile .gettempdir ())
22212231 self .home = os .path .join (self .tmp .name , "home" )
22222232 os .makedirs (self .home )
2223- self .orig_home = os .environ .get ("HOME" )
2233+ self ._saved = {}
2234+ for var in ("HOME" , "USERPROFILE" , "HOMEDRIVE" , "HOMEPATH" ):
2235+ self ._saved [var ] = os .environ .get (var )
22242236 os .environ ["HOME" ] = self .home
2237+ if os .name == "nt" :
2238+ os .environ ["USERPROFILE" ] = self .home
2239+ os .environ .pop ("HOMEDRIVE" , None )
2240+ os .environ .pop ("HOMEPATH" , None )
22252241
22262242 def tearDown (self ):
22272243 self .tmp .cleanup ()
2228- if self .orig_home is not None :
2229- os .environ ["HOME" ] = self .orig_home
2230- else :
2231- os .environ .pop ("HOME" , None )
2244+ for var , val in self ._saved .items ():
2245+ if val is not None :
2246+ os .environ [var ] = val
2247+ else :
2248+ os .environ .pop (var , None )
22322249
22332250 def test_read_expands_tilde (self ):
22342251 p = os .path .join (self .home , "file.txt" )
0 commit comments