Commit 76801fd2 by Sébastien Eustace

Fix the —no-dev option in install not working properly

parent 475c6572
# Change Log
## [Unreleased]
### Fixed
- Fixed the `--no-dev` option in `install` not working properly.
## [0.12.2] - 2018-10-17
### Fixed
......
......@@ -182,7 +182,12 @@ class Installer:
self._populate_local_repo(local_repo, ops, locked_repository)
with self._package.with_python_versions(
root = self._package
if not self.is_dev_mode():
root = root.clone()
del root.dev_requires[:]
with root.with_python_versions(
".".join([str(i) for i in self._env.version_info[:3]])
):
# We resolve again by only using the lock file
......@@ -205,11 +210,7 @@ class Installer:
whitelist.append(pkg.name)
solver = Solver(
self._package,
pool,
self._installed_repository,
locked_repository,
NullIO(),
root, pool, self._installed_repository, locked_repository, NullIO()
)
ops = solver.solve(use_latest=whitelist)
......@@ -482,7 +483,7 @@ class Installer:
op.skip("Not required")
# If the package is a dev package and dev packages
# are not requests, we skip it
# are not requested, we skip it
if package.category == "dev" and not self.is_dev_mode():
op.skip("Dev dependencies not requested")
......
......@@ -363,7 +363,7 @@ class Package(object):
self.python_versions = original_python_versions
def clone(self): # type: () -> Package
clone = Package(self.pretty_name, self.version)
clone = self.__class__(self.pretty_name, self.version)
clone.category = self.category
clone.optional = self.optional
clone.python_versions = self.python_versions
......
[[package]]
name = "A"
version = "1.0"
description = ""
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "B"
version = "1.1"
description = ""
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "C"
version = "1.2"
description = ""
category = "dev"
optional = false
python-versions = "*"
[metadata]
python-versions = "*"
content-hash = "123456789"
[metadata.hashes]
"A" = []
"B" = []
"C" = []
......@@ -228,6 +228,75 @@ def test_run_update_after_removing_dependencies(
assert len(removals) == 1
def test_run_install_no_dev(installer, locker, repo, package, installed):
locker.locked(True)
locker.mock_lock_data(
{
"package": [
{
"name": "A",
"version": "1.0",
"category": "main",
"optional": False,
"platform": "*",
"python-versions": "*",
"checksum": [],
},
{
"name": "B",
"version": "1.1",
"category": "main",
"optional": False,
"platform": "*",
"python-versions": "*",
"checksum": [],
},
{
"name": "C",
"version": "1.2",
"category": "dev",
"optional": False,
"platform": "*",
"python-versions": "*",
"checksum": [],
},
],
"metadata": {
"python-versions": "*",
"platform": "*",
"content-hash": "123456789",
"hashes": {"A": [], "B": [], "C": []},
},
}
)
package_a = get_package("A", "1.0")
package_b = get_package("B", "1.1")
package_c = get_package("C", "1.2")
repo.add_package(package_a)
repo.add_package(package_b)
repo.add_package(package_c)
installed.add_package(package_a)
installed.add_package(package_b)
installed.add_package(package_c)
package.add_dependency("A", "~1.0")
package.add_dependency("B", "~1.1")
package.add_dependency("C", "~1.2", category="dev")
installer.dev_mode(False)
installer.run()
installs = installer.installer.installs
assert len(installs) == 0
updates = installer.installer.updates
assert len(updates) == 0
removals = installer.installer.removals
assert len(removals) == 1
def test_run_whitelist_add(installer, locker, repo, package):
locker.locked(True)
locker.mock_lock_data(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment