4
4
import ast
5
5
import os
6
6
import subprocess
7
- import sys
8
7
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
11
9
12
10
13
11
class 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
-
24
12
@with_rw_directory
25
13
def test_installation (self , rw_dir ):
26
- self .setUp_venv (rw_dir )
14
+ venv = self ._set_up_venv (rw_dir )
27
15
28
16
result = subprocess .run (
29
- [self .pip , "install" , "." ],
17
+ [venv .pip , "install" , "." ],
30
18
stdout = subprocess .PIPE ,
31
- cwd = self .sources ,
19
+ cwd = venv .sources ,
32
20
)
33
21
self .assertEqual (
34
22
0 ,
@@ -37,9 +25,9 @@ def test_installation(self, rw_dir):
37
25
)
38
26
39
27
result = subprocess .run (
40
- [self .python , "-c" , "import git" ],
28
+ [venv .python , "-c" , "import git" ],
41
29
stdout = subprocess .PIPE ,
42
- cwd = self .sources ,
30
+ cwd = venv .sources ,
43
31
)
44
32
self .assertEqual (
45
33
0 ,
@@ -48,9 +36,9 @@ def test_installation(self, rw_dir):
48
36
)
49
37
50
38
result = subprocess .run (
51
- [self .python , "-c" , "import gitdb; import smmap" ],
39
+ [venv .python , "-c" , "import gitdb; import smmap" ],
52
40
stdout = subprocess .PIPE ,
53
- cwd = self .sources ,
41
+ cwd = venv .sources ,
54
42
)
55
43
self .assertEqual (
56
44
0 ,
@@ -62,9 +50,9 @@ def test_installation(self, rw_dir):
62
50
# by inserting its location into PYTHONPATH or otherwise patched into
63
51
# sys.path, make sure it is not wrongly inserted as the *first* entry.
64
52
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)" ],
66
54
stdout = subprocess .PIPE ,
67
- cwd = self .sources ,
55
+ cwd = venv .sources ,
68
56
)
69
57
syspath = result .stdout .decode ("utf-8" ).splitlines ()[0 ]
70
58
syspath = ast .literal_eval (syspath )
@@ -73,3 +61,13 @@ def test_installation(self, rw_dir):
73
61
syspath [0 ],
74
62
msg = "Failed to follow the conventions for https://docs.python.org/3/library/sys.html#sys.path" ,
75
63
)
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