From f933694238f78fbef91367d5051d515e0f9d0635 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Wed, 16 Dec 2020 11:32:04 +0100
Subject: [PATCH] clean up properly after test_git

Restore original directory after test_git.  Otherwise, next tests
are run in non-existing directory and fail:

[...]
>           cwd = os.getcwd()
E           FileNotFoundError: [Errno 2] No such file or directory

/usr/lib/python3.9/site-packages/gunicorn/util.py:443: FileNotFoundError

While at it, reflow the logic so that the temporary directory is always
cleaned, even if the test fails in middle of setup.
---
 fsspec/implementations/tests/test_git.py | 42 +++++++++++++-----------
 1 file changed, 22 insertions(+), 20 deletions(-)

diff --git a/fsspec/implementations/tests/test_git.py b/fsspec/implementations/tests/test_git.py
index 562b228..4cd4c3f 100644
--- a/fsspec/implementations/tests/test_git.py
+++ b/fsspec/implementations/tests/test_git.py
@@ -10,30 +10,32 @@ pygit2 = pytest.importorskip("pygit2")
 
 @pytest.fixture()
 def repo():
+    orig_dir = os.getcwd()
     d = tempfile.mkdtemp()
-    os.chdir(d)
-    subprocess.call("git init", shell=True, cwd=d)
-    subprocess.call("git init", shell=True, cwd=d)
-    subprocess.call('git config user.email "you@example.com"', shell=True, cwd=d)
-    subprocess.call('git config user.name "Your Name"', shell=True, cwd=d)
-    open(os.path.join(d, "file1"), "wb").write(b"data0")
-    subprocess.call("git add file1", shell=True, cwd=d)
-    subprocess.call('git commit -m "init"', shell=True, cwd=d)
-    sha = open(os.path.join(d, ".git/refs/heads/master"), "r").read().strip()
-    open(os.path.join(d, "file1"), "wb").write(b"data00")
-    subprocess.check_output('git commit -a -m "tagger"', shell=True, cwd=d)
-    subprocess.call('git tag -a thetag -m "make tag"', shell=True, cwd=d)
-    open(os.path.join(d, "file2"), "wb").write(b"data000")
-    subprocess.call("git add file2", shell=True)
-    subprocess.call('git commit -m "master tip"', shell=True, cwd=d)
-    subprocess.call("git checkout -b abranch", shell=True, cwd=d)
-    os.mkdir("inner")
-    open(os.path.join(d, "inner", "file1"), "wb").write(b"data3")
-    subprocess.call("git add inner/file1", shell=True, cwd=d)
-    subprocess.call('git commit -m "branch tip"', shell=True, cwd=d)
     try:
+        os.chdir(d)
+        subprocess.call("git init", shell=True, cwd=d)
+        subprocess.call("git init", shell=True, cwd=d)
+        subprocess.call('git config user.email "you@example.com"', shell=True, cwd=d)
+        subprocess.call('git config user.name "Your Name"', shell=True, cwd=d)
+        open(os.path.join(d, "file1"), "wb").write(b"data0")
+        subprocess.call("git add file1", shell=True, cwd=d)
+        subprocess.call('git commit -m "init"', shell=True, cwd=d)
+        sha = open(os.path.join(d, ".git/refs/heads/master"), "r").read().strip()
+        open(os.path.join(d, "file1"), "wb").write(b"data00")
+        subprocess.check_output('git commit -a -m "tagger"', shell=True, cwd=d)
+        subprocess.call('git tag -a thetag -m "make tag"', shell=True, cwd=d)
+        open(os.path.join(d, "file2"), "wb").write(b"data000")
+        subprocess.call("git add file2", shell=True)
+        subprocess.call('git commit -m "master tip"', shell=True, cwd=d)
+        subprocess.call("git checkout -b abranch", shell=True, cwd=d)
+        os.mkdir("inner")
+        open(os.path.join(d, "inner", "file1"), "wb").write(b"data3")
+        subprocess.call("git add inner/file1", shell=True, cwd=d)
+        subprocess.call('git commit -m "branch tip"', shell=True, cwd=d)
         yield d, sha
     finally:
+        os.chdir(orig_dir)
         shutil.rmtree(d)
 
 
-- 
2.29.2

