7
7
import freezegun
8
8
import pretend
9
9
import pytest
10
- from pip ._vendor import lockfile
10
+ from pip ._vendor import lockfile , pkg_resources
11
11
12
12
from pip ._internal .index import InstallationCandidate
13
13
from pip ._internal .utils import outdated
@@ -33,6 +33,20 @@ def find_all_candidates(self, project_name):
33
33
return self .INSTALLATION_CANDIDATES
34
34
35
35
36
+ class MockDistribution (object ):
37
+ def __init__ (self , installer ):
38
+ self .installer = installer
39
+
40
+ def has_metadata (self , name ):
41
+ return name == 'INSTALLER'
42
+
43
+ def get_metadata_lines (self , name ):
44
+ if self .has_metadata (name ):
45
+ yield self .installer
46
+ else :
47
+ raise NotImplementedError ('nope' )
48
+
49
+
36
50
def _options ():
37
51
''' Some default options that we pass to outdated.pip_version_check '''
38
52
return pretend .stub (
@@ -47,27 +61,33 @@ def _options():
47
61
'stored_time' ,
48
62
'installed_ver' ,
49
63
'new_ver' ,
64
+ 'installer' ,
50
65
'check_if_upgrade_required' ,
51
66
'check_warn_logs' ,
52
67
],
53
68
[
54
69
# Test we return None when installed version is None
55
- ('1970-01-01T10:00:00Z' , None , '1.0' , False , False ),
70
+ ('1970-01-01T10:00:00Z' , None , '1.0' , 'pip' , False , False ),
56
71
# Need an upgrade - upgrade warning should print
57
- ('1970-01-01T10:00:00Z' , '1.0' , '6.9.0' , True , True ),
72
+ ('1970-01-01T10:00:00Z' , '1.0' , '6.9.0' , 'pip' , True , True ),
73
+ # Upgrade available, pip installed via rpm - warning should not print
74
+ ('1970-01-01T10:00:00Z' , '1.0' , '6.9.0' , 'rpm' , True , False ),
58
75
# No upgrade - upgrade warning should not print
59
- ('1970-01-9T10:00:00Z' , '6.9.0' , '6.9.0' , False , False ),
76
+ ('1970-01-9T10:00:00Z' , '6.9.0' , '6.9.0' , 'pip' , False , False ),
60
77
]
61
78
)
62
79
def test_pip_version_check (monkeypatch , stored_time , installed_ver , new_ver ,
63
- check_if_upgrade_required , check_warn_logs ):
80
+ installer , check_if_upgrade_required ,
81
+ check_warn_logs ):
64
82
monkeypatch .setattr (outdated , 'get_installed_version' ,
65
83
lambda name : installed_ver )
66
84
monkeypatch .setattr (outdated , 'PackageFinder' , MockPackageFinder )
67
85
monkeypatch .setattr (outdated .logger , 'warning' ,
68
86
pretend .call_recorder (lambda * a , ** kw : None ))
69
87
monkeypatch .setattr (outdated .logger , 'debug' ,
70
88
pretend .call_recorder (lambda s , exc_info = None : None ))
89
+ monkeypatch .setattr (pkg_resources , 'get_distribution' ,
90
+ lambda name : MockDistribution (installer ))
71
91
72
92
fake_state = pretend .stub (
73
93
state = {"last_check" : stored_time , 'pypi_version' : installed_ver },
0 commit comments