Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
da6ff861
Unverified
Commit
da6ff861
authored
Mar 31, 2018
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix solver adding uninstall operations for non-existing packages
parent
550481c9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
5 deletions
+40
-5
CHANGELOG.md
+1
-0
poetry/installation/installer.py
+12
-0
poetry/puzzle/solver.py
+10
-4
tests/puzzle/test_solver.py
+17
-1
No files found.
CHANGELOG.md
View file @
da6ff861
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
-
Fixed handling of markers with the
`in`
operator.
-
Fixed handling of markers with the
`in`
operator.
-
Fixed
`update`
not properly adding new packages to the lock file.
-
Fixed
`update`
not properly adding new packages to the lock file.
-
Fixed solver adding uninstall operations for non-installed packages.
## [0.6.5] - 2018-03-22
## [0.6.5] - 2018-03-22
...
...
poetry/installation/installer.py
View file @
da6ff861
...
@@ -330,6 +330,18 @@ class Installer:
...
@@ -330,6 +330,18 @@ class Installer:
self
.
_installer
.
update
(
source
,
target
)
self
.
_installer
.
update
(
source
,
target
)
def
_execute_uninstall
(
self
,
operation
:
Uninstall
)
->
None
:
def
_execute_uninstall
(
self
,
operation
:
Uninstall
)
->
None
:
if
operation
.
skipped
:
if
self
.
is_verbose
()
and
(
self
.
_execute_operations
or
self
.
is_dry_run
()):
self
.
_io
.
writeln
(
' - Not removing <info>{}</> (<comment>{}</>) {}'
.
format
(
operation
.
package
.
pretty_name
,
operation
.
package
.
full_pretty_version
,
operation
.
skip_reason
)
)
return
if
self
.
_execute_operations
or
self
.
is_dry_run
():
if
self
.
_execute_operations
or
self
.
is_dry_run
():
self
.
_io
.
writeln
(
self
.
_io
.
writeln
(
' - Removing <info>{}</> (<comment>{}</>)'
.
format
(
' - Removing <info>{}</> (<comment>{}</>)'
.
format
(
...
...
poetry/puzzle/solver.py
View file @
da6ff861
...
@@ -105,12 +105,18 @@ class Solver:
...
@@ -105,12 +105,18 @@ class Solver:
break
break
if
remove
:
if
remove
:
for
locked
in
self
.
_locked
.
packages
:
skip
=
True
if
locked
.
name
==
pkg
.
name
:
for
installed
in
self
.
_installed
.
packages
:
operations
.
append
(
Uninstall
(
pkg
))
if
installed
.
name
==
pkg
.
name
:
skip
=
False
break
break
op
=
Uninstall
(
pkg
)
if
skip
:
op
.
skip
(
'Not currently installed'
)
operations
.
append
(
op
)
requested_names
=
[
r
.
name
for
r
in
requested
]
requested_names
=
[
r
.
name
for
r
in
requested
]
return
sorted
(
return
sorted
(
...
...
tests/puzzle/test_solver.py
View file @
da6ff861
...
@@ -88,8 +88,9 @@ def test_solver_install_single(solver, repo):
...
@@ -88,8 +88,9 @@ def test_solver_install_single(solver, repo):
])
])
def
test_solver_remove_if_no_longer_locked
(
solver
,
locked
):
def
test_solver_remove_if_no_longer_locked
(
solver
,
locked
,
installed
):
package_a
=
get_package
(
'A'
,
'1.0'
)
package_a
=
get_package
(
'A'
,
'1.0'
)
installed
.
add_package
(
package_a
)
locked
.
add_package
(
package_a
)
locked
.
add_package
(
package_a
)
ops
=
solver
.
solve
([])
ops
=
solver
.
solve
([])
...
@@ -99,6 +100,21 @@ def test_solver_remove_if_no_longer_locked(solver, locked):
...
@@ -99,6 +100,21 @@ def test_solver_remove_if_no_longer_locked(solver, locked):
])
])
def
test_remove_non_installed
(
solver
,
repo
,
locked
):
package_a
=
get_package
(
'A'
,
'1.0'
)
locked
.
add_package
(
package_a
)
repo
.
add_package
(
package_a
)
request
=
[]
ops
=
solver
.
solve
(
request
)
check_solver_result
(
ops
,
[
{
'job'
:
'remove'
,
'package'
:
package_a
,
'skipped'
:
True
},
])
def
test_install_non_existing_package_fail
(
solver
,
repo
):
def
test_install_non_existing_package_fail
(
solver
,
repo
):
package_a
=
get_package
(
'A'
,
'1.0'
)
package_a
=
get_package
(
'A'
,
'1.0'
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_a
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment