Skip to content

Commit e5f8057

Browse files
committed
Ensure develop flag is respected for git packages
Resolves: python-poetry#1080
1 parent f4803e9 commit e5f8057

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

poetry/installation/pip_installer.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,15 @@ def requirement(self, package, formatted=False):
138138
return req
139139

140140
if package.source_type == "git":
141-
return "git+{}@{}#egg={}".format(
141+
req = "git+{}@{}#egg={}".format(
142142
package.source_url, package.source_reference, package.name
143143
)
144144

145+
if package.develop:
146+
req = ["-e", req]
147+
148+
return req
149+
145150
return "{}=={}".format(package.name, package.version)
146151

147152
def create_temporary_requirement(self, package):
@@ -226,6 +231,6 @@ def install_git(self, package):
226231
pkg = Package(package.name, package.version)
227232
pkg.source_type = "directory"
228233
pkg.source_url = str(src_dir)
229-
pkg.develop = True
234+
pkg.develop = package.develop
230235

231236
self.install_directory(pkg)

tests/installation/test_pip_installer.py

+32-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
1+
import pytest
2+
13
from poetry.installation.pip_installer import PipInstaller
24
from poetry.io import NullIO
35
from poetry.packages.package import Package
46
from poetry.utils.env import NullEnv
57

68

7-
def test_requirement():
8-
installer = PipInstaller(NullEnv(), NullIO())
9+
@pytest.fixture
10+
def package_git():
11+
package = Package("demo", "1.0.0")
12+
package.source_type = "git"
13+
package.source_url = "[email protected]:demo/demo.git"
14+
package.source_reference = "master"
15+
return package
16+
17+
18+
@pytest.fixture
19+
def installer():
20+
return PipInstaller(NullEnv(), NullIO())
921

22+
23+
def test_requirement(installer):
1024
package = Package("ipython", "7.5.0")
1125
package.hashes = [
1226
"md5:dbdc53e3918f28fa335a173432402a00",
@@ -22,3 +36,19 @@ def test_requirement():
2236
)
2337

2438
assert expected == result
39+
40+
41+
def test_requirement_git_develop_false(installer, package_git):
42+
package_git.develop = False
43+
result = installer.requirement(package_git)
44+
expected = "[email protected]:demo/demo.git@master#egg=demo"
45+
46+
assert expected == result
47+
48+
49+
def test_requirement_git_develop_true(installer, package_git):
50+
package_git.develop = True
51+
result = installer.requirement(package_git)
52+
expected = ["-e", "[email protected]:demo/demo.git@master#egg=demo"]
53+
54+
assert expected == result

0 commit comments

Comments
 (0)