# This module is part of GitPython and is released under # the BSD License: http://www.opensource.org/licenses/bsd-license.php import ast import os import subprocess from test.lib import TestBase from test.lib.helper import with_rw_directory class TestInstallation(TestBase): def setUp_venv(self, rw_dir): self.venv = rw_dir subprocess.run(["virtualenv", self.venv], stdout=subprocess.PIPE) self.python = os.path.join(self.venv, "bin/python3") self.pip = os.path.join(self.venv, "bin/pip3") self.sources = os.path.join(self.venv, "src") self.cwd = os.path.dirname(os.path.dirname(__file__)) os.symlink(self.cwd, self.sources, target_is_directory=True) @with_rw_directory def test_installation(self, rw_dir): self.setUp_venv(rw_dir) result = subprocess.run( [self.pip, "install", "-r", "requirements.txt"], stdout=subprocess.PIPE, cwd=self.sources, ) self.assertEqual( 0, result.returncode, msg=result.stderr or result.stdout or "Can't install requirements", ) result = subprocess.run( [self.python, "setup.py", "install"], stdout=subprocess.PIPE, cwd=self.sources, ) self.assertEqual( 0, result.returncode, msg=result.stderr or result.stdout or "Can't build - setup.py failed", ) result = subprocess.run([self.python, "-c", "import git"], stdout=subprocess.PIPE, cwd=self.sources) self.assertEqual( 0, result.returncode, msg=result.stderr or result.stdout or "Selftest failed", ) result = subprocess.run( [self.python, "-c", "import sys;import git; print(sys.path)"], stdout=subprocess.PIPE, cwd=self.sources, ) syspath = result.stdout.decode("utf-8").splitlines()[0] syspath = ast.literal_eval(syspath) self.assertEqual( "", syspath[0], msg="Failed to follow the conventions for https://docs.python.org/3/library/sys.html#sys.path", ) self.assertTrue(syspath[1].endswith("gitdb"), msg="Failed to add gitdb to sys.path")