Commit a55eaad5 by Sébastien Eustace

Fix an error when adding a new package with prereleases in lock file

parent 0e6a9a23
......@@ -29,6 +29,7 @@ commands in project subdirectories.
- Fixed `self:update` command for some installation.
- Fixed handling of extras when building projects.
- Fixed handling of wildcard dependencies wen packaging/publishing.
- Fixed an error when adding a new packages with prereleases in lock file.
## [0.8.6] - 2018-04-30
......
......@@ -153,9 +153,14 @@ class Installer:
to_fix = False
if to_fix:
fixed.append(
Dependency(candidate.name, candidate.version)
dependency = Dependency(
candidate.name,
candidate.version,
optional=candidate.optional,
category=candidate.category,
allows_prereleases=candidate.is_prerelease()
)
fixed.append(dependency)
solver = Solver(
self._package,
......
[[package]]
name = "A"
version = "1.0"
description = ""
category = "main"
optional = false
python-versions = "*"
platform = "*"
[[package]]
name = "B"
version = "1.1"
description = ""
category = "main"
optional = false
python-versions = "*"
platform = "*"
[package.dependencies]
A = "^1.0"
[metadata]
python-versions = "*"
platform = "*"
content-hash = "123456789"
[metadata.hashes]
"A" = []
"B" = []
[[package]]
name = "A"
version = "1.0a2"
description = ""
category = "main"
optional = false
python-versions = "*"
platform = "*"
[[package]]
name = "B"
version = "1.1"
description = ""
category = "main"
optional = false
python-versions = "*"
platform = "*"
[metadata]
python-versions = "*"
platform = "*"
content-hash = "123456789"
[metadata.hashes]
"A" = []
"B" = []
......@@ -572,3 +572,80 @@ def test_run_installs_with_local_directory(installer, locker, repo, package):
assert locker.written_data == expected
assert len(installer.installer.installs) == 3
def test_run_with_prereleases(installer, locker, repo, package):
locker.locked(True)
locker.mock_lock_data({
'package': [{
'name': 'A',
'version': '1.0a2',
'category': 'main',
'optional': False,
'platform': '*',
'python-versions': '*',
'checksum': []
}],
'metadata': {
'python-versions': '*',
'platform': '*',
'content-hash': '123456789',
'hashes': {
'A': [],
}
}
})
package_a = get_package('A', '1.0a2')
package_b = get_package('B', '1.1')
repo.add_package(package_a)
repo.add_package(package_b)
package.add_dependency('A', {'version': '*', 'allows-prereleases': True})
package.add_dependency('B', '^1.1')
installer.update(True)
installer.whitelist({'B': '^1.1'})
installer.run()
expected = fixture('with-prereleases')
assert locker.written_data == expected
def test_run_changes_category_if_needed(installer, locker, repo, package):
locker.locked(True)
locker.mock_lock_data({
'package': [{
'name': 'A',
'version': '1.0',
'category': 'dev',
'optional': True,
'platform': '*',
'python-versions': '*',
'checksum': []
}],
'metadata': {
'python-versions': '*',
'platform': '*',
'content-hash': '123456789',
'hashes': {
'A': [],
}
}
})
package_a = get_package('A', '1.0')
package_b = get_package('B', '1.1')
package_b.add_dependency('A', '^1.0')
repo.add_package(package_a)
repo.add_package(package_b)
package.add_dependency('A', {'version': '^1.0', 'optional': True}, category='dev')
package.add_dependency('B', '^1.1')
installer.update(True)
installer.whitelist({'B': '^1.1'})
installer.run()
expected = fixture('with-category-change')
assert locker.written_data == expected
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