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
c02703ee
Unverified
Commit
c02703ee
authored
Apr 30, 2021
by
Sébastien Eustace
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve `self update` following the introduction of install-poetry.py
parent
f5158013
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
67 deletions
+85
-67
poetry/console/commands/self/update.py
+0
-0
poetry/packages/locker.py
+5
-0
tests/console/commands/self/test_update.py
+80
-67
No files found.
poetry/console/commands/self/update.py
View file @
c02703ee
This diff is collapsed.
Click to expand it.
poetry/packages/locker.py
View file @
c02703ee
...
@@ -595,3 +595,8 @@ class Locker:
...
@@ -595,3 +595,8 @@ class Locker:
data
[
"develop"
]
=
package
.
develop
data
[
"develop"
]
=
package
.
develop
return
data
return
data
class
NullLocker
(
Locker
):
def
set_lock_data
(
self
,
root
:
Package
,
packages
:
List
[
Package
])
->
bool
:
pass
tests/console/commands/self/test_update.py
View file @
c02703ee
import
os
from
pathlib
import
Path
from
pathlib
import
Path
import
pytest
import
pytest
from
poetry.__version__
import
__version__
from
poetry.__version__
import
__version__
from
poetry.console.exceptions
import
PoetrySimpleConsoleException
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.package
import
Package
from
poetry.core.semver.version
import
Version
from
poetry.core.semver.version
import
Version
from
poetry.utils._compat
import
WINDOWS
from
poetry.factory
import
Factory
from
poetry.repositories.installed_repository
import
InstalledRepository
from
poetry.repositories.pool
import
Pool
from
poetry.repositories.repository
import
Repository
from
poetry.utils.env
import
EnvManager
FIXTURES
=
Path
(
__file__
)
.
parent
.
joinpath
(
"fixtures"
)
FIXTURES
=
Path
(
__file__
)
.
parent
.
joinpath
(
"fixtures"
)
...
@@ -18,75 +21,85 @@ def tester(command_tester_factory):
...
@@ -18,75 +21,85 @@ def tester(command_tester_factory):
return
command_tester_factory
(
"self update"
)
return
command_tester_factory
(
"self update"
)
def
test_self_update_
should_install_all_necessary_elements
(
def
test_self_update_
can_update_from_recommended_installation
(
tester
,
http
,
mocker
,
environ
,
tmp_
dir
tester
,
http
,
mocker
,
environ
,
tmp_
venv
):
):
os
.
environ
[
"POETRY_HOME"
]
=
tmp_dir
mocker
.
patch
.
object
(
EnvManager
,
"get_system_env"
,
return_value
=
tmp_venv
)
command
=
tester
.
command
command
=
tester
.
command
command
.
_data_dir
=
tmp_venv
.
path
.
parent
new_version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
old_poetry
=
Package
(
"poetry"
,
__version__
)
old_poetry
.
add_dependency
(
Factory
.
create_dependency
(
"cleo"
,
"^0.8.2"
))
new_poetry
=
Package
(
"poetry"
,
new_version
)
new_poetry
.
add_dependency
(
Factory
.
create_dependency
(
"cleo"
,
"^1.0.0"
))
installed_repository
=
Repository
()
installed_repository
.
add_package
(
old_poetry
)
installed_repository
.
add_package
(
Package
(
"cleo"
,
"0.8.2"
))
repository
=
Repository
()
repository
.
add_package
(
new_poetry
)
repository
.
add_package
(
Package
(
"cleo"
,
"1.0.0"
))
pool
=
Pool
()
pool
.
add_repository
(
repository
)
version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
command
.
_pool
=
pool
mocker
.
patch
(
"poetry.repositories.pypi_repository.PyPiRepository.find_packages"
,
mocker
.
patch
.
object
(
InstalledRepository
,
"load"
,
return_value
=
installed_repository
)
return_value
=
[
Package
(
"poetry"
,
version
)],
)
mocker
.
patch
.
object
(
command
,
"_check_recommended_installation"
,
return_value
=
None
)
mocker
.
patch
.
object
(
command
,
"_get_release_name"
,
return_value
=
"poetry-{}-darwin"
.
format
(
version
)
)
mocker
.
patch
(
"subprocess.check_output"
,
return_value
=
b
"Python 3.8.2"
)
http
.
register_uri
(
"GET"
,
command
.
BASE_URL
+
"/{}/poetry-{}-darwin.sha256sum"
.
format
(
version
,
version
),
body
=
FIXTURES
.
joinpath
(
"poetry-1.0.5-darwin.sha256sum"
)
.
read_bytes
(),
)
http
.
register_uri
(
"GET"
,
command
.
BASE_URL
+
"/{}/poetry-{}-darwin.tar.gz"
.
format
(
version
,
version
),
body
=
FIXTURES
.
joinpath
(
"poetry-1.0.5-darwin.tar.gz"
)
.
read_bytes
(),
)
tester
.
execute
()
tester
.
execute
()
bin_
=
Path
(
tmp_dir
)
.
joinpath
(
"bin"
)
expected_output
=
"""
\
lib
=
Path
(
tmp_dir
)
.
joinpath
(
"lib"
)
Updating Poetry to 1.2.0
assert
bin_
.
exists
()
Updating dependencies
script
=
bin_
.
joinpath
(
"poetry"
)
Resolving dependencies...
assert
script
.
exists
()
Package operations: 0 installs, 2 updates, 0 removals
expected_script
=
"""
\
# -*- coding: utf-8 -*-
- Updating cleo (0.8.2 -> 1.0.0)
import glob
- Updating poetry (1.2.0a0 -> 1.2.0)
import sys
import os
Updating the poetry script
lib = os.path.normpath(os.path.join(os.path.realpath(__file__), "../..", "lib"))
Poetry (1.2.0) is installed now. Great!
vendors = os.path.join(lib, "poetry", "_vendor")
current_vendors = os.path.join(
vendors, "py{}".format(".".join(str(v) for v in sys.version_info[:2]))
)
sys.path.insert(0, lib)
sys.path.insert(0, current_vendors)
if __name__ == "__main__":
from poetry.console import main
main()
"""
"""
if
not
WINDOWS
:
expected_script
=
"#!/usr/bin/env python
\n
"
+
expected_script
assert
tester
.
io
.
fetch_output
()
==
expected_output
assert
expected_script
==
script
.
read_text
()
def
test_self_update_does_not_update_non_recommended_installation
(
if
WINDOWS
:
tester
,
http
,
mocker
,
environ
,
tmp_venv
bat
=
bin_
.
joinpath
(
"poetry.bat"
)
):
expected_bat
=
'@echo off
\r\n
python "{}"
%*
\r\n
'
.
format
(
mocker
.
patch
.
object
(
EnvManager
,
"get_system_env"
,
return_value
=
tmp_venv
)
str
(
script
)
.
replace
(
os
.
environ
.
get
(
"USERPROFILE"
,
""
),
"
%
USERPROFILE
%
"
)
)
command
=
tester
.
command
assert
bat
.
exists
()
with
bat
.
open
(
newline
=
""
)
as
f
:
new_version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
assert
expected_bat
==
f
.
read
()
old_poetry
=
Package
(
"poetry"
,
__version__
)
assert
lib
.
exists
()
old_poetry
.
add_dependency
(
Factory
.
create_dependency
(
"cleo"
,
"^0.8.2"
))
assert
lib
.
joinpath
(
"poetry"
)
.
exists
()
new_poetry
=
Package
(
"poetry"
,
new_version
)
new_poetry
.
add_dependency
(
Factory
.
create_dependency
(
"cleo"
,
"^1.0.0"
))
installed_repository
=
Repository
()
installed_repository
.
add_package
(
old_poetry
)
installed_repository
.
add_package
(
Package
(
"cleo"
,
"0.8.2"
))
repository
=
Repository
()
repository
.
add_package
(
new_poetry
)
repository
.
add_package
(
Package
(
"cleo"
,
"1.0.0"
))
pool
=
Pool
()
pool
.
add_repository
(
repository
)
command
.
_pool
=
pool
with
pytest
.
raises
(
PoetrySimpleConsoleException
):
tester
.
execute
()
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