44import ast
55import os
66import subprocess
7- import sys
87
9- from test .lib import TestBase
10- from test .lib .helper import with_rw_directory
8+ from test .lib import TestBase , VirtualEnvironment , with_rw_directory
119
1210
1311class TestInstallation (TestBase ):
14- def setUp_venv (self , rw_dir ):
15- self .venv = rw_dir
16- subprocess .run ([sys .executable , "-m" , "venv" , self .venv ], stdout = subprocess .PIPE )
17- bin_name = "Scripts" if os .name == "nt" else "bin"
18- self .python = os .path .join (self .venv , bin_name , "python" )
19- self .pip = os .path .join (self .venv , bin_name , "pip" )
20- self .sources = os .path .join (self .venv , "src" )
21- self .cwd = os .path .dirname (os .path .dirname (__file__ ))
22- os .symlink (self .cwd , self .sources , target_is_directory = True )
23-
2412 @with_rw_directory
2513 def test_installation (self , rw_dir ):
26- self .setUp_venv (rw_dir )
14+ venv = self ._set_up_venv (rw_dir )
2715
2816 result = subprocess .run (
29- [self .pip , "install" , "." ],
17+ [venv .pip , "install" , "." ],
3018 stdout = subprocess .PIPE ,
31- cwd = self .sources ,
19+ cwd = venv .sources ,
3220 )
3321 self .assertEqual (
3422 0 ,
@@ -37,9 +25,9 @@ def test_installation(self, rw_dir):
3725 )
3826
3927 result = subprocess .run (
40- [self .python , "-c" , "import git" ],
28+ [venv .python , "-c" , "import git" ],
4129 stdout = subprocess .PIPE ,
42- cwd = self .sources ,
30+ cwd = venv .sources ,
4331 )
4432 self .assertEqual (
4533 0 ,
@@ -48,9 +36,9 @@ def test_installation(self, rw_dir):
4836 )
4937
5038 result = subprocess .run (
51- [self .python , "-c" , "import gitdb; import smmap" ],
39+ [venv .python , "-c" , "import gitdb; import smmap" ],
5240 stdout = subprocess .PIPE ,
53- cwd = self .sources ,
41+ cwd = venv .sources ,
5442 )
5543 self .assertEqual (
5644 0 ,
@@ -62,9 +50,9 @@ def test_installation(self, rw_dir):
6250 # by inserting its location into PYTHONPATH or otherwise patched into
6351 # sys.path, make sure it is not wrongly inserted as the *first* entry.
6452 result = subprocess .run (
65- [self .python , "-c" , "import sys; import git; print(sys.path)" ],
53+ [venv .python , "-c" , "import sys; import git; print(sys.path)" ],
6654 stdout = subprocess .PIPE ,
67- cwd = self .sources ,
55+ cwd = venv .sources ,
6856 )
6957 syspath = result .stdout .decode ("utf-8" ).splitlines ()[0 ]
7058 syspath = ast .literal_eval (syspath )
@@ -73,3 +61,13 @@ def test_installation(self, rw_dir):
7361 syspath [0 ],
7462 msg = "Failed to follow the conventions for https://docs.python.org/3/library/sys.html#sys.path" ,
7563 )
64+
65+ @staticmethod
66+ def _set_up_venv (rw_dir ):
67+ venv = VirtualEnvironment (rw_dir , with_pip = True )
68+ os .symlink (
69+ os .path .dirname (os .path .dirname (__file__ )),
70+ venv .sources ,
71+ target_is_directory = True ,
72+ )
73+ return venv
0 commit comments