Skip to content

Commit 69d2a7d

Browse files
authored
Update test_filesystem.py
1 parent 624d159 commit 69d2a7d

1 file changed

Lines changed: 28 additions & 11 deletions

File tree

‎tests/test_filesystem.py‎

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)