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
3855bc58
Commit
3855bc58
authored
Apr 16, 2023
by
Randy Döring
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tests: consistently use fixture_dir
parent
4c377351
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
419 additions
and
476 deletions
+419
-476
tests/conftest.py
+5
-5
tests/console/commands/self/test_update.py
+4
-6
tests/console/commands/test_build.py
+9
-6
tests/console/commands/test_check.py
+10
-14
tests/console/conftest.py
+8
-6
tests/helpers.py
+2
-10
tests/inspection/test_info.py
+17
-17
tests/installation/test_pip_installer.py
+6
-4
tests/masonry/builders/test_editable_builder.py
+15
-24
tests/mixology/version_solver/test_unsolvable.py
+6
-4
tests/packages/test_locker.py
+16
-19
tests/plugins/test_plugin_manager.py
+9
-10
tests/puzzle/test_provider.py
+59
-93
tests/puzzle/test_solver.py
+164
-189
tests/test_factory.py
+77
-51
tests/utils/test_env.py
+9
-11
tests/utils/test_helpers.py
+3
-7
No files found.
tests/conftest.py
View file @
3855bc58
...
@@ -282,6 +282,11 @@ def http() -> Iterator[type[httpretty.httpretty]]:
...
@@ -282,6 +282,11 @@ def http() -> Iterator[type[httpretty.httpretty]]:
yield
httpretty
yield
httpretty
@pytest.fixture
def
project_root
()
->
Path
:
return
Path
(
__file__
)
.
parent
.
parent
@pytest.fixture
(
scope
=
"session"
)
@pytest.fixture
(
scope
=
"session"
)
def
fixture_base
()
->
Path
:
def
fixture_base
()
->
Path
:
return
Path
(
__file__
)
.
parent
/
"fixtures"
return
Path
(
__file__
)
.
parent
/
"fixtures"
...
@@ -417,11 +422,6 @@ def project_factory(
...
@@ -417,11 +422,6 @@ def project_factory(
return
_factory
return
_factory
@pytest.fixture
def
project_root
()
->
Path
:
return
Path
(
__file__
)
.
parent
.
parent
@pytest.fixture
(
autouse
=
True
)
@pytest.fixture
(
autouse
=
True
)
def
set_simple_log_formatter
()
->
None
:
def
set_simple_log_formatter
()
->
None
:
"""
"""
...
...
tests/console/commands/self/test_update.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -20,12 +19,11 @@ if TYPE_CHECKING:
...
@@ -20,12 +19,11 @@ if TYPE_CHECKING:
from
tests.helpers
import
TestRepository
from
tests.helpers
import
TestRepository
from
tests.types
import
CommandTesterFactory
from
tests.types
import
CommandTesterFactory
from
tests.types
import
FixtureDirGetter
FIXTURES
=
Path
(
__file__
)
.
parent
.
joinpath
(
"fixtures"
)
@pytest.fixture
@pytest.fixture
()
def
setup
(
mocker
:
MockerFixture
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
def
setup
(
mocker
:
MockerFixture
,
fixture_dir
:
Path
):
mocker
.
patch
.
object
(
mocker
.
patch
.
object
(
Executor
,
Executor
,
"_download"
,
"_download"
,
...
@@ -46,7 +44,7 @@ def test_self_update_can_update_from_recommended_installation(
...
@@ -46,7 +44,7 @@ def test_self_update_can_update_from_recommended_installation(
tester
:
CommandTester
,
tester
:
CommandTester
,
repo
:
TestRepository
,
repo
:
TestRepository
,
installed
:
TestRepository
,
installed
:
TestRepository
,
):
)
->
None
:
new_version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
new_version
=
Version
.
parse
(
__version__
)
.
next_minor
()
.
text
old_poetry
=
Package
(
"poetry"
,
__version__
)
old_poetry
=
Package
(
"poetry"
,
__version__
)
...
...
tests/console/commands/test_build.py
View file @
3855bc58
...
@@ -3,23 +3,26 @@ from __future__ import annotations
...
@@ -3,23 +3,26 @@ from __future__ import annotations
import
shutil
import
shutil
import
tarfile
import
tarfile
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
from
poetry.factory
import
Factory
from
poetry.factory
import
Factory
if
TYPE_CHECKING
:
if
TYPE_CHECKING
:
from
pathlib
import
Path
from
poetry.utils.env
import
VirtualEnv
from
poetry.utils.env
import
VirtualEnv
from
tests.types
import
CommandTesterFactory
from
tests.types
import
CommandTesterFactory
from
tests.types
import
FixtureDirGetter
def
test_build_with_multiple_readme_files
(
def
test_build_with_multiple_readme_files
(
tmp_path
:
Path
,
tmp_venv
:
VirtualEnv
,
command_tester_factory
:
CommandTesterFactory
fixture_dir
:
FixtureDirGetter
,
):
tmp_path
:
Path
,
source_dir
=
(
tmp_venv
:
VirtualEnv
,
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"with_multiple_readme_files"
command_tester_factory
:
CommandTesterFactory
,
)
)
->
None
:
source_dir
=
fixture_dir
(
"with_multiple_readme_files"
)
target_dir
=
tmp_path
/
"project"
target_dir
=
tmp_path
/
"project"
shutil
.
copytree
(
str
(
source_dir
),
str
(
target_dir
))
shutil
.
copytree
(
str
(
source_dir
),
str
(
target_dir
))
...
...
tests/console/commands/test_check.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -11,6 +10,7 @@ if TYPE_CHECKING:
...
@@ -11,6 +10,7 @@ if TYPE_CHECKING:
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
from
tests.types
import
CommandTesterFactory
from
tests.types
import
CommandTesterFactory
from
tests.types
import
FixtureDirGetter
@pytest.fixture
()
@pytest.fixture
()
...
@@ -18,7 +18,7 @@ def tester(command_tester_factory: CommandTesterFactory) -> CommandTester:
...
@@ -18,7 +18,7 @@ def tester(command_tester_factory: CommandTesterFactory) -> CommandTester:
return
command_tester_factory
(
"check"
)
return
command_tester_factory
(
"check"
)
def
test_check_valid
(
tester
:
CommandTester
):
def
test_check_valid
(
tester
:
CommandTester
)
->
None
:
tester
.
execute
()
tester
.
execute
()
expected
=
"""
\
expected
=
"""
\
...
@@ -28,17 +28,14 @@ All set!
...
@@ -28,17 +28,14 @@ All set!
assert
tester
.
io
.
fetch_output
()
==
expected
assert
tester
.
io
.
fetch_output
()
==
expected
def
test_check_invalid
(
mocker
:
MockerFixture
,
tester
:
CommandTester
):
def
test_check_invalid
(
mocker
:
MockerFixture
,
tester
:
CommandTester
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
from
poetry.toml
import
TOMLFile
from
poetry.toml
import
TOMLFile
mocker
.
patch
(
mocker
.
patch
(
"poetry.poetry.Poetry.file"
,
"poetry.poetry.Poetry.file"
,
return_value
=
TOMLFile
(
return_value
=
TOMLFile
(
fixture_dir
(
"invalid_pyproject"
)
/
"pyproject.toml"
),
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"invalid_pyproject"
/
"pyproject.toml"
),
new_callable
=
mocker
.
PropertyMock
,
new_callable
=
mocker
.
PropertyMock
,
)
)
...
@@ -61,13 +58,12 @@ Warning: Deprecated classifier\
...
@@ -61,13 +58,12 @@ Warning: Deprecated classifier\
assert
tester
.
io
.
fetch_error
()
==
expected
assert
tester
.
io
.
fetch_error
()
==
expected
def
test_check_private
(
mocker
:
MockerFixture
,
tester
:
CommandTester
):
def
test_check_private
(
mocker
:
MockerFixture
,
tester
:
CommandTester
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
mocker
.
patch
(
mocker
.
patch
(
"poetry.factory.Factory.locate"
,
"poetry.factory.Factory.locate"
,
return_value
=
Path
(
__file__
)
.
parent
.
parent
.
parent
return_value
=
fixture_dir
(
"private_pyproject"
)
/
"pyproject.toml"
,
/
"fixtures"
/
"private_pyproject"
/
"pyproject.toml"
,
)
)
tester
.
execute
()
tester
.
execute
()
...
...
tests/console/conftest.py
View file @
3855bc58
...
@@ -2,7 +2,6 @@ from __future__ import annotations
...
@@ -2,7 +2,6 @@ from __future__ import annotations
import
os
import
os
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -22,6 +21,7 @@ from tests.helpers import mock_clone
...
@@ -22,6 +21,7 @@ from tests.helpers import mock_clone
if
TYPE_CHECKING
:
if
TYPE_CHECKING
:
from
collections.abc
import
Iterator
from
collections.abc
import
Iterator
from
pathlib
import
Path
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
...
@@ -31,6 +31,7 @@ if TYPE_CHECKING:
...
@@ -31,6 +31,7 @@ if TYPE_CHECKING:
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
Env
from
tests.conftest
import
Config
from
tests.conftest
import
Config
from
tests.types
import
CommandTesterFactory
from
tests.types
import
CommandTesterFactory
from
tests.types
import
FixtureDirGetter
from
tests.types
import
ProjectFactory
from
tests.types
import
ProjectFactory
...
@@ -96,11 +97,12 @@ def project_directory() -> str:
...
@@ -96,11 +97,12 @@ def project_directory() -> str:
@pytest.fixture
@pytest.fixture
def
poetry
(
project_directory
:
str
,
project_factory
:
ProjectFactory
)
->
Poetry
:
def
poetry
(
return
project_factory
(
project_directory
:
str
,
name
=
"simple"
,
project_factory
:
ProjectFactory
,
source
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
project_directory
,
fixture_dir
:
FixtureDirGetter
,
)
)
->
Poetry
:
return
project_factory
(
name
=
"simple"
,
source
=
fixture_dir
(
project_directory
))
@pytest.fixture
@pytest.fixture
...
...
tests/helpers.py
View file @
3855bc58
...
@@ -68,13 +68,6 @@ def get_dependency(
...
@@ -68,13 +68,6 @@ def get_dependency(
return
Factory
.
create_dependency
(
name
,
constraint
or
"*"
,
groups
=
groups
)
return
Factory
.
create_dependency
(
name
,
constraint
or
"*"
,
groups
=
groups
)
def
fixture
(
path
:
str
|
None
=
None
)
->
Path
:
if
path
:
return
FIXTURE_PATH
/
path
else
:
return
FIXTURE_PATH
def
copy_or_symlink
(
source
:
Path
,
dest
:
Path
)
->
None
:
def
copy_or_symlink
(
source
:
Path
,
dest
:
Path
)
->
None
:
if
dest
.
is_symlink
()
or
dest
.
is_file
():
if
dest
.
is_symlink
()
or
dest
.
is_file
():
dest
.
unlink
()
# missing_ok is only available in Python >= 3.8
dest
.
unlink
()
# missing_ok is only available in Python >= 3.8
...
@@ -113,7 +106,7 @@ def mock_clone(
...
@@ -113,7 +106,7 @@ def mock_clone(
parsed
=
ParsedUrl
.
parse
(
url
)
parsed
=
ParsedUrl
.
parse
(
url
)
path
=
re
.
sub
(
r"(.git)?$"
,
""
,
parsed
.
pathname
.
lstrip
(
"/"
))
path
=
re
.
sub
(
r"(.git)?$"
,
""
,
parsed
.
pathname
.
lstrip
(
"/"
))
folder
=
Path
(
__file__
)
.
parent
/
"fixtures"
/
"git"
/
parsed
.
resource
/
path
folder
=
FIXTURE_PATH
/
"git"
/
parsed
.
resource
/
path
if
not
source_root
:
if
not
source_root
:
source_root
=
Path
(
Config
.
create
()
.
get
(
"cache-dir"
))
/
"src"
source_root
=
Path
(
Config
.
create
()
.
get
(
"cache-dir"
))
/
"src"
...
@@ -128,8 +121,7 @@ def mock_clone(
...
@@ -128,8 +121,7 @@ def mock_clone(
def
mock_download
(
url
:
str
,
dest
:
Path
)
->
None
:
def
mock_download
(
url
:
str
,
dest
:
Path
)
->
None
:
parts
=
urllib
.
parse
.
urlparse
(
url
)
parts
=
urllib
.
parse
.
urlparse
(
url
)
fixtures
=
Path
(
__file__
)
.
parent
/
"fixtures"
fixture
=
FIXTURE_PATH
/
parts
.
path
.
lstrip
(
"/"
)
fixture
=
fixtures
/
parts
.
path
.
lstrip
(
"/"
)
copy_or_symlink
(
fixture
,
dest
)
copy_or_symlink
(
fixture
,
dest
)
...
...
tests/inspection/test_info.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
subprocess
import
CalledProcessError
from
subprocess
import
CalledProcessError
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
...
@@ -13,10 +12,11 @@ from poetry.utils.env import VirtualEnv
...
@@ -13,10 +12,11 @@ from poetry.utils.env import VirtualEnv
if
TYPE_CHECKING
:
if
TYPE_CHECKING
:
from
pathlib
import
Path
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
FIXTURE_DIR_BASE
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
from
tests.types
import
FixtureDirGetter
FIXTURE_DIR_INSPECTIONS
=
FIXTURE_DIR_BASE
/
"inspection"
@pytest.fixture
(
autouse
=
True
)
@pytest.fixture
(
autouse
=
True
)
...
@@ -25,13 +25,13 @@ def pep517_metadata_mock() -> None:
...
@@ -25,13 +25,13 @@ def pep517_metadata_mock() -> None:
@pytest.fixture
@pytest.fixture
def
demo_sdist
()
->
Path
:
def
demo_sdist
(
fixture_dir
:
FixtureDirGetter
)
->
Path
:
return
FIXTURE_DIR_BASE
/
"distributions"
/
"demo-0.1.0.tar.gz"
return
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
@pytest.fixture
@pytest.fixture
def
demo_wheel
()
->
Path
:
def
demo_wheel
(
fixture_dir
:
FixtureDirGetter
)
->
Path
:
return
FIXTURE_DIR_BASE
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
return
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
@pytest.fixture
@pytest.fixture
...
@@ -128,15 +128,15 @@ def test_info_from_bdist(demo_wheel: Path) -> None:
...
@@ -128,15 +128,15 @@ def test_info_from_bdist(demo_wheel: Path) -> None:
demo_check_info
(
info
)
demo_check_info
(
info
)
def
test_info_from_poetry_directory
()
->
None
:
def
test_info_from_poetry_directory
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
info
=
PackageInfo
.
from_directory
(
info
=
PackageInfo
.
from_directory
(
FIXTURE_DIR_INSPECTIONS
/
"demo"
,
disable_build
=
True
fixture_dir
(
"inspection"
)
/
"demo"
,
disable_build
=
True
)
)
demo_check_info
(
info
)
demo_check_info
(
info
)
def
test_info_from_poetry_directory_fallback_on_poetry_create_error
(
def
test_info_from_poetry_directory_fallback_on_poetry_create_error
(
mocker
:
MockerFixture
,
mocker
:
MockerFixture
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
)
->
None
:
mock_create_poetry
=
mocker
.
patch
(
mock_create_poetry
=
mocker
.
patch
(
"poetry.inspection.info.Factory.create_poetry"
,
side_effect
=
RuntimeError
"poetry.inspection.info.Factory.create_poetry"
,
side_effect
=
RuntimeError
...
@@ -146,16 +146,16 @@ def test_info_from_poetry_directory_fallback_on_poetry_create_error(
...
@@ -146,16 +146,16 @@ def test_info_from_poetry_directory_fallback_on_poetry_create_error(
"poetry.inspection.info.get_pep517_metadata"
"poetry.inspection.info.get_pep517_metadata"
)
)
PackageInfo
.
from_directory
(
FIXTURE_DIR_INSPECTIONS
/
"demo_poetry_package"
)
PackageInfo
.
from_directory
(
fixture_dir
(
"inspection"
)
/
"demo_poetry_package"
)
assert
mock_create_poetry
.
call_count
==
1
assert
mock_create_poetry
.
call_count
==
1
assert
mock_get_poetry_package
.
call_count
==
1
assert
mock_get_poetry_package
.
call_count
==
1
assert
mock_get_pep517_metadata
.
call_count
==
1
assert
mock_get_pep517_metadata
.
call_count
==
1
def
test_info_from_requires_txt
()
->
None
:
def
test_info_from_requires_txt
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
info
=
PackageInfo
.
from_metadata
(
info
=
PackageInfo
.
from_metadata
(
FIXTURE_DIR_INSPECTIONS
/
"demo_only_requires_txt.egg-info"
fixture_dir
(
"inspection"
)
/
"demo_only_requires_txt.egg-info"
)
)
assert
info
is
not
None
assert
info
is
not
None
demo_check_info
(
info
)
demo_check_info
(
info
)
...
@@ -171,9 +171,9 @@ def test_info_from_setup_cfg(demo_setup_cfg: Path) -> None:
...
@@ -171,9 +171,9 @@ def test_info_from_setup_cfg(demo_setup_cfg: Path) -> None:
demo_check_info
(
info
,
requires_dist
=
{
"package"
})
demo_check_info
(
info
,
requires_dist
=
{
"package"
})
def
test_info_no_setup_pkg_info_no_deps
()
->
None
:
def
test_info_no_setup_pkg_info_no_deps
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
info
=
PackageInfo
.
from_directory
(
info
=
PackageInfo
.
from_directory
(
FIXTURE_DIR_INSPECTIONS
/
"demo_no_setup_pkg_info_no_deps"
,
fixture_dir
(
"inspection"
)
/
"demo_no_setup_pkg_info_no_deps"
,
disable_build
=
True
,
disable_build
=
True
,
)
)
assert
info
.
name
==
"demo"
assert
info
.
name
==
"demo"
...
@@ -250,8 +250,8 @@ def test_info_setup_missing_mandatory_should_trigger_pep517(
...
@@ -250,8 +250,8 @@ def test_info_setup_missing_mandatory_should_trigger_pep517(
assert
spy
.
call_count
==
1
assert
spy
.
call_count
==
1
def
test_info_prefer_poetry_config_over_egg_info
()
->
None
:
def
test_info_prefer_poetry_config_over_egg_info
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
info
=
PackageInfo
.
from_directory
(
info
=
PackageInfo
.
from_directory
(
FIXTURE_DIR_INSPECTIONS
/
"demo_with_obsolete_egg_info"
fixture_dir
(
"inspection"
)
/
"demo_with_obsolete_egg_info"
)
)
demo_check_info
(
info
)
demo_check_info
(
info
)
tests/installation/test_pip_installer.py
View file @
3855bc58
...
@@ -24,6 +24,7 @@ if TYPE_CHECKING:
...
@@ -24,6 +24,7 @@ if TYPE_CHECKING:
from
poetry.utils.env
import
VirtualEnv
from
poetry.utils.env
import
VirtualEnv
from
tests.conftest
import
Config
from
tests.conftest
import
Config
from
tests.types
import
FixtureDirGetter
@pytest.fixture
@pytest.fixture
...
@@ -278,7 +279,10 @@ def test_install_with_trusted_host(config: Config, env: NullEnv) -> None:
...
@@ -278,7 +279,10 @@ def test_install_with_trusted_host(config: Config, env: NullEnv) -> None:
def
test_install_directory_fallback_on_poetry_create_error
(
def
test_install_directory_fallback_on_poetry_create_error
(
mocker
:
MockerFixture
,
tmp_venv
:
VirtualEnv
,
pool
:
RepositoryPool
mocker
:
MockerFixture
,
tmp_venv
:
VirtualEnv
,
pool
:
RepositoryPool
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
)
->
None
:
mock_create_poetry
=
mocker
.
patch
(
mock_create_poetry
=
mocker
.
patch
(
"poetry.factory.Factory.create_poetry"
,
side_effect
=
RuntimeError
"poetry.factory.Factory.create_poetry"
,
side_effect
=
RuntimeError
...
@@ -293,9 +297,7 @@ def test_install_directory_fallback_on_poetry_create_error(
...
@@ -293,9 +297,7 @@ def test_install_directory_fallback_on_poetry_create_error(
"demo"
,
"demo"
,
"1.0.0"
,
"1.0.0"
,
source_type
=
"directory"
,
source_type
=
"directory"
,
source_url
=
str
(
source_url
=
str
(
fixture_dir
(
"inspection"
)
/
"demo_poetry_package"
),
Path
(
__file__
)
.
parent
.
parent
/
"fixtures/inspection/demo_poetry_package"
),
)
)
installer
=
PipInstaller
(
tmp_venv
,
NullIO
(),
pool
)
installer
=
PipInstaller
(
tmp_venv
,
NullIO
(),
pool
)
...
...
tests/masonry/builders/test_editable_builder.py
View file @
3855bc58
...
@@ -28,51 +28,40 @@ if TYPE_CHECKING:
...
@@ -28,51 +28,40 @@ if TYPE_CHECKING:
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
from
poetry.poetry
import
Poetry
from
poetry.poetry
import
Poetry
from
tests.types
import
FixtureDirGetter
@pytest.fixture
()
@pytest.fixture
()
def
simple_poetry
()
->
Poetry
:
def
simple_poetry
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"simple_project"
))
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"simple_project"
)
return
poetry
return
poetry
@pytest.fixture
()
@pytest.fixture
()
def
project_with_include
()
->
Poetry
:
def
project_with_include
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with-include"
))
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"with-include"
)
return
poetry
return
poetry
@pytest.fixture
()
@pytest.fixture
()
def
extended_poetry
()
->
Poetry
:
def
extended_poetry
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"extended_project"
))
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"extended_project"
)
return
poetry
return
poetry
@pytest.fixture
()
@pytest.fixture
()
def
extended_without_setup_poetry
()
->
Poetry
:
def
extended_without_setup_poetry
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"extended_project_without_setup"
))
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"extended_project_without_setup"
)
return
poetry
return
poetry
@pytest.fixture
@pytest.fixture
def
with_multiple_readme_files
()
->
Poetry
:
def
with_multiple_readme_files
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_multiple_readme_files"
))
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"with_multiple_readme_files"
)
return
poetry
return
poetry
...
@@ -235,9 +224,11 @@ def test_builder_falls_back_on_setup_and_pip_for_packages_with_build_scripts(
...
@@ -235,9 +224,11 @@ def test_builder_falls_back_on_setup_and_pip_for_packages_with_build_scripts(
assert
[]
==
env
.
executed
assert
[]
==
env
.
executed
def
test_builder_setup_generation_runs_with_pip_editable
(
tmp_path
:
Path
)
->
None
:
def
test_builder_setup_generation_runs_with_pip_editable
(
fixture_dir
:
FixtureDirGetter
,
tmp_path
:
Path
)
->
None
:
# create an isolated copy of the project
# create an isolated copy of the project
fixture
=
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
/
"extended_project"
fixture
=
fixture_dir
(
"extended_project"
)
extended_project
=
tmp_path
/
"extended_project"
extended_project
=
tmp_path
/
"extended_project"
shutil
.
copytree
(
fixture
,
extended_project
)
shutil
.
copytree
(
fixture
,
extended_project
)
...
...
tests/mixology/version_solver/test_unsolvable.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
from
poetry.factory
import
Factory
from
poetry.factory
import
Factory
...
@@ -13,6 +12,7 @@ if TYPE_CHECKING:
...
@@ -13,6 +12,7 @@ if TYPE_CHECKING:
from
poetry.repositories
import
Repository
from
poetry.repositories
import
Repository
from
tests.mixology.version_solver.conftest
import
Provider
from
tests.mixology.version_solver.conftest
import
Provider
from
tests.types
import
FixtureDirGetter
def
test_no_version_matching_constraint
(
def
test_no_version_matching_constraint
(
...
@@ -94,11 +94,13 @@ Because myapp depends on both foo (1.0.0) and foo (2.0.0), version solving faile
...
@@ -94,11 +94,13 @@ Because myapp depends on both foo (1.0.0) and foo (2.0.0), version solving faile
def
test_disjoint_root_constraints_path_dependencies
(
def
test_disjoint_root_constraints_path_dependencies
(
root
:
ProjectPackage
,
provider
:
Provider
,
repo
:
Repository
root
:
ProjectPackage
,
provider
:
Provider
,
repo
:
Repository
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
)
->
None
:
provider
.
set_package_python_versions
(
"^3.7"
)
provider
.
set_package_python_versions
(
"^3.7"
)
fixtures
=
Path
(
__file__
)
.
parent
.
parent
.
parent
/
"fixtures"
project_dir
=
fixture_dir
(
"with_conditional_path_deps"
)
project_dir
=
fixtures
.
joinpath
(
"with_conditional_path_deps"
)
dependency1
=
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
project_dir
/
"demo_one"
})
dependency1
=
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
project_dir
/
"demo_one"
})
root
.
add_dependency
(
dependency1
)
root
.
add_dependency
(
dependency1
)
dependency2
=
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
project_dir
/
"demo_two"
})
dependency2
=
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
project_dir
/
"demo_two"
})
...
...
tests/packages/test_locker.py
View file @
3855bc58
...
@@ -737,14 +737,13 @@ content-hash = "c3d07fca33fba542ef2b2a4d75bf5b48d892d21a830e2ad9c952ba5123a52f77
...
@@ -737,14 +737,13 @@ content-hash = "c3d07fca33fba542ef2b2a4d75bf5b48d892d21a830e2ad9c952ba5123a52f77
def
test_root_extras_dependencies_are_ordered
(
def
test_root_extras_dependencies_are_ordered
(
locker
:
Locker
,
root
:
ProjectPackage
locker
:
Locker
,
root
:
ProjectPackage
,
fixture_base
:
Path
)
->
None
:
)
->
None
:
root_dir
=
Path
(
__file__
)
.
parent
.
parent
.
joinpath
(
"fixtures"
)
Factory
.
create_dependency
(
"B"
,
"1.0.0"
,
root_dir
=
fixture_base
)
Factory
.
create_dependency
(
"B"
,
"1.0.0"
,
root_dir
=
root_dir
)
Factory
.
create_dependency
(
"C"
,
"1.0.0"
,
root_dir
=
fixture_base
)
Factory
.
create_dependency
(
"C"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_first
=
Factory
.
create_dependency
(
"first"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_first
=
Factory
.
create_dependency
(
"first"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_second
=
Factory
.
create_dependency
(
"second"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_second
=
Factory
.
create_dependency
(
"second"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_third
=
Factory
.
create_dependency
(
"third"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_third
=
Factory
.
create_dependency
(
"third"
,
"1.0.0"
,
root_dir
=
root_dir
)
root
.
extras
=
{
root
.
extras
=
{
"C"
:
[
package_third
,
package_second
,
package_first
],
"C"
:
[
package_third
,
package_second
,
package_first
],
...
@@ -834,25 +833,24 @@ content-hash = "c3d07fca33fba542ef2b2a4d75bf5b48d892d21a830e2ad9c952ba5123a52f77
...
@@ -834,25 +833,24 @@ content-hash = "c3d07fca33fba542ef2b2a4d75bf5b48d892d21a830e2ad9c952ba5123a52f77
def
test_locker_dumps_dependency_information_correctly
(
def
test_locker_dumps_dependency_information_correctly
(
locker
:
Locker
,
root
:
ProjectPackage
locker
:
Locker
,
root
:
ProjectPackage
,
fixture_base
:
Path
)
->
None
:
)
->
None
:
root_dir
=
Path
(
__file__
)
.
parent
.
parent
.
joinpath
(
"fixtures"
)
package_a
=
get_package
(
"A"
,
"1.0.0"
)
package_a
=
get_package
(
"A"
,
"1.0.0"
)
package_a
.
add_dependency
(
package_a
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
"B"
,
{
"path"
:
"project_with_extras"
,
"develop"
:
True
},
root_dir
=
root_dir
"B"
,
{
"path"
:
"project_with_extras"
,
"develop"
:
True
},
root_dir
=
fixture_base
)
)
)
)
package_a
.
add_dependency
(
package_a
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
"C"
,
"C"
,
{
"path"
:
"directory/project_with_transitive_directory_dependencies"
},
{
"path"
:
"directory/project_with_transitive_directory_dependencies"
},
root_dir
=
root_dir
,
root_dir
=
fixture_base
,
)
)
)
)
package_a
.
add_dependency
(
package_a
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
"D"
,
{
"path"
:
"distributions/demo-0.1.0.tar.gz"
},
root_dir
=
root_dir
"D"
,
{
"path"
:
"distributions/demo-0.1.0.tar.gz"
},
root_dir
=
fixture_base
)
)
)
)
package_a
.
add_dependency
(
package_a
.
add_dependency
(
...
@@ -969,15 +967,14 @@ content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8
...
@@ -969,15 +967,14 @@ content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8
def
test_locker_dumps_dependency_extras_in_correct_order
(
def
test_locker_dumps_dependency_extras_in_correct_order
(
locker
:
Locker
,
root
:
ProjectPackage
locker
:
Locker
,
root
:
ProjectPackage
,
fixture_base
:
Path
)
->
None
:
)
->
None
:
root_dir
=
Path
(
__file__
)
.
parent
.
parent
.
joinpath
(
"fixtures"
)
package_a
=
get_package
(
"A"
,
"1.0.0"
)
package_a
=
get_package
(
"A"
,
"1.0.0"
)
Factory
.
create_dependency
(
"B"
,
"1.0.0"
,
root_dir
=
root_dir
)
Factory
.
create_dependency
(
"B"
,
"1.0.0"
,
root_dir
=
fixture_base
)
Factory
.
create_dependency
(
"C"
,
"1.0.0"
,
root_dir
=
root_dir
)
Factory
.
create_dependency
(
"C"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_first
=
Factory
.
create_dependency
(
"first"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_first
=
Factory
.
create_dependency
(
"first"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_second
=
Factory
.
create_dependency
(
"second"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_second
=
Factory
.
create_dependency
(
"second"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_third
=
Factory
.
create_dependency
(
"third"
,
"1.0.0"
,
root_dir
=
root_dir
)
package_third
=
Factory
.
create_dependency
(
"third"
,
"1.0.0"
,
root_dir
=
fixture_base
)
package_a
.
extras
=
{
package_a
.
extras
=
{
"C"
:
[
package_third
,
package_second
,
package_first
],
"C"
:
[
package_third
,
package_second
,
package_first
],
...
...
tests/plugins/test_plugin_manager.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -21,8 +20,7 @@ if TYPE_CHECKING:
...
@@ -21,8 +20,7 @@ if TYPE_CHECKING:
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
from
tests.conftest
import
Config
from
tests.conftest
import
Config
from
tests.types
import
FixtureDirGetter
CWD
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"simple_project"
class
ManagerFactory
(
Protocol
):
class
ManagerFactory
(
Protocol
):
...
@@ -46,13 +44,14 @@ class InvalidPlugin:
...
@@ -46,13 +44,14 @@ class InvalidPlugin:
poetry
.
package
.
version
=
"9.9.9"
poetry
.
package
.
version
=
"9.9.9"
@pytest.fixture
()
@pytest.fixture
def
poetry
(
tmp_path
:
Path
,
config
:
Config
)
->
Poetry
:
def
poetry
(
fixture_dir
:
FixtureDirGetter
,
config
:
Config
)
->
Poetry
:
project_path
=
fixture_dir
(
"simple_project"
)
poetry
=
Poetry
(
poetry
=
Poetry
(
CWD
/
"pyproject.toml"
,
project_path
/
"pyproject.toml"
,
{},
{},
ProjectPackage
(
"simple-project"
,
"1.2.3"
),
ProjectPackage
(
"simple-project"
,
"1.2.3"
),
Locker
(
CWD
/
"poetry.lock"
,
{}),
Locker
(
project_path
/
"poetry.lock"
,
{}),
config
,
config
,
)
)
...
@@ -82,7 +81,7 @@ def test_load_plugins_and_activate(
...
@@ -82,7 +81,7 @@ def test_load_plugins_and_activate(
poetry
:
Poetry
,
poetry
:
Poetry
,
io
:
BufferedIO
,
io
:
BufferedIO
,
with_my_plugin
:
None
,
with_my_plugin
:
None
,
):
)
->
None
:
manager
=
manager_factory
()
manager
=
manager_factory
()
manager
.
load_plugins
()
manager
.
load_plugins
()
manager
.
activate
(
poetry
,
io
)
manager
.
activate
(
poetry
,
io
)
...
@@ -106,7 +105,7 @@ def test_load_plugins_with_invalid_plugin(
...
@@ -106,7 +105,7 @@ def test_load_plugins_with_invalid_plugin(
poetry
:
Poetry
,
poetry
:
Poetry
,
io
:
BufferedIO
,
io
:
BufferedIO
,
with_invalid_plugin
:
None
,
with_invalid_plugin
:
None
,
):
)
->
None
:
manager
=
manager_factory
()
manager
=
manager_factory
()
with
pytest
.
raises
(
ValueError
):
with
pytest
.
raises
(
ValueError
):
...
@@ -118,7 +117,7 @@ def test_load_plugins_with_plugins_disabled(
...
@@ -118,7 +117,7 @@ def test_load_plugins_with_plugins_disabled(
poetry
:
Poetry
,
poetry
:
Poetry
,
io
:
BufferedIO
,
io
:
BufferedIO
,
with_my_plugin
:
None
,
with_my_plugin
:
None
,
):
)
->
None
:
no_plugin_manager
.
load_plugins
()
no_plugin_manager
.
load_plugins
()
assert
poetry
.
package
.
version
.
text
==
"1.2.3"
assert
poetry
.
package
.
version
.
text
==
"1.2.3"
...
...
tests/puzzle/test_provider.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
subprocess
import
CalledProcessError
from
subprocess
import
CalledProcessError
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
...
@@ -29,6 +28,8 @@ from tests.helpers import get_dependency
...
@@ -29,6 +28,8 @@ from tests.helpers import get_dependency
if
TYPE_CHECKING
:
if
TYPE_CHECKING
:
from
pytest_mock
import
MockerFixture
from
pytest_mock
import
MockerFixture
from
tests.types
import
FixtureDirGetter
SOME_URL
=
"https://example.com/path.tar.gz"
SOME_URL
=
"https://example.com/path.tar.gz"
...
@@ -157,7 +158,7 @@ def test_search_for_direct_origin_and_extras(
...
@@ -157,7 +158,7 @@ def test_search_for_direct_origin_and_extras(
@pytest.mark.parametrize
(
"value"
,
[
True
,
False
])
@pytest.mark.parametrize
(
"value"
,
[
True
,
False
])
def
test_search_for_vcs_retains_develop_flag
(
provider
:
Provider
,
value
:
bool
):
def
test_search_for_vcs_retains_develop_flag
(
provider
:
Provider
,
value
:
bool
)
->
None
:
dependency
=
VCSDependency
(
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
,
develop
=
value
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
,
develop
=
value
)
)
...
@@ -165,7 +166,7 @@ def test_search_for_vcs_retains_develop_flag(provider: Provider, value: bool):
...
@@ -165,7 +166,7 @@ def test_search_for_vcs_retains_develop_flag(provider: Provider, value: bool):
assert
package
.
develop
==
value
assert
package
.
develop
==
value
def
test_search_for_vcs_setup_egg_info
(
provider
:
Provider
):
def
test_search_for_vcs_setup_egg_info
(
provider
:
Provider
)
->
None
:
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
)
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -183,7 +184,7 @@ def test_search_for_vcs_setup_egg_info(provider: Provider):
...
@@ -183,7 +184,7 @@ def test_search_for_vcs_setup_egg_info(provider: Provider):
}
}
def
test_search_for_vcs_setup_egg_info_with_extras
(
provider
:
Provider
):
def
test_search_for_vcs_setup_egg_info_with_extras
(
provider
:
Provider
)
->
None
:
dependency
=
VCSDependency
(
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
,
extras
=
[
"foo"
]
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
,
extras
=
[
"foo"
]
)
)
...
@@ -203,7 +204,7 @@ def test_search_for_vcs_setup_egg_info_with_extras(provider: Provider):
...
@@ -203,7 +204,7 @@ def test_search_for_vcs_setup_egg_info_with_extras(provider: Provider):
}
}
def
test_search_for_vcs_read_setup
(
provider
:
Provider
,
mocker
:
MockerFixture
):
def
test_search_for_vcs_read_setup
(
provider
:
Provider
,
mocker
:
MockerFixture
)
->
None
:
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
)
dependency
=
VCSDependency
(
"demo"
,
"git"
,
"https://github.com/demo/demo.git"
)
...
@@ -225,7 +226,7 @@ def test_search_for_vcs_read_setup(provider: Provider, mocker: MockerFixture):
...
@@ -225,7 +226,7 @@ def test_search_for_vcs_read_setup(provider: Provider, mocker: MockerFixture):
def
test_search_for_vcs_read_setup_with_extras
(
def
test_search_for_vcs_read_setup_with_extras
(
provider
:
Provider
,
mocker
:
MockerFixture
provider
:
Provider
,
mocker
:
MockerFixture
):
)
->
None
:
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
dependency
=
VCSDependency
(
dependency
=
VCSDependency
(
...
@@ -245,7 +246,7 @@ def test_search_for_vcs_read_setup_with_extras(
...
@@ -245,7 +246,7 @@ def test_search_for_vcs_read_setup_with_extras(
def
test_search_for_vcs_read_setup_raises_error_if_no_version
(
def
test_search_for_vcs_read_setup_raises_error_if_no_version
(
provider
:
Provider
,
mocker
:
MockerFixture
provider
:
Provider
,
mocker
:
MockerFixture
):
)
->
None
:
mocker
.
patch
(
mocker
.
patch
(
"poetry.inspection.info.get_pep517_metadata"
,
"poetry.inspection.info.get_pep517_metadata"
,
return_value
=
PackageInfo
(
name
=
"demo"
,
version
=
None
),
return_value
=
PackageInfo
(
name
=
"demo"
,
version
=
None
),
...
@@ -258,15 +259,12 @@ def test_search_for_vcs_read_setup_raises_error_if_no_version(
...
@@ -258,15 +259,12 @@ def test_search_for_vcs_read_setup_raises_error_if_no_version(
@pytest.mark.parametrize
(
"directory"
,
[
"demo"
,
"non-canonical-name"
])
@pytest.mark.parametrize
(
"directory"
,
[
"demo"
,
"non-canonical-name"
])
def
test_search_for_directory_setup_egg_info
(
provider
:
Provider
,
directory
:
str
):
def
test_search_for_directory_setup_egg_info
(
provider
:
Provider
,
directory
:
str
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
directory
,
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
directory
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -284,15 +282,12 @@ def test_search_for_directory_setup_egg_info(provider: Provider, directory: str)
...
@@ -284,15 +282,12 @@ def test_search_for_directory_setup_egg_info(provider: Provider, directory: str)
}
}
def
test_search_for_directory_setup_egg_info_with_extras
(
provider
:
Provider
):
def
test_search_for_directory_setup_egg_info_with_extras
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
,
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
,
extras
=
[
"foo"
],
extras
=
[
"foo"
],
)
)
...
@@ -312,21 +307,13 @@ def test_search_for_directory_setup_egg_info_with_extras(provider: Provider):
...
@@ -312,21 +307,13 @@ def test_search_for_directory_setup_egg_info_with_extras(provider: Provider):
@pytest.mark.parametrize
(
"directory"
,
[
"demo"
,
"non-canonical-name"
])
@pytest.mark.parametrize
(
"directory"
,
[
"demo"
,
"non-canonical-name"
])
def
test_search_for_directory_setup_with_base
(
provider
:
Provider
,
directory
:
str
):
def
test_search_for_directory_setup_with_base
(
provider
:
Provider
,
directory
:
str
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
directory
,
/
"fixtures"
base
=
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
directory
,
/
"git"
/
"github.com"
/
"demo"
/
directory
,
base
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
directory
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -342,29 +329,17 @@ def test_search_for_directory_setup_with_base(provider: Provider, directory: str
...
@@ -342,29 +329,17 @@ def test_search_for_directory_setup_with_base(provider: Provider, directory: str
"foo"
:
[
get_dependency
(
"cleo"
)],
"foo"
:
[
get_dependency
(
"cleo"
)],
"bar"
:
[
get_dependency
(
"tomlkit"
)],
"bar"
:
[
get_dependency
(
"tomlkit"
)],
}
}
assert
package
.
root_dir
==
(
assert
package
.
root_dir
==
(
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
directory
)
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
directory
)
def
test_search_for_directory_setup_read_setup
(
def
test_search_for_directory_setup_read_setup
(
provider
:
Provider
,
mocker
:
MockerFixture
provider
:
Provider
,
mocker
:
MockerFixture
,
fixture_dir
:
FixtureDirGetter
):
)
->
None
:
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
,
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -383,18 +358,13 @@ def test_search_for_directory_setup_read_setup(
...
@@ -383,18 +358,13 @@ def test_search_for_directory_setup_read_setup(
def
test_search_for_directory_setup_read_setup_with_extras
(
def
test_search_for_directory_setup_read_setup_with_extras
(
provider
:
Provider
,
mocker
:
MockerFixture
provider
:
Provider
,
mocker
:
MockerFixture
,
fixture_dir
:
FixtureDirGetter
):
)
->
None
:
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
mocker
.
patch
(
"poetry.utils.env.EnvManager.get"
,
return_value
=
MockEnv
())
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
,
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
,
extras
=
[
"foo"
],
extras
=
[
"foo"
],
)
)
...
@@ -413,15 +383,12 @@ def test_search_for_directory_setup_read_setup_with_extras(
...
@@ -413,15 +383,12 @@ def test_search_for_directory_setup_read_setup_with_extras(
}
}
def
test_search_for_directory_setup_read_setup_with_no_dependencies
(
provider
:
Provider
):
def
test_search_for_directory_setup_read_setup_with_no_dependencies
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"no-dependencies"
,
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"no-dependencies"
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -432,10 +399,12 @@ def test_search_for_directory_setup_read_setup_with_no_dependencies(provider: Pr
...
@@ -432,10 +399,12 @@ def test_search_for_directory_setup_read_setup_with_no_dependencies(provider: Pr
assert
package
.
extras
==
{}
assert
package
.
extras
==
{}
def
test_search_for_directory_poetry
(
provider
:
Provider
):
def
test_search_for_directory_poetry
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"project-with-extras"
,
"project-with-extras"
,
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"project_with_extras"
,
fixture_dir
(
"project_with_extras"
)
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -460,10 +429,12 @@ def test_search_for_directory_poetry(provider: Provider):
...
@@ -460,10 +429,12 @@ def test_search_for_directory_poetry(provider: Provider):
}
}
def
test_search_for_directory_poetry_with_extras
(
provider
:
Provider
):
def
test_search_for_directory_poetry_with_extras
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
DirectoryDependency
(
dependency
=
DirectoryDependency
(
"project-with-extras"
,
"project-with-extras"
,
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"project_with_extras"
,
fixture_dir
(
"project_with_extras"
)
,
extras
=
[
"extras_a"
],
extras
=
[
"extras_a"
],
)
)
...
@@ -489,13 +460,12 @@ def test_search_for_directory_poetry_with_extras(provider: Provider):
...
@@ -489,13 +460,12 @@ def test_search_for_directory_poetry_with_extras(provider: Provider):
}
}
def
test_search_for_file_sdist
(
provider
:
Provider
):
def
test_search_for_file_sdist
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
FileDependency
(
dependency
=
FileDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
,
/
"fixtures"
/
"distributions"
/
"demo-0.1.0.tar.gz"
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -520,13 +490,12 @@ def test_search_for_file_sdist(provider: Provider):
...
@@ -520,13 +490,12 @@ def test_search_for_file_sdist(provider: Provider):
}
}
def
test_search_for_file_sdist_with_extras
(
provider
:
Provider
):
def
test_search_for_file_sdist_with_extras
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
FileDependency
(
dependency
=
FileDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
,
/
"fixtures"
/
"distributions"
/
"demo-0.1.0.tar.gz"
,
extras
=
[
"foo"
],
extras
=
[
"foo"
],
)
)
...
@@ -552,13 +521,12 @@ def test_search_for_file_sdist_with_extras(provider: Provider):
...
@@ -552,13 +521,12 @@ def test_search_for_file_sdist_with_extras(provider: Provider):
}
}
def
test_search_for_file_wheel
(
provider
:
Provider
):
def
test_search_for_file_wheel
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
FileDependency
(
dependency
=
FileDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
,
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
,
)
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
package
=
provider
.
search_for_direct_origin_dependency
(
dependency
)
...
@@ -583,13 +551,12 @@ def test_search_for_file_wheel(provider: Provider):
...
@@ -583,13 +551,12 @@ def test_search_for_file_wheel(provider: Provider):
}
}
def
test_search_for_file_wheel_with_extras
(
provider
:
Provider
):
def
test_search_for_file_wheel_with_extras
(
provider
:
Provider
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
dependency
=
FileDependency
(
dependency
=
FileDependency
(
"demo"
,
"demo"
,
Path
(
__file__
)
.
parent
.
parent
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
,
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
,
extras
=
[
"foo"
],
extras
=
[
"foo"
],
)
)
...
@@ -639,10 +606,9 @@ def test_complete_package_does_not_merge_different_source_names(
...
@@ -639,10 +606,9 @@ def test_complete_package_does_not_merge_different_source_names(
def
test_complete_package_preserves_source_type
(
def
test_complete_package_preserves_source_type
(
provider
:
Provider
,
root
:
ProjectPackage
provider
:
Provider
,
root
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
)
->
None
:
fixtures
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
project_dir
=
fixture_dir
(
"with_conditional_path_deps"
)
project_dir
=
fixtures
.
joinpath
(
"with_conditional_path_deps"
)
for
folder
in
[
"demo_one"
,
"demo_two"
]:
for
folder
in
[
"demo_one"
,
"demo_two"
]:
path
=
(
project_dir
/
folder
)
.
as_posix
()
path
=
(
project_dir
/
folder
)
.
as_posix
()
root
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
root
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
...
@@ -737,7 +703,7 @@ def test_complete_package_with_extras_preserves_source_name(
...
@@ -737,7 +703,7 @@ def test_complete_package_with_extras_preserves_source_name(
@pytest.mark.parametrize
(
"with_extra"
,
[
False
,
True
])
@pytest.mark.parametrize
(
"with_extra"
,
[
False
,
True
])
def
test_complete_package_fetches_optional_vcs_dependency_only_if_requested
(
def
test_complete_package_fetches_optional_vcs_dependency_only_if_requested
(
provider
:
Provider
,
repository
:
Repository
,
mocker
:
MockerFixture
,
with_extra
:
bool
provider
:
Provider
,
repository
:
Repository
,
mocker
:
MockerFixture
,
with_extra
:
bool
):
)
->
None
:
optional_vcs_dependency
=
Factory
.
create_dependency
(
optional_vcs_dependency
=
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
,
"optional"
:
True
}
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
,
"optional"
:
True
}
)
)
...
...
tests/puzzle/test_solver.py
View file @
3855bc58
...
@@ -2,7 +2,6 @@ from __future__ import annotations
...
@@ -2,7 +2,6 @@ from __future__ import annotations
import
re
import
re
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
from
typing
import
Any
from
typing
import
Any
...
@@ -43,6 +42,7 @@ if TYPE_CHECKING:
...
@@ -43,6 +42,7 @@ if TYPE_CHECKING:
from
poetry.installation.operations.operation
import
Operation
from
poetry.installation.operations.operation
import
Operation
from
poetry.puzzle.provider
import
Provider
from
poetry.puzzle.provider
import
Provider
from
poetry.puzzle.transaction
import
Transaction
from
poetry.puzzle.transaction
import
Transaction
from
tests.types
import
FixtureDirGetter
DEFAULT_SOURCE_REF
=
(
DEFAULT_SOURCE_REF
=
(
VCSDependency
(
"poetry"
,
"git"
,
"git@github.com:python-poetry/poetry.git"
)
.
branch
VCSDependency
(
"poetry"
,
"git"
,
"git@github.com:python-poetry/poetry.git"
)
.
branch
...
@@ -115,7 +115,7 @@ def check_solver_result(
...
@@ -115,7 +115,7 @@ def check_solver_result(
def
test_solver_install_single
(
def
test_solver_install_single
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -128,7 +128,7 @@ def test_solver_install_single(
...
@@ -128,7 +128,7 @@ def test_solver_install_single(
def
test_solver_remove_if_no_longer_locked
(
def
test_solver_remove_if_no_longer_locked
(
package
:
ProjectPackage
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
solver
=
Solver
(
package
,
pool
,
[
package_a
],
[
package_a
],
io
)
solver
=
Solver
(
package
,
pool
,
[
package_a
],
[
package_a
],
io
)
...
@@ -139,7 +139,7 @@ def test_solver_remove_if_no_longer_locked(
...
@@ -139,7 +139,7 @@ def test_solver_remove_if_no_longer_locked(
def
test_remove_non_installed
(
def
test_remove_non_installed
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_a
)
...
@@ -151,7 +151,7 @@ def test_remove_non_installed(
...
@@ -151,7 +151,7 @@ def test_remove_non_installed(
def
test_install_non_existing_package_fail
(
def
test_install_non_existing_package_fail
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -163,7 +163,7 @@ def test_install_non_existing_package_fail(
...
@@ -163,7 +163,7 @@ def test_install_non_existing_package_fail(
def
test_install_unpublished_package_does_not_fail
(
def
test_install_unpublished_package_does_not_fail
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -188,7 +188,9 @@ def test_install_unpublished_package_does_not_fail(
...
@@ -188,7 +188,9 @@ def test_install_unpublished_package_does_not_fail(
)
)
def
test_solver_with_deps
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
def
test_solver_with_deps
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -214,7 +216,7 @@ def test_solver_with_deps(solver: Solver, repo: Repository, package: ProjectPack
...
@@ -214,7 +216,7 @@ def test_solver_with_deps(solver: Solver, repo: Repository, package: ProjectPack
def
test_install_honours_not_equal
(
def
test_install_honours_not_equal
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -244,7 +246,7 @@ def test_install_honours_not_equal(
...
@@ -244,7 +246,7 @@ def test_install_honours_not_equal(
def
test_install_with_deps_in_order
(
def
test_install_with_deps_in_order
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
...
@@ -275,7 +277,7 @@ def test_install_with_deps_in_order(
...
@@ -275,7 +277,7 @@ def test_install_with_deps_in_order(
def
test_install_installed
(
def
test_install_installed
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -291,7 +293,7 @@ def test_install_installed(
...
@@ -291,7 +293,7 @@ def test_install_installed(
def
test_update_installed
(
def
test_update_installed
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -309,7 +311,7 @@ def test_update_installed(
...
@@ -309,7 +311,7 @@ def test_update_installed(
def
test_update_with_use_latest
(
def
test_update_with_use_latest
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
...
@@ -337,7 +339,9 @@ def test_update_with_use_latest(
...
@@ -337,7 +339,9 @@ def test_update_with_use_latest(
)
)
def
test_solver_sets_groups
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
def
test_solver_sets_groups
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
,
groups
=
[
"dev"
]))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
,
groups
=
[
"dev"
]))
...
@@ -368,7 +372,7 @@ def test_solver_sets_groups(solver: Solver, repo: Repository, package: ProjectPa
...
@@ -368,7 +372,7 @@ def test_solver_sets_groups(solver: Solver, repo: Repository, package: ProjectPa
def
test_solver_respects_root_package_python_versions
(
def
test_solver_respects_root_package_python_versions
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~3.4"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
...
@@ -401,7 +405,7 @@ def test_solver_respects_root_package_python_versions(
...
@@ -401,7 +405,7 @@ def test_solver_respects_root_package_python_versions(
def
test_solver_fails_if_mismatch_root_python_versions
(
def
test_solver_fails_if_mismatch_root_python_versions
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"^3.4"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
...
@@ -423,7 +427,7 @@ def test_solver_fails_if_mismatch_root_python_versions(
...
@@ -423,7 +427,7 @@ def test_solver_fails_if_mismatch_root_python_versions(
def
test_solver_ignores_python_restricted_if_mismatch_root_package_python_versions
(
def
test_solver_ignores_python_restricted_if_mismatch_root_package_python_versions
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~3.8"
)
set_package_python_versions
(
solver
.
provider
,
"~3.8"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"1.0"
,
"python"
:
"<3.8"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"1.0"
,
"python"
:
"<3.8"
})
...
@@ -447,7 +451,7 @@ def test_solver_ignores_python_restricted_if_mismatch_root_package_python_versio
...
@@ -447,7 +451,7 @@ def test_solver_ignores_python_restricted_if_mismatch_root_package_python_versio
def
test_solver_solves_optional_and_compatible_packages
(
def
test_solver_solves_optional_and_compatible_packages
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~3.4"
)
package
.
extras
[
"foo"
]
=
[
get_dependency
(
"B"
)]
package
.
extras
[
"foo"
]
=
[
get_dependency
(
"B"
)]
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -482,7 +486,7 @@ def test_solver_solves_optional_and_compatible_packages(
...
@@ -482,7 +486,7 @@ def test_solver_solves_optional_and_compatible_packages(
def
test_solver_does_not_return_extras_if_not_requested
(
def
test_solver_does_not_return_extras_if_not_requested
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
...
@@ -509,7 +513,7 @@ def test_solver_does_not_return_extras_if_not_requested(
...
@@ -509,7 +513,7 @@ def test_solver_does_not_return_extras_if_not_requested(
def
test_solver_returns_extras_if_requested
(
def
test_solver_returns_extras_if_requested
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"B"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
...
@@ -549,7 +553,7 @@ def test_solver_returns_extras_only_requested(
...
@@ -549,7 +553,7 @@ def test_solver_returns_extras_only_requested(
repo
:
Repository
,
repo
:
Repository
,
package
:
ProjectPackage
,
package
:
ProjectPackage
,
enabled_extra
:
bool
|
None
,
enabled_extra
:
bool
|
None
,
):
)
->
None
:
extras
=
[
enabled_extra
]
if
enabled_extra
is
not
None
else
[]
extras
=
[
enabled_extra
]
if
enabled_extra
is
not
None
else
[]
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
...
@@ -611,7 +615,7 @@ def test_solver_returns_extras_when_multiple_extras_use_same_dependency(
...
@@ -611,7 +615,7 @@ def test_solver_returns_extras_when_multiple_extras_use_same_dependency(
repo
:
Repository
,
repo
:
Repository
,
package
:
ProjectPackage
,
package
:
ProjectPackage
,
enabled_extra
:
bool
|
None
,
enabled_extra
:
bool
|
None
,
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -660,7 +664,7 @@ def test_solver_returns_extras_only_requested_nested(
...
@@ -660,7 +664,7 @@ def test_solver_returns_extras_only_requested_nested(
repo
:
Repository
,
repo
:
Repository
,
package
:
ProjectPackage
,
package
:
ProjectPackage
,
enabled_extra
:
bool
|
None
,
enabled_extra
:
bool
|
None
,
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -715,7 +719,7 @@ def test_solver_returns_extras_only_requested_nested(
...
@@ -715,7 +719,7 @@ def test_solver_returns_extras_only_requested_nested(
def
test_solver_finds_extras_next_to_non_extras
(
def
test_solver_finds_extras_next_to_non_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
# Root depends on A[foo]
# Root depends on A[foo]
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
...
@@ -762,7 +766,7 @@ def test_solver_finds_extras_next_to_non_extras(
...
@@ -762,7 +766,7 @@ def test_solver_finds_extras_next_to_non_extras(
def
test_solver_merge_extras_into_base_package_multiple_repos_fixes_5727
(
def
test_solver_merge_extras_into_base_package_multiple_repos_fixes_5727
(
solver
:
Solver
,
repo
:
Repository
,
pool
:
RepositoryPool
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
pool
:
RepositoryPool
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"source"
:
"legacy"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"source"
:
"legacy"
})
)
)
...
@@ -794,7 +798,7 @@ def test_solver_merge_extras_into_base_package_multiple_repos_fixes_5727(
...
@@ -794,7 +798,7 @@ def test_solver_merge_extras_into_base_package_multiple_repos_fixes_5727(
def
test_solver_returns_extras_if_excluded_by_markers_without_extras
(
def
test_solver_returns_extras_if_excluded_by_markers_without_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"*"
,
"extras"
:
[
"foo"
]})
)
)
...
@@ -833,7 +837,7 @@ def test_solver_returns_extras_if_excluded_by_markers_without_extras(
...
@@ -833,7 +837,7 @@ def test_solver_returns_extras_if_excluded_by_markers_without_extras(
def
test_solver_returns_prereleases_if_requested
(
def
test_solver_returns_prereleases_if_requested
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -864,7 +868,7 @@ def test_solver_returns_prereleases_if_requested(
...
@@ -864,7 +868,7 @@ def test_solver_returns_prereleases_if_requested(
def
test_solver_does_not_return_prereleases_if_not_requested
(
def
test_solver_does_not_return_prereleases_if_not_requested
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
...
@@ -893,7 +897,7 @@ def test_solver_does_not_return_prereleases_if_not_requested(
...
@@ -893,7 +897,7 @@ def test_solver_does_not_return_prereleases_if_not_requested(
def
test_solver_sub_dependencies_with_requirements
(
def
test_solver_sub_dependencies_with_requirements
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
...
@@ -931,7 +935,7 @@ def test_solver_sub_dependencies_with_requirements(
...
@@ -931,7 +935,7 @@ def test_solver_sub_dependencies_with_requirements(
def
test_solver_sub_dependencies_with_requirements_complex
(
def
test_solver_sub_dependencies_with_requirements_complex
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"<5.0"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"<5.0"
})
)
)
...
@@ -990,7 +994,7 @@ def test_solver_sub_dependencies_with_requirements_complex(
...
@@ -990,7 +994,7 @@ def test_solver_sub_dependencies_with_requirements_complex(
def
test_solver_sub_dependencies_with_not_supported_python_version
(
def
test_solver_sub_dependencies_with_not_supported_python_version
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"^3.5"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
...
@@ -1012,7 +1016,7 @@ def test_solver_sub_dependencies_with_not_supported_python_version(
...
@@ -1012,7 +1016,7 @@ def test_solver_sub_dependencies_with_not_supported_python_version(
def
test_solver_sub_dependencies_with_not_supported_python_version_transitive
(
def
test_solver_sub_dependencies_with_not_supported_python_version_transitive
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -1056,7 +1060,7 @@ def test_solver_sub_dependencies_with_not_supported_python_version_transitive(
...
@@ -1056,7 +1060,7 @@ def test_solver_sub_dependencies_with_not_supported_python_version_transitive(
def
test_solver_with_dependency_in_both_main_and_dev_dependencies
(
def
test_solver_with_dependency_in_both_main_and_dev_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"^3.5"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -1109,7 +1113,7 @@ def test_solver_with_dependency_in_both_main_and_dev_dependencies(
...
@@ -1109,7 +1113,7 @@ def test_solver_with_dependency_in_both_main_and_dev_dependencies(
def
test_solver_with_dependency_in_both_main_and_dev_dependencies_with_one_more_dependent
(
# noqa: E501
def
test_solver_with_dependency_in_both_main_and_dev_dependencies_with_one_more_dependent
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"E"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"E"
,
"*"
))
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -1169,7 +1173,7 @@ def test_solver_with_dependency_in_both_main_and_dev_dependencies_with_one_more_
...
@@ -1169,7 +1173,7 @@ def test_solver_with_dependency_in_both_main_and_dev_dependencies_with_one_more_
def
test_solver_with_dependency_and_prerelease_sub_dependencies
(
def
test_solver_with_dependency_and_prerelease_sub_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1196,7 +1200,7 @@ def test_solver_with_dependency_and_prerelease_sub_dependencies(
...
@@ -1196,7 +1200,7 @@ def test_solver_with_dependency_and_prerelease_sub_dependencies(
def
test_solver_circular_dependency
(
def
test_solver_circular_dependency
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1228,7 +1232,7 @@ def test_solver_circular_dependency(
...
@@ -1228,7 +1232,7 @@ def test_solver_circular_dependency(
def
test_solver_circular_dependency_chain
(
def
test_solver_circular_dependency_chain
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1265,7 +1269,7 @@ def test_solver_circular_dependency_chain(
...
@@ -1265,7 +1269,7 @@ def test_solver_circular_dependency_chain(
def
test_solver_dense_dependencies
(
def
test_solver_dense_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
# The root package depends on packages A0...An-1,
# The root package depends on packages A0...An-1,
# And package Ai depends on packages A0...Ai-1
# And package Ai depends on packages A0...Ai-1
# This graph is a transitive tournament
# This graph is a transitive tournament
...
@@ -1288,7 +1292,7 @@ def test_solver_dense_dependencies(
...
@@ -1288,7 +1292,7 @@ def test_solver_dense_dependencies(
def
test_solver_duplicate_dependencies_same_constraint
(
def
test_solver_duplicate_dependencies_same_constraint
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1317,7 +1321,7 @@ def test_solver_duplicate_dependencies_same_constraint(
...
@@ -1317,7 +1321,7 @@ def test_solver_duplicate_dependencies_same_constraint(
def
test_solver_duplicate_dependencies_different_constraints
(
def
test_solver_duplicate_dependencies_different_constraints
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1349,7 +1353,7 @@ def test_solver_duplicate_dependencies_different_constraints(
...
@@ -1349,7 +1353,7 @@ def test_solver_duplicate_dependencies_different_constraints(
def
test_solver_duplicate_dependencies_different_constraints_same_requirements
(
def
test_solver_duplicate_dependencies_different_constraints_same_requirements
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1376,7 +1380,7 @@ So, because no versions of a match !=1.0
...
@@ -1376,7 +1380,7 @@ So, because no versions of a match !=1.0
def
test_solver_duplicate_dependencies_different_constraints_merge_by_marker
(
def
test_solver_duplicate_dependencies_different_constraints_merge_by_marker
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1414,7 +1418,7 @@ def test_solver_duplicate_dependencies_different_constraints_merge_by_marker(
...
@@ -1414,7 +1418,7 @@ def test_solver_duplicate_dependencies_different_constraints_merge_by_marker(
@pytest.mark.parametrize
(
"git_first"
,
[
False
,
True
])
@pytest.mark.parametrize
(
"git_first"
,
[
False
,
True
])
def
test_solver_duplicate_dependencies_different_sources_types_are_preserved
(
def
test_solver_duplicate_dependencies_different_sources_types_are_preserved
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
,
git_first
:
bool
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
,
git_first
:
bool
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
get_package
(
"cleo"
,
"1.0.0"
))
repo
.
add_package
(
get_package
(
"cleo"
,
"1.0.0"
))
...
@@ -1482,7 +1486,7 @@ def test_solver_duplicate_dependencies_different_sources_types_are_preserved(
...
@@ -1482,7 +1486,7 @@ def test_solver_duplicate_dependencies_different_sources_types_are_preserved(
def
test_solver_duplicate_dependencies_different_constraints_merge_no_markers
(
def
test_solver_duplicate_dependencies_different_constraints_merge_no_markers
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"1.0"
))
...
@@ -1683,7 +1687,7 @@ def test_solver_duplicate_dependencies_different_constraints_discard_no_markers3
...
@@ -1683,7 +1687,7 @@ def test_solver_duplicate_dependencies_different_constraints_discard_no_markers3
def
test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_intersection
(
def
test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_intersection
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
"""
"""
Distinct requirements per marker:
Distinct requirements per marker:
* Python 2.7: A (which requires B) and B
* Python 2.7: A (which requires B) and B
...
@@ -1754,7 +1758,7 @@ def test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_inters
...
@@ -1754,7 +1758,7 @@ def test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_inters
def
test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_intersection2
(
def
test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_intersection2
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
"""
"""
Empty intersection between top level dependency and transient dependency.
Empty intersection between top level dependency and transient dependency.
"""
"""
...
@@ -1797,7 +1801,7 @@ def test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_inters
...
@@ -1797,7 +1801,7 @@ def test_solver_duplicate_dependencies_ignore_overrides_with_empty_marker_inters
def
test_solver_duplicate_dependencies_sub_dependencies
(
def
test_solver_duplicate_dependencies_sub_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
...
@@ -1836,10 +1840,11 @@ def test_solver_duplicate_dependencies_sub_dependencies(
...
@@ -1836,10 +1840,11 @@ def test_solver_duplicate_dependencies_sub_dependencies(
)
)
def
test_duplicate_path_dependencies
(
solver
:
Solver
,
package
:
ProjectPackage
)
->
None
:
def
test_duplicate_path_dependencies
(
solver
:
Solver
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.7"
)
set_package_python_versions
(
solver
.
provider
,
"^3.7"
)
fixtures
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
project_dir
=
fixture_dir
(
"with_conditional_path_deps"
)
project_dir
=
fixtures
/
"with_conditional_path_deps"
path1
=
(
project_dir
/
"demo_one"
)
.
as_posix
()
path1
=
(
project_dir
/
"demo_one"
)
.
as_posix
()
demo1
=
Package
(
"demo"
,
"1.2.3"
,
source_type
=
"directory"
,
source_url
=
path1
)
demo1
=
Package
(
"demo"
,
"1.2.3"
,
source_type
=
"directory"
,
source_url
=
path1
)
...
@@ -1869,11 +1874,10 @@ def test_duplicate_path_dependencies(solver: Solver, package: ProjectPackage) ->
...
@@ -1869,11 +1874,10 @@ def test_duplicate_path_dependencies(solver: Solver, package: ProjectPackage) ->
def
test_duplicate_path_dependencies_same_path
(
def
test_duplicate_path_dependencies_same_path
(
solver
:
Solver
,
package
:
ProjectPackage
solver
:
Solver
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.7"
)
set_package_python_versions
(
solver
.
provider
,
"^3.7"
)
fixtures
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
project_dir
=
fixture_dir
(
"with_conditional_path_deps"
)
project_dir
=
fixtures
/
"with_conditional_path_deps"
path1
=
(
project_dir
/
"demo_one"
)
.
as_posix
()
path1
=
(
project_dir
/
"demo_one"
)
.
as_posix
()
demo1
=
Package
(
"demo"
,
"1.2.3"
,
source_type
=
"directory"
,
source_url
=
path1
)
demo1
=
Package
(
"demo"
,
"1.2.3"
,
source_type
=
"directory"
,
source_url
=
path1
)
...
@@ -1895,7 +1899,7 @@ def test_duplicate_path_dependencies_same_path(
...
@@ -1895,7 +1899,7 @@ def test_duplicate_path_dependencies_same_path(
def
test_solver_fails_if_dependency_name_does_not_match_package
(
def
test_solver_fails_if_dependency_name_does_not_match_package
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
"my-demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
}
"my-demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
}
...
@@ -1908,7 +1912,7 @@ def test_solver_fails_if_dependency_name_does_not_match_package(
...
@@ -1908,7 +1912,7 @@ def test_solver_fails_if_dependency_name_does_not_match_package(
def
test_solver_does_not_get_stuck_in_recursion_on_circular_dependency
(
def
test_solver_does_not_get_stuck_in_recursion_on_circular_dependency
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
=
get_package
(
"A"
,
"1.0"
)
package_a
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^1.0"
))
package_a
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^1.0"
))
package_b
=
get_package
(
"B"
,
"1.0"
)
package_b
=
get_package
(
"B"
,
"1.0"
)
...
@@ -1936,7 +1940,7 @@ def test_solver_does_not_get_stuck_in_recursion_on_circular_dependency(
...
@@ -1936,7 +1940,7 @@ def test_solver_does_not_get_stuck_in_recursion_on_circular_dependency(
def
test_solver_can_resolve_git_dependencies
(
def
test_solver_can_resolve_git_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -1971,7 +1975,7 @@ def test_solver_can_resolve_git_dependencies(
...
@@ -1971,7 +1975,7 @@ def test_solver_can_resolve_git_dependencies(
def
test_solver_can_resolve_git_dependencies_with_extras
(
def
test_solver_can_resolve_git_dependencies_with_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -2011,7 +2015,7 @@ def test_solver_can_resolve_git_dependencies_with_extras(
...
@@ -2011,7 +2015,7 @@ def test_solver_can_resolve_git_dependencies_with_extras(
)
)
def
test_solver_can_resolve_git_dependencies_with_ref
(
def
test_solver_can_resolve_git_dependencies_with_ref
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
,
ref
:
dict
[
str
,
str
]
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
,
ref
:
dict
[
str
,
str
]
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -2046,7 +2050,7 @@ def test_solver_can_resolve_git_dependencies_with_ref(
...
@@ -2046,7 +2050,7 @@ def test_solver_can_resolve_git_dependencies_with_ref(
def
test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requirement_is_compatible
(
# noqa: E501
def
test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requirement_is_compatible
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
...
@@ -2064,7 +2068,7 @@ def test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requir
...
@@ -2064,7 +2068,7 @@ def test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requir
def
test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requirement_is_compatible_multiple
(
# noqa: E501
def
test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requirement_is_compatible_multiple
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
...
@@ -2096,7 +2100,7 @@ def test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requir
...
@@ -2096,7 +2100,7 @@ def test_solver_does_not_trigger_conflict_for_python_constraint_if_python_requir
def
test_solver_triggers_conflict_for_dependency_python_not_fully_compatible_with_package_python
(
# noqa: E501
def
test_solver_triggers_conflict_for_dependency_python_not_fully_compatible_with_package_python
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.5"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.5"
})
...
@@ -2113,7 +2117,7 @@ def test_solver_triggers_conflict_for_dependency_python_not_fully_compatible_wit
...
@@ -2113,7 +2117,7 @@ def test_solver_triggers_conflict_for_dependency_python_not_fully_compatible_wit
def
test_solver_finds_compatible_package_for_dependency_python_not_fully_compatible_with_package_python
(
# noqa: E501
def
test_solver_finds_compatible_package_for_dependency_python_not_fully_compatible_with_package_python
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.5"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.5"
})
...
@@ -2135,7 +2139,7 @@ def test_solver_finds_compatible_package_for_dependency_python_not_fully_compati
...
@@ -2135,7 +2139,7 @@ def test_solver_finds_compatible_package_for_dependency_python_not_fully_compati
def
test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_only_extras
(
# noqa: E501
def
test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_only_extras
(
# noqa: E501
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
dep1
=
Dependency
.
create_from_pep_508
(
'B (>=1.0); extra == "foo"'
)
dep1
=
Dependency
.
create_from_pep_508
(
'B (>=1.0); extra == "foo"'
)
dep1
.
activate
()
dep1
.
activate
()
dep2
=
Dependency
.
create_from_pep_508
(
'B (>=2.0); extra == "bar"'
)
dep2
=
Dependency
.
create_from_pep_508
(
'B (>=2.0); extra == "bar"'
)
...
@@ -2173,7 +2177,7 @@ def test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_onl
...
@@ -2173,7 +2177,7 @@ def test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_onl
def
test_solver_does_not_raise_conflict_for_locked_conditional_dependencies
(
def
test_solver_does_not_raise_conflict_for_locked_conditional_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.4"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"^1.0"
,
"python"
:
"^3.6"
})
...
@@ -2205,7 +2209,7 @@ def test_solver_does_not_raise_conflict_for_locked_conditional_dependencies(
...
@@ -2205,7 +2209,7 @@ def test_solver_does_not_raise_conflict_for_locked_conditional_dependencies(
def
test_solver_returns_extras_if_requested_in_dependencies_and_not_in_root_package
(
def
test_solver_returns_extras_if_requested_in_dependencies_and_not_in_root_package
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"C"
,
"*"
))
...
@@ -2244,7 +2248,7 @@ def test_solver_returns_extras_if_requested_in_dependencies_and_not_in_root_pack
...
@@ -2244,7 +2248,7 @@ def test_solver_returns_extras_if_requested_in_dependencies_and_not_in_root_pack
def
test_solver_should_not_resolve_prerelease_version_if_not_requested
(
def
test_solver_should_not_resolve_prerelease_version_if_not_requested
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.8.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"~1.8.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^0.5.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^0.5.0"
))
...
@@ -2263,7 +2267,7 @@ def test_solver_should_not_resolve_prerelease_version_if_not_requested(
...
@@ -2263,7 +2267,7 @@ def test_solver_should_not_resolve_prerelease_version_if_not_requested(
def
test_solver_ignores_dependencies_with_incompatible_python_full_version_marker
(
def
test_solver_ignores_dependencies_with_incompatible_python_full_version_marker
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"^3.6"
)
set_package_python_versions
(
solver
.
provider
,
"^3.6"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"^1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"^1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^2.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"B"
,
"^2.0"
))
...
@@ -2296,7 +2300,7 @@ def test_solver_ignores_dependencies_with_incompatible_python_full_version_marke
...
@@ -2296,7 +2300,7 @@ def test_solver_ignores_dependencies_with_incompatible_python_full_version_marke
def
test_solver_git_dependencies_update
(
def
test_solver_git_dependencies_update
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -2345,7 +2349,7 @@ def test_solver_git_dependencies_update(
...
@@ -2345,7 +2349,7 @@ def test_solver_git_dependencies_update(
def
test_solver_git_dependencies_update_skipped
(
def
test_solver_git_dependencies_update_skipped
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -2378,7 +2382,7 @@ def test_solver_git_dependencies_update_skipped(
...
@@ -2378,7 +2382,7 @@ def test_solver_git_dependencies_update_skipped(
def
test_solver_git_dependencies_short_hash_update_skipped
(
def
test_solver_git_dependencies_short_hash_update_skipped
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
...
@@ -2423,19 +2427,15 @@ def test_solver_git_dependencies_short_hash_update_skipped(
...
@@ -2423,19 +2427,15 @@ def test_solver_git_dependencies_short_hash_update_skipped(
def
test_solver_can_resolve_directory_dependencies
(
def
test_solver_can_resolve_directory_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
path
=
(
path
=
(
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
...
@@ -2460,8 +2460,9 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
...
@@ -2460,8 +2460,9 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
repo
:
Repository
,
repo
:
Repository
,
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
):
fixture_dir
:
FixtureDirGetter
,
base
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"project_with_nested_local"
)
->
None
:
base
=
fixture_dir
(
"project_with_nested_local"
)
poetry
=
Factory
()
.
create_poetry
(
cwd
=
base
)
poetry
=
Factory
()
.
create_poetry
(
cwd
=
base
)
package
=
poetry
.
package
package
=
poetry
.
package
...
@@ -2511,21 +2512,17 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
...
@@ -2511,21 +2512,17 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
def
test_solver_can_resolve_directory_dependencies_with_extras
(
def
test_solver_can_resolve_directory_dependencies_with_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
cleo
)
repo
.
add_package
(
cleo
)
path
=
(
path
=
(
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
...
@@ -2553,17 +2550,15 @@ def test_solver_can_resolve_directory_dependencies_with_extras(
...
@@ -2553,17 +2550,15 @@ def test_solver_can_resolve_directory_dependencies_with_extras(
def
test_solver_can_resolve_sdist_dependencies
(
def
test_solver_can_resolve_sdist_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
path
=
(
path
=
(
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"distributions"
/
"demo-0.1.0.tar.gz"
)
.
as_posix
()
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
...
@@ -2585,19 +2580,17 @@ def test_solver_can_resolve_sdist_dependencies(
...
@@ -2585,19 +2580,17 @@ def test_solver_can_resolve_sdist_dependencies(
def
test_solver_can_resolve_sdist_dependencies_with_extras
(
def
test_solver_can_resolve_sdist_dependencies_with_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
cleo
)
repo
.
add_package
(
cleo
)
path
=
(
path
=
(
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"distributions"
/
"demo-0.1.0.tar.gz"
)
.
as_posix
()
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
...
@@ -2625,17 +2618,15 @@ def test_solver_can_resolve_sdist_dependencies_with_extras(
...
@@ -2625,17 +2618,15 @@ def test_solver_can_resolve_sdist_dependencies_with_extras(
def
test_solver_can_resolve_wheel_dependencies
(
def
test_solver_can_resolve_wheel_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
path
=
(
path
=
(
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
...
@@ -2657,19 +2648,17 @@ def test_solver_can_resolve_wheel_dependencies(
...
@@ -2657,19 +2648,17 @@ def test_solver_can_resolve_wheel_dependencies(
def
test_solver_can_resolve_wheel_dependencies_with_extras
(
def
test_solver_can_resolve_wheel_dependencies_with_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0"
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
cleo
)
repo
.
add_package
(
cleo
)
path
=
(
path
=
(
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
,
"extras"
:
[
"foo"
]})
...
@@ -2698,7 +2687,7 @@ def test_solver_can_resolve_wheel_dependencies_with_extras(
...
@@ -2698,7 +2687,7 @@ def test_solver_can_resolve_wheel_dependencies_with_extras(
def
test_solver_can_solve_with_legacy_repository_using_proper_dists
(
def
test_solver_can_solve_with_legacy_repository_using_proper_dists
(
package
:
ProjectPackage
,
io
:
NullIO
package
:
ProjectPackage
,
io
:
NullIO
):
)
->
None
:
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
pool
=
RepositoryPool
([
repo
])
pool
=
RepositoryPool
([
repo
])
...
@@ -2741,7 +2730,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_dists(
...
@@ -2741,7 +2730,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_dists(
def
test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_dists
(
def
test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_dists
(
package
:
ProjectPackage
,
package
:
ProjectPackage
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
...
@@ -2770,7 +2759,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_
...
@@ -2770,7 +2759,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_
)
)
def
test_solver_skips_invalid_versions
(
package
:
ProjectPackage
,
io
:
NullIO
):
def
test_solver_skips_invalid_versions
(
package
:
ProjectPackage
,
io
:
NullIO
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
repo
=
MockPyPIRepository
()
repo
=
MockPyPIRepository
()
...
@@ -2789,7 +2778,7 @@ def test_solver_skips_invalid_versions(package: ProjectPackage, io: NullIO):
...
@@ -2789,7 +2778,7 @@ def test_solver_skips_invalid_versions(package: ProjectPackage, io: NullIO):
def
test_multiple_constraints_on_root
(
def
test_multiple_constraints_on_root
(
package
:
ProjectPackage
,
solver
:
Solver
,
repo
:
Repository
package
:
ProjectPackage
,
solver
:
Solver
,
repo
:
Repository
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
{
"version"
:
"^1.0"
,
"python"
:
"^2.7"
})
Factory
.
create_dependency
(
"foo"
,
{
"version"
:
"^1.0"
,
"python"
:
"^2.7"
})
)
)
...
@@ -2813,7 +2802,7 @@ def test_multiple_constraints_on_root(
...
@@ -2813,7 +2802,7 @@ def test_multiple_constraints_on_root(
def
test_solver_chooses_most_recent_version_amongst_repositories
(
def
test_solver_chooses_most_recent_version_amongst_repositories
(
package
:
ProjectPackage
,
io
:
NullIO
package
:
ProjectPackage
,
io
:
NullIO
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
package
.
add_dependency
(
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
}))
...
@@ -2834,7 +2823,7 @@ def test_solver_chooses_most_recent_version_amongst_repositories(
...
@@ -2834,7 +2823,7 @@ def test_solver_chooses_most_recent_version_amongst_repositories(
def
test_solver_chooses_from_correct_repository_if_forced
(
def
test_solver_chooses_from_correct_repository_if_forced
(
package
:
ProjectPackage
,
io
:
NullIO
package
:
ProjectPackage
,
io
:
NullIO
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
,
"source"
:
"legacy"
})
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
,
"source"
:
"legacy"
})
...
@@ -2869,7 +2858,7 @@ def test_solver_chooses_from_correct_repository_if_forced(
...
@@ -2869,7 +2858,7 @@ def test_solver_chooses_from_correct_repository_if_forced(
def
test_solver_chooses_from_correct_repository_if_forced_and_transitive_dependency
(
def
test_solver_chooses_from_correct_repository_if_forced_and_transitive_dependency
(
package
:
ProjectPackage
,
package
:
ProjectPackage
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.0"
))
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -2911,7 +2900,7 @@ def test_solver_chooses_from_correct_repository_if_forced_and_transitive_depende
...
@@ -2911,7 +2900,7 @@ def test_solver_chooses_from_correct_repository_if_forced_and_transitive_depende
def
test_solver_does_not_choose_from_secondary_repository_by_default
(
def
test_solver_does_not_choose_from_secondary_repository_by_default
(
package
:
ProjectPackage
,
io
:
NullIO
package
:
ProjectPackage
,
io
:
NullIO
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
package
.
add_dependency
(
Factory
.
create_dependency
(
"clikit"
,
{
"version"
:
"^0.2.0"
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"clikit"
,
{
"version"
:
"^0.2.0"
}))
...
@@ -2959,7 +2948,7 @@ def test_solver_does_not_choose_from_secondary_repository_by_default(
...
@@ -2959,7 +2948,7 @@ def test_solver_does_not_choose_from_secondary_repository_by_default(
def
test_solver_chooses_from_secondary_if_explicit
(
def
test_solver_chooses_from_secondary_if_explicit
(
package
:
ProjectPackage
,
package
:
ProjectPackage
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package
.
python_versions
=
"^3.7"
package
.
python_versions
=
"^3.7"
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"clikit"
,
{
"version"
:
"^0.2.0"
,
"source"
:
"PyPI"
})
Factory
.
create_dependency
(
"clikit"
,
{
"version"
:
"^0.2.0"
,
"source"
:
"PyPI"
})
...
@@ -3068,7 +3057,7 @@ def test_solver_discards_packages_with_empty_markers(
...
@@ -3068,7 +3057,7 @@ def test_solver_discards_packages_with_empty_markers(
repo
:
Repository
,
repo
:
Repository
,
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package
.
python_versions
=
"~2.7 || ^3.4"
package
.
python_versions
=
"~2.7 || ^3.4"
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
...
@@ -3104,7 +3093,7 @@ def test_solver_discards_packages_with_empty_markers(
...
@@ -3104,7 +3093,7 @@ def test_solver_discards_packages_with_empty_markers(
def
test_solver_does_not_raise_conflict_for_conditional_dev_dependencies
(
def
test_solver_does_not_raise_conflict_for_conditional_dev_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
...
@@ -3136,7 +3125,7 @@ def test_solver_does_not_raise_conflict_for_conditional_dev_dependencies(
...
@@ -3136,7 +3125,7 @@ def test_solver_does_not_raise_conflict_for_conditional_dev_dependencies(
def
test_solver_does_not_loop_indefinitely_on_duplicate_constraints_with_extras
(
def
test_solver_does_not_loop_indefinitely_on_duplicate_constraints_with_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
...
@@ -3170,7 +3159,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
...
@@ -3170,7 +3159,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
repo
:
Repository
,
repo
:
Repository
,
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
})
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
})
)
)
...
@@ -3205,7 +3194,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
...
@@ -3205,7 +3194,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
def
test_ignore_python_constraint_no_overlap_dependencies
(
def
test_ignore_python_constraint_no_overlap_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
pytest
=
get_package
(
"demo"
,
"1.0.0"
)
pytest
=
get_package
(
"demo"
,
"1.0.0"
)
pytest
.
add_dependency
(
pytest
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
...
@@ -3230,7 +3219,7 @@ def test_ignore_python_constraint_no_overlap_dependencies(
...
@@ -3230,7 +3219,7 @@ def test_ignore_python_constraint_no_overlap_dependencies(
def
test_solver_should_not_go_into_an_infinite_loop_on_duplicate_dependencies
(
def
test_solver_should_not_go_into_an_infinite_loop_on_duplicate_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"^1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
"^1.0"
))
...
@@ -3263,7 +3252,7 @@ def test_solver_should_not_go_into_an_infinite_loop_on_duplicate_dependencies(
...
@@ -3263,7 +3252,7 @@ def test_solver_should_not_go_into_an_infinite_loop_on_duplicate_dependencies(
def
test_solver_synchronize_single
(
def
test_solver_synchronize_single
(
package
:
ProjectPackage
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package_a
=
get_package
(
"a"
,
"1.0"
)
package_a
=
get_package
(
"a"
,
"1.0"
)
solver
=
Solver
(
package
,
pool
,
[
package_a
],
[],
io
)
solver
=
Solver
(
package
,
pool
,
[
package_a
],
[],
io
)
...
@@ -3279,7 +3268,7 @@ def test_solver_with_synchronization_keeps_critical_package(
...
@@ -3279,7 +3268,7 @@ def test_solver_with_synchronization_keeps_critical_package(
package
:
ProjectPackage
,
package
:
ProjectPackage
,
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
):
)
->
None
:
package_pip
=
get_package
(
"setuptools"
,
"1.0"
)
package_pip
=
get_package
(
"setuptools"
,
"1.0"
)
solver
=
Solver
(
package
,
pool
,
[
package_pip
],
[],
io
)
solver
=
Solver
(
package
,
pool
,
[
package_pip
],
[],
io
)
...
@@ -3289,8 +3278,11 @@ def test_solver_with_synchronization_keeps_critical_package(
...
@@ -3289,8 +3278,11 @@ def test_solver_with_synchronization_keeps_critical_package(
def
test_solver_cannot_choose_another_version_for_directory_dependencies
(
def
test_solver_cannot_choose_another_version_for_directory_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
demo
=
get_package
(
"demo"
,
"0.1.0"
)
demo
=
get_package
(
"demo"
,
"0.1.0"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
...
@@ -3299,14 +3291,7 @@ def test_solver_cannot_choose_another_version_for_directory_dependencies(
...
@@ -3299,14 +3291,7 @@ def test_solver_cannot_choose_another_version_for_directory_dependencies(
repo
.
add_package
(
demo
)
repo
.
add_package
(
demo
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
path
=
(
path
=
(
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.2.3"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.2.3"
))
...
@@ -3318,8 +3303,11 @@ def test_solver_cannot_choose_another_version_for_directory_dependencies(
...
@@ -3318,8 +3303,11 @@ def test_solver_cannot_choose_another_version_for_directory_dependencies(
def
test_solver_cannot_choose_another_version_for_file_dependencies
(
def
test_solver_cannot_choose_another_version_for_file_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
demo
=
get_package
(
"demo"
,
"0.0.8"
)
demo
=
get_package
(
"demo"
,
"0.0.8"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
...
@@ -3328,12 +3316,7 @@ def test_solver_cannot_choose_another_version_for_file_dependencies(
...
@@ -3328,12 +3316,7 @@ def test_solver_cannot_choose_another_version_for_file_dependencies(
repo
.
add_package
(
demo
)
repo
.
add_package
(
demo
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
path
=
(
path
=
(
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
)
.
as_posix
()
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.2.3"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"^1.2.3"
))
...
@@ -3346,7 +3329,7 @@ def test_solver_cannot_choose_another_version_for_file_dependencies(
...
@@ -3346,7 +3329,7 @@ def test_solver_cannot_choose_another_version_for_file_dependencies(
def
test_solver_cannot_choose_another_version_for_git_dependencies
(
def
test_solver_cannot_choose_another_version_for_git_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
pendulum
=
get_package
(
"pendulum"
,
"2.0.3"
)
demo
=
get_package
(
"demo"
,
"0.0.8"
)
demo
=
get_package
(
"demo"
,
"0.0.8"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
foo
=
get_package
(
"foo"
,
"1.2.3"
)
...
@@ -3371,13 +3354,9 @@ def test_solver_cannot_choose_another_version_for_url_dependencies(
...
@@ -3371,13 +3354,9 @@ def test_solver_cannot_choose_another_version_for_url_dependencies(
repo
:
Repository
,
repo
:
Repository
,
package
:
ProjectPackage
,
package
:
ProjectPackage
,
http
:
type
[
httpretty
.
httpretty
],
http
:
type
[
httpretty
.
httpretty
],
):
fixture_dir
:
FixtureDirGetter
,
path
=
(
)
->
None
:
Path
(
__file__
)
.
parent
.
parent
path
=
fixture_dir
(
"distributions"
)
/
"demo-0.1.0-py2.py3-none-any.whl"
/
"fixtures"
/
"distributions"
/
"demo-0.1.0-py2.py3-none-any.whl"
)
http
.
register_uri
(
http
.
register_uri
(
"GET"
,
"GET"
,
...
@@ -3409,7 +3388,7 @@ def test_solver_cannot_choose_another_version_for_url_dependencies(
...
@@ -3409,7 +3388,7 @@ def test_solver_cannot_choose_another_version_for_url_dependencies(
def
test_solver_should_not_update_same_version_packages_if_installed_has_no_source_type
(
def
test_solver_should_not_update_same_version_packages_if_installed_has_no_source_type
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"1.0.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"foo"
,
"1.0.0"
))
foo
=
Package
(
foo
=
Package
(
...
@@ -3458,7 +3437,7 @@ def test_solver_should_use_the_python_constraint_from_the_environment_if_availab
...
@@ -3458,7 +3437,7 @@ def test_solver_should_use_the_python_constraint_from_the_environment_if_availab
def
test_solver_should_resolve_all_versions_for_multiple_duplicate_dependencies
(
def
test_solver_should_resolve_all_versions_for_multiple_duplicate_dependencies
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
python_versions
=
"~2.7 || ^3.5"
package
.
python_versions
=
"~2.7 || ^3.5"
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
...
@@ -3506,7 +3485,7 @@ def test_solver_should_resolve_all_versions_for_multiple_duplicate_dependencies(
...
@@ -3506,7 +3485,7 @@ def test_solver_should_resolve_all_versions_for_multiple_duplicate_dependencies(
def
test_solver_should_not_raise_errors_for_irrelevant_python_constraints
(
def
test_solver_should_not_raise_errors_for_irrelevant_python_constraints
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
python_versions
=
"^3.6"
package
.
python_versions
=
"^3.6"
set_package_python_versions
(
solver
.
provider
,
"^3.6"
)
set_package_python_versions
(
solver
.
provider
,
"^3.6"
)
package
.
add_dependency
(
package
.
add_dependency
(
...
@@ -3524,7 +3503,7 @@ def test_solver_should_not_raise_errors_for_irrelevant_python_constraints(
...
@@ -3524,7 +3503,7 @@ def test_solver_should_not_raise_errors_for_irrelevant_python_constraints(
def
test_solver_can_resolve_transitive_extras
(
def
test_solver_can_resolve_transitive_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
Factory
.
create_dependency
(
"requests"
,
"^2.24.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"requests"
,
"^2.24.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"PyOTA"
,
"^2.1.0"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"PyOTA"
,
"^2.1.0"
))
...
@@ -3562,7 +3541,7 @@ def test_solver_can_resolve_transitive_extras(
...
@@ -3562,7 +3541,7 @@ def test_solver_can_resolve_transitive_extras(
def
test_solver_can_resolve_for_packages_with_missing_extras
(
def
test_solver_can_resolve_for_packages_with_missing_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
Factory
.
create_dependency
(
"django-anymail"
,
{
"version"
:
"^6.0"
,
"extras"
:
[
"postmark"
]}
"django-anymail"
,
{
"version"
:
"^6.0"
,
"extras"
:
[
"postmark"
]}
...
@@ -3599,7 +3578,7 @@ def test_solver_can_resolve_for_packages_with_missing_extras(
...
@@ -3599,7 +3578,7 @@ def test_solver_can_resolve_for_packages_with_missing_extras(
def
test_solver_can_resolve_python_restricted_package_dependencies
(
def
test_solver_can_resolve_python_restricted_package_dependencies
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"futures"
,
{
"version"
:
"^3.3.0"
,
"python"
:
"~2.7"
})
Factory
.
create_dependency
(
"futures"
,
{
"version"
:
"^3.3.0"
,
"python"
:
"~2.7"
})
)
)
...
@@ -3630,7 +3609,7 @@ def test_solver_can_resolve_python_restricted_package_dependencies(
...
@@ -3630,7 +3609,7 @@ def test_solver_can_resolve_python_restricted_package_dependencies(
def
test_solver_should_not_raise_errors_for_irrelevant_transitive_python_constraints
(
def
test_solver_should_not_raise_errors_for_irrelevant_transitive_python_constraints
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
package
.
python_versions
=
"~2.7 || ^3.5"
package
.
python_versions
=
"~2.7 || ^3.5"
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
set_package_python_versions
(
solver
.
provider
,
"~2.7 || ^3.5"
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"virtualenv"
,
"^20.4.3"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"virtualenv"
,
"^20.4.3"
))
...
@@ -3685,7 +3664,7 @@ def test_solver_keeps_multiple_locked_dependencies_for_same_package(
...
@@ -3685,7 +3664,7 @@ def test_solver_keeps_multiple_locked_dependencies_for_same_package(
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
is_locked
:
bool
,
is_locked
:
bool
,
):
)
->
None
:
package
.
add_dependency
(
package
.
add_dependency
(
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"~1.1"
,
"python"
:
"<3.7"
})
Factory
.
create_dependency
(
"A"
,
{
"version"
:
"~1.1"
,
"python"
:
"<3.7"
})
)
)
...
@@ -3739,7 +3718,7 @@ def test_solver_does_not_update_ref_of_locked_vcs_package(
...
@@ -3739,7 +3718,7 @@ def test_solver_does_not_update_ref_of_locked_vcs_package(
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
is_locked
:
bool
,
is_locked
:
bool
,
):
)
->
None
:
locked_ref
=
"123456"
locked_ref
=
"123456"
latest_ref
=
"9cf87a285a2d3fbb0b9fa621997b3acc3631ed24"
latest_ref
=
"9cf87a285a2d3fbb0b9fa621997b3acc3631ed24"
demo_locked
=
Package
(
demo_locked
=
Package
(
...
@@ -3795,7 +3774,7 @@ def test_solver_does_not_fetch_locked_vcs_package_with_ref(
...
@@ -3795,7 +3774,7 @@ def test_solver_does_not_fetch_locked_vcs_package_with_ref(
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
mocker
:
MockerFixture
,
mocker
:
MockerFixture
,
):
)
->
None
:
locked_ref
=
"123456"
locked_ref
=
"123456"
demo_locked
=
Package
(
demo_locked
=
Package
(
"demo"
,
"demo"
,
...
@@ -3824,8 +3803,11 @@ def test_solver_does_not_fetch_locked_vcs_package_with_ref(
...
@@ -3824,8 +3803,11 @@ def test_solver_does_not_fetch_locked_vcs_package_with_ref(
def
test_solver_direct_origin_dependency_with_extras_requested_by_other_package
(
def
test_solver_direct_origin_dependency_with_extras_requested_by_other_package
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
):
repo
:
Repository
,
package
:
ProjectPackage
,
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
"""
"""
Another package requires the same dependency with extras that is required
Another package requires the same dependency with extras that is required
by the project as direct origin dependency without any extras.
by the project as direct origin dependency without any extras.
...
@@ -3840,14 +3822,7 @@ def test_solver_direct_origin_dependency_with_extras_requested_by_other_package(
...
@@ -3840,14 +3822,7 @@ def test_solver_direct_origin_dependency_with_extras_requested_by_other_package(
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
pendulum
)
repo
.
add_package
(
cleo
)
repo
.
add_package
(
cleo
)
path
=
(
path
=
(
fixture_dir
(
"git"
)
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"git"
/
"github.com"
/
"demo"
/
"demo"
)
.
as_posix
()
# project requires path dependency of demo while demo-foo requires demo[foo]
# project requires path dependency of demo while demo-foo requires demo[foo]
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
package
.
add_dependency
(
Factory
.
create_dependency
(
"demo"
,
{
"path"
:
path
}))
...
@@ -3877,7 +3852,7 @@ def test_solver_direct_origin_dependency_with_extras_requested_by_other_package(
...
@@ -3877,7 +3852,7 @@ def test_solver_direct_origin_dependency_with_extras_requested_by_other_package(
def
test_solver_incompatible_dependency_with_and_without_extras
(
def
test_solver_incompatible_dependency_with_and_without_extras
(
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
solver
:
Solver
,
repo
:
Repository
,
package
:
ProjectPackage
):
)
->
None
:
"""
"""
The solver first encounters a requirement for google-auth and then later an
The solver first encounters a requirement for google-auth and then later an
incompatible requirement for google-auth[aiohttp].
incompatible requirement for google-auth[aiohttp].
...
@@ -3929,7 +3904,7 @@ def test_solver_incompatible_dependency_with_and_without_extras(
...
@@ -3929,7 +3904,7 @@ def test_solver_incompatible_dependency_with_and_without_extras(
def
test_update_with_prerelease_and_no_solution
(
def
test_update_with_prerelease_and_no_solution
(
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
package
:
ProjectPackage
,
repo
:
Repository
,
pool
:
RepositoryPool
,
io
:
NullIO
):
)
->
None
:
# Locked and installed: cleo which depends on an old version of crashtest.
# Locked and installed: cleo which depends on an old version of crashtest.
cleo
=
get_package
(
"cleo"
,
"1.0.0a5"
)
cleo
=
get_package
(
"cleo"
,
"1.0.0a5"
)
crashtest
=
get_package
(
"crashtest"
,
"0.3.0"
)
crashtest
=
get_package
(
"crashtest"
,
"0.3.0"
)
...
@@ -4001,7 +3976,7 @@ def test_update_with_use_latest_vs_lock(
...
@@ -4001,7 +3976,7 @@ def test_update_with_use_latest_vs_lock(
pool
:
RepositoryPool
,
pool
:
RepositoryPool
,
io
:
NullIO
,
io
:
NullIO
,
is_locked
:
bool
,
is_locked
:
bool
,
):
)
->
None
:
"""
"""
A1 depends on B2, A2 and A3 depend on B1. Same for C.
A1 depends on B2, A2 and A3 depend on B1. Same for C.
B1 depends on A2/C2, B2 depends on A1/C1.
B1 depends on A2/C2, B2 depends on A1/C1.
...
...
tests/test_factory.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -26,8 +25,6 @@ if TYPE_CHECKING:
...
@@ -26,8 +25,6 @@ if TYPE_CHECKING:
from
poetry.poetry
import
Poetry
from
poetry.poetry
import
Poetry
from
tests.types
import
FixtureDirGetter
from
tests.types
import
FixtureDirGetter
fixtures_dir
=
Path
(
__file__
)
.
parent
/
"fixtures"
class
MyPlugin
(
Plugin
):
class
MyPlugin
(
Plugin
):
def
activate
(
self
,
poetry
:
Poetry
,
io
:
IO
)
->
None
:
def
activate
(
self
,
poetry
:
Poetry
,
io
:
IO
)
->
None
:
...
@@ -35,8 +32,8 @@ class MyPlugin(Plugin):
...
@@ -35,8 +32,8 @@ class MyPlugin(Plugin):
poetry
.
package
.
readmes
=
(
"README.md"
,)
poetry
.
package
.
readmes
=
(
"README.md"
,)
def
test_create_poetry
(
)
:
def
test_create_poetry
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"sample_project"
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
"sample_project"
)
)
package
=
poetry
.
package
package
=
poetry
.
package
...
@@ -48,7 +45,7 @@ def test_create_poetry():
...
@@ -48,7 +45,7 @@ def test_create_poetry():
for
readme
in
package
.
readmes
:
for
readme
in
package
.
readmes
:
assert
(
assert
(
readme
.
relative_to
(
fixture
s_dir
)
.
as_posix
()
==
"sample_project/
README.rst"
readme
.
relative_to
(
fixture
_dir
(
"sample_project"
))
.
as_posix
()
==
"
README.rst"
)
)
assert
package
.
homepage
==
"https://python-poetry.org"
assert
package
.
homepage
==
"https://python-poetry.org"
...
@@ -147,8 +144,10 @@ def test_create_poetry():
...
@@ -147,8 +144,10 @@ def test_create_poetry():
(
"project_with_extras"
,),
(
"project_with_extras"
,),
],
],
)
)
def
test_create_pyproject_from_package
(
project
:
str
):
def
test_create_pyproject_from_package
(
poetry
=
Factory
()
.
create_poetry
(
fixtures_dir
/
project
)
project
:
str
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
project
))
package
=
poetry
.
package
package
=
poetry
.
package
pyproject
=
Factory
.
create_pyproject_from_package
(
package
)
pyproject
=
Factory
.
create_pyproject_from_package
(
package
)
...
@@ -177,8 +176,10 @@ def test_create_pyproject_from_package(project: str):
...
@@ -177,8 +176,10 @@ def test_create_pyproject_from_package(project: str):
assert
not
DeepDiff
(
expected
,
result
)
assert
not
DeepDiff
(
expected
,
result
)
def
test_create_poetry_with_packages_and_includes
():
def
test_create_poetry_with_packages_and_includes
(
poetry
=
Factory
()
.
create_poetry
(
fixtures_dir
/
"with-include"
)
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with-include"
))
package
=
poetry
.
package
package
=
poetry
.
package
...
@@ -198,9 +199,11 @@ def test_create_poetry_with_packages_and_includes():
...
@@ -198,9 +199,11 @@ def test_create_poetry_with_packages_and_includes():
]
]
def
test_create_poetry_with_multi_constraints_dependency
():
def
test_create_poetry_with_multi_constraints_dependency
(
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"project_with_multi_constraints_dependency"
fixture
_dir
(
"project_with_multi_constraints_dependency"
)
)
)
package
=
poetry
.
package
package
=
poetry
.
package
...
@@ -208,30 +211,34 @@ def test_create_poetry_with_multi_constraints_dependency():
...
@@ -208,30 +211,34 @@ def test_create_poetry_with_multi_constraints_dependency():
assert
len
(
package
.
requires
)
==
2
assert
len
(
package
.
requires
)
==
2
def
test_poetry_with_default_source_legacy
(
with_simple_keyring
:
None
):
def
test_poetry_with_default_source_legacy
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
io
=
BufferedIO
()
io
=
BufferedIO
()
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_default_source_legacy"
,
io
=
io
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
"with_default_source_legacy"
)
,
io
=
io
)
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
"Found deprecated key"
in
io
.
fetch_error
()
assert
"Found deprecated key"
in
io
.
fetch_error
()
def
test_poetry_with_default_source
(
with_simple_keyring
:
None
):
def
test_poetry_with_default_source
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
io
=
BufferedIO
()
io
=
BufferedIO
()
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_default_source"
,
io
=
io
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
"with_default_source"
)
,
io
=
io
)
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
io
.
fetch_error
()
==
""
assert
io
.
fetch_error
()
==
""
@pytest.mark.parametrize
(
@pytest.mark.parametrize
(
"
fixture_filename
"
,
"
project
"
,
(
"with_non_default_source_implicit"
,
"with_non_default_source_explicit"
),
(
"with_non_default_source_implicit"
,
"with_non_default_source_explicit"
),
)
)
def
test_poetry_with_non_default_source
(
def
test_poetry_with_non_default_source
(
fixture_filename
:
st
r
,
with_simple_keyring
:
None
project
:
str
,
fixture_dir
:
FixtureDirGette
r
,
with_simple_keyring
:
None
):
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
fixture_filename
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
project
)
)
assert
not
poetry
.
pool
.
has_default
()
assert
not
poetry
.
pool
.
has_default
()
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
...
@@ -243,9 +250,11 @@ def test_poetry_with_non_default_source(
...
@@ -243,9 +250,11 @@ def test_poetry_with_non_default_source(
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
}
def
test_poetry_with_non_default_secondary_source_legacy
(
with_simple_keyring
:
None
):
def
test_poetry_with_non_default_secondary_source_legacy
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_non_default_secondary_source_legacy"
fixture
_dir
(
"with_non_default_secondary_source_legacy"
)
)
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
...
@@ -256,8 +265,10 @@ def test_poetry_with_non_default_secondary_source_legacy(with_simple_keyring: No
...
@@ -256,8 +265,10 @@ def test_poetry_with_non_default_secondary_source_legacy(with_simple_keyring: No
assert
[
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
]
==
[
"PyPI"
,
"foo"
]
assert
[
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
]
==
[
"PyPI"
,
"foo"
]
def
test_poetry_with_non_default_secondary_source
(
with_simple_keyring
:
None
):
def
test_poetry_with_non_default_secondary_source
(
poetry
=
Factory
()
.
create_poetry
(
fixtures_dir
/
"with_non_default_secondary_source"
)
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_non_default_secondary_source"
))
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
isinstance
(
poetry
.
pool
.
repository
(
"PyPI"
),
PyPiRepository
)
assert
isinstance
(
poetry
.
pool
.
repository
(
"PyPI"
),
PyPiRepository
)
...
@@ -268,10 +279,11 @@ def test_poetry_with_non_default_secondary_source(with_simple_keyring: None):
...
@@ -268,10 +279,11 @@ def test_poetry_with_non_default_secondary_source(with_simple_keyring: None):
def
test_poetry_with_non_default_multiple_secondary_sources_legacy
(
def
test_poetry_with_non_default_multiple_secondary_sources_legacy
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
,
with_simple_keyring
:
None
,
):
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_non_default_multiple_secondary_sources_legacy"
fixture
_dir
(
"with_non_default_multiple_secondary_sources_legacy"
)
)
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
...
@@ -284,9 +296,11 @@ def test_poetry_with_non_default_multiple_secondary_sources_legacy(
...
@@ -284,9 +296,11 @@ def test_poetry_with_non_default_multiple_secondary_sources_legacy(
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
,
"bar"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
,
"bar"
}
def
test_poetry_with_non_default_multiple_secondary_sources
(
with_simple_keyring
:
None
):
def
test_poetry_with_non_default_multiple_secondary_sources
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_non_default_multiple_secondary_sources"
fixture
_dir
(
"with_non_default_multiple_secondary_sources"
)
)
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
...
@@ -299,9 +313,11 @@ def test_poetry_with_non_default_multiple_secondary_sources(with_simple_keyring:
...
@@ -299,9 +313,11 @@ def test_poetry_with_non_default_multiple_secondary_sources(with_simple_keyring:
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
,
"bar"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"foo"
,
"bar"
}
def
test_poetry_with_non_default_multiple_sources_legacy
(
with_simple_keyring
:
None
):
def
test_poetry_with_non_default_multiple_sources_legacy
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_non_default_multiple_sources_legacy"
fixture
_dir
(
"with_non_default_multiple_sources_legacy"
)
)
)
assert
not
poetry
.
pool
.
has_default
()
assert
not
poetry
.
pool
.
has_default
()
...
@@ -315,8 +331,10 @@ def test_poetry_with_non_default_multiple_sources_legacy(with_simple_keyring: No
...
@@ -315,8 +331,10 @@ def test_poetry_with_non_default_multiple_sources_legacy(with_simple_keyring: No
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"bar"
,
"PyPI"
,
"foo"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"bar"
,
"PyPI"
,
"foo"
}
def
test_poetry_with_non_default_multiple_sources
(
with_simple_keyring
:
None
):
def
test_poetry_with_non_default_multiple_sources
(
poetry
=
Factory
()
.
create_poetry
(
fixtures_dir
/
"with_non_default_multiple_sources"
)
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_non_default_multiple_sources"
))
assert
not
poetry
.
pool
.
has_default
()
assert
not
poetry
.
pool
.
has_default
()
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
...
@@ -329,8 +347,8 @@ def test_poetry_with_non_default_multiple_sources(with_simple_keyring: None):
...
@@ -329,8 +347,8 @@ def test_poetry_with_non_default_multiple_sources(with_simple_keyring: None):
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"bar"
,
"foo"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
,
"bar"
,
"foo"
}
def
test_poetry_with_no_default_source
(
)
:
def
test_poetry_with_no_default_source
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"sample_project"
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
"sample_project"
)
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
has_repository
(
"PyPI"
)
assert
poetry
.
pool
.
get_priority
(
"PyPI"
)
is
Priority
.
DEFAULT
assert
poetry
.
pool
.
get_priority
(
"PyPI"
)
is
Priority
.
DEFAULT
...
@@ -338,8 +356,10 @@ def test_poetry_with_no_default_source():
...
@@ -338,8 +356,10 @@ def test_poetry_with_no_default_source():
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
}
assert
{
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
}
==
{
"PyPI"
}
def
test_poetry_with_explicit_source
(
with_simple_keyring
:
None
)
->
None
:
def
test_poetry_with_explicit_source
(
poetry
=
Factory
()
.
create_poetry
(
fixtures_dir
/
"with_explicit_source"
)
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_explicit_source"
))
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
len
(
poetry
.
pool
.
repositories
)
==
1
assert
len
(
poetry
.
pool
.
all_repositories
)
==
2
assert
len
(
poetry
.
pool
.
all_repositories
)
==
2
...
@@ -351,29 +371,33 @@ def test_poetry_with_explicit_source(with_simple_keyring: None) -> None:
...
@@ -351,29 +371,33 @@ def test_poetry_with_explicit_source(with_simple_keyring: None) -> None:
assert
[
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
]
==
[
"PyPI"
]
assert
[
repo
.
name
for
repo
in
poetry
.
pool
.
repositories
]
==
[
"PyPI"
]
def
test_poetry_with_two_default_sources_legacy
(
with_simple_keyring
:
None
):
def
test_poetry_with_two_default_sources_legacy
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
with
pytest
.
raises
(
ValueError
)
as
e
:
with
pytest
.
raises
(
ValueError
)
as
e
:
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_two_default_sources_legacy"
)
Factory
()
.
create_poetry
(
fixture
_dir
(
"with_two_default_sources_legacy"
)
)
assert
str
(
e
.
value
)
==
"Only one repository can be the default."
assert
str
(
e
.
value
)
==
"Only one repository can be the default."
def
test_poetry_with_two_default_sources
(
with_simple_keyring
:
None
):
def
test_poetry_with_two_default_sources
(
fixture_dir
:
FixtureDirGetter
,
with_simple_keyring
:
None
)
->
None
:
with
pytest
.
raises
(
ValueError
)
as
e
:
with
pytest
.
raises
(
ValueError
)
as
e
:
Factory
()
.
create_poetry
(
fixture
s_dir
/
"with_two_default_sources"
)
Factory
()
.
create_poetry
(
fixture
_dir
(
"with_two_default_sources"
)
)
assert
str
(
e
.
value
)
==
"Only one repository can be the default."
assert
str
(
e
.
value
)
==
"Only one repository can be the default."
def
test_validate
(
)
:
def
test_validate
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
complete
=
TOMLFile
(
fixture
s_dir
/
"complete.toml"
)
complete
=
TOMLFile
(
fixture
_dir
(
"complete.toml"
)
)
content
=
complete
.
read
()[
"tool"
][
"poetry"
]
content
=
complete
.
read
()[
"tool"
][
"poetry"
]
assert
Factory
.
validate
(
content
)
==
{
"errors"
:
[],
"warnings"
:
[]}
assert
Factory
.
validate
(
content
)
==
{
"errors"
:
[],
"warnings"
:
[]}
def
test_validate_fails
(
)
:
def
test_validate_fails
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
complete
=
TOMLFile
(
fixture
s_dir
/
"complete.toml"
)
complete
=
TOMLFile
(
fixture
_dir
(
"complete.toml"
)
)
content
=
complete
.
read
()[
"tool"
][
"poetry"
]
content
=
complete
.
read
()[
"tool"
][
"poetry"
]
content
[
"this key is not in the schema"
]
=
""
content
[
"this key is not in the schema"
]
=
""
...
@@ -385,11 +409,11 @@ def test_validate_fails():
...
@@ -385,11 +409,11 @@ def test_validate_fails():
assert
Factory
.
validate
(
content
)
==
{
"errors"
:
[
expected
],
"warnings"
:
[]}
assert
Factory
.
validate
(
content
)
==
{
"errors"
:
[
expected
],
"warnings"
:
[]}
def
test_create_poetry_fails_on_invalid_configuration
():
def
test_create_poetry_fails_on_invalid_configuration
(
fixture_dir
:
FixtureDirGetter
,
)
->
None
:
with
pytest
.
raises
(
RuntimeError
)
as
e
:
with
pytest
.
raises
(
RuntimeError
)
as
e
:
Factory
()
.
create_poetry
(
Factory
()
.
create_poetry
(
fixture_dir
(
"invalid_pyproject"
)
/
"pyproject.toml"
)
Path
(
__file__
)
.
parent
/
"fixtures"
/
"invalid_pyproject"
/
"pyproject.toml"
)
expected
=
"""
\
expected
=
"""
\
The Poetry configuration is invalid:
The Poetry configuration is invalid:
...
@@ -398,7 +422,7 @@ The Poetry configuration is invalid:
...
@@ -398,7 +422,7 @@ The Poetry configuration is invalid:
assert
str
(
e
.
value
)
==
expected
assert
str
(
e
.
value
)
==
expected
def
test_create_poetry_with_local_config
(
fixture_dir
:
FixtureDirGetter
):
def
test_create_poetry_with_local_config
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_local_config"
))
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"with_local_config"
))
assert
not
poetry
.
config
.
get
(
"virtualenvs.in-project"
)
assert
not
poetry
.
config
.
get
(
"virtualenvs.in-project"
)
...
@@ -409,9 +433,11 @@ def test_create_poetry_with_local_config(fixture_dir: FixtureDirGetter):
...
@@ -409,9 +433,11 @@ def test_create_poetry_with_local_config(fixture_dir: FixtureDirGetter):
assert
not
poetry
.
config
.
get
(
"virtualenvs.options.system-site-packages"
)
assert
not
poetry
.
config
.
get
(
"virtualenvs.options.system-site-packages"
)
def
test_create_poetry_with_plugins
(
mocker
:
MockerFixture
):
def
test_create_poetry_with_plugins
(
mocker
:
MockerFixture
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
mock_metadata_entry_points
(
mocker
,
MyPlugin
)
mock_metadata_entry_points
(
mocker
,
MyPlugin
)
poetry
=
Factory
()
.
create_poetry
(
fixture
s_dir
/
"sample_project"
)
poetry
=
Factory
()
.
create_poetry
(
fixture
_dir
(
"sample_project"
)
)
assert
poetry
.
package
.
readmes
==
(
"README.md"
,)
assert
poetry
.
package
.
readmes
==
(
"README.md"
,)
tests/utils/test_env.py
View file @
3855bc58
...
@@ -42,6 +42,7 @@ if TYPE_CHECKING:
...
@@ -42,6 +42,7 @@ if TYPE_CHECKING:
from
poetry.poetry
import
Poetry
from
poetry.poetry
import
Poetry
from
tests.conftest
import
Config
from
tests.conftest
import
Config
from
tests.types
import
FixtureDirGetter
from
tests.types
import
ProjectFactory
from
tests.types
import
ProjectFactory
MINIMAL_SCRIPT
=
"""
\
MINIMAL_SCRIPT
=
"""
\
...
@@ -77,9 +78,8 @@ class MockVirtualEnv(VirtualEnv):
...
@@ -77,9 +78,8 @@ class MockVirtualEnv(VirtualEnv):
@pytest.fixture
()
@pytest.fixture
()
def
poetry
(
project_factory
:
ProjectFactory
)
->
Poetry
:
def
poetry
(
project_factory
:
ProjectFactory
,
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
fixture
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"simple_project"
return
project_factory
(
"simple"
,
source
=
fixture_dir
(
"simple_project"
))
return
project_factory
(
"simple"
,
source
=
fixture
)
@pytest.fixture
()
@pytest.fixture
()
...
@@ -100,7 +100,7 @@ def test_virtualenvs_with_spaces_in_their_path_work_as_expected(
...
@@ -100,7 +100,7 @@ def test_virtualenvs_with_spaces_in_their_path_work_as_expected(
@pytest.mark.skipif
(
sys
.
platform
!=
"darwin"
,
reason
=
"requires darwin"
)
@pytest.mark.skipif
(
sys
.
platform
!=
"darwin"
,
reason
=
"requires darwin"
)
def
test_venv_backup_exclusion
(
tmp_path
:
Path
,
manager
:
EnvManager
):
def
test_venv_backup_exclusion
(
tmp_path
:
Path
,
manager
:
EnvManager
)
->
None
:
import
xattr
import
xattr
venv_path
=
tmp_path
/
"Virtual Env"
venv_path
=
tmp_path
/
"Virtual Env"
...
@@ -1042,7 +1042,7 @@ def test_check_output_with_called_process_error(
...
@@ -1042,7 +1042,7 @@ def test_check_output_with_called_process_error(
@pytest.mark.parametrize
(
"out"
,
[
"sys.stdout"
,
"sys.stderr"
])
@pytest.mark.parametrize
(
"out"
,
[
"sys.stdout"
,
"sys.stderr"
])
def
test_call_does_not_block_on_full_pipe
(
def
test_call_does_not_block_on_full_pipe
(
tmp_path
:
Path
,
tmp_venv
:
VirtualEnv
,
out
:
str
tmp_path
:
Path
,
tmp_venv
:
VirtualEnv
,
out
:
str
):
)
->
None
:
"""see https://github.com/python-poetry/poetry/issues/7698"""
"""see https://github.com/python-poetry/poetry/issues/7698"""
script
=
tmp_path
/
"script.py"
script
=
tmp_path
/
"script.py"
script
.
write_text
(
script
.
write_text
(
...
@@ -1664,10 +1664,8 @@ def test_generate_env_name_uses_real_path(
...
@@ -1664,10 +1664,8 @@ def test_generate_env_name_uses_real_path(
@pytest.fixture
()
@pytest.fixture
()
def
extended_without_setup_poetry
()
->
Poetry
:
def
extended_without_setup_poetry
(
fixture_dir
:
FixtureDirGetter
)
->
Poetry
:
poetry
=
Factory
()
.
create_poetry
(
poetry
=
Factory
()
.
create_poetry
(
fixture_dir
(
"extended_project_without_setup"
))
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"extended_project_without_setup"
)
return
poetry
return
poetry
...
@@ -1713,6 +1711,7 @@ def test_build_environment_not_called_without_build_script_specified(
...
@@ -1713,6 +1711,7 @@ def test_build_environment_not_called_without_build_script_specified(
def
test_create_venv_project_name_empty_sets_correct_prompt
(
def
test_create_venv_project_name_empty_sets_correct_prompt
(
fixture_dir
:
FixtureDirGetter
,
project_factory
:
ProjectFactory
,
project_factory
:
ProjectFactory
,
config
:
Config
,
config
:
Config
,
mocker
:
MockerFixture
,
mocker
:
MockerFixture
,
...
@@ -1721,8 +1720,7 @@ def test_create_venv_project_name_empty_sets_correct_prompt(
...
@@ -1721,8 +1720,7 @@ def test_create_venv_project_name_empty_sets_correct_prompt(
if
"VIRTUAL_ENV"
in
os
.
environ
:
if
"VIRTUAL_ENV"
in
os
.
environ
:
del
os
.
environ
[
"VIRTUAL_ENV"
]
del
os
.
environ
[
"VIRTUAL_ENV"
]
fixture
=
Path
(
__file__
)
.
parent
.
parent
/
"fixtures"
/
"no_name_project"
poetry
=
project_factory
(
"no"
,
source
=
fixture_dir
(
"no_name_project"
))
poetry
=
project_factory
(
"no"
,
source
=
fixture
)
manager
=
EnvManager
(
poetry
)
manager
=
EnvManager
(
poetry
)
poetry
.
package
.
python_versions
=
"^3.7"
poetry
.
package
.
python_versions
=
"^3.7"
...
...
tests/utils/test_helpers.py
View file @
3855bc58
from
__future__
import
annotations
from
__future__
import
annotations
from
pathlib
import
Path
from
typing
import
TYPE_CHECKING
from
typing
import
TYPE_CHECKING
import
pytest
import
pytest
...
@@ -14,7 +13,7 @@ if TYPE_CHECKING:
...
@@ -14,7 +13,7 @@ if TYPE_CHECKING:
from
tests.types
import
FixtureDirGetter
from
tests.types
import
FixtureDirGetter
def
test_parse_requires
():
def
test_parse_requires
()
->
None
:
requires
=
"""
\
requires
=
"""
\
jsonschema>=2.6.0.0,<3.0.0.0
jsonschema>=2.6.0.0,<3.0.0.0
lockfile>=0.12.0.0,<0.13.0.0
lockfile>=0.12.0.0,<0.13.0.0
...
@@ -71,10 +70,8 @@ isort@ git+git://github.com/timothycrosley/isort.git@e63ae06ec7d70b06df9e5283576
...
@@ -71,10 +70,8 @@ isort@ git+git://github.com/timothycrosley/isort.git@e63ae06ec7d70b06df9e5283576
def
test_default_hash
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
def
test_default_hash
(
fixture_dir
:
FixtureDirGetter
)
->
None
:
root_dir
=
Path
(
__file__
)
.
parent
.
parent
.
parent
file_path
=
root_dir
/
fixture_dir
(
"distributions/demo-0.1.0.tar.gz"
)
sha_256
=
"9fa123ad707a5c6c944743bf3e11a0e80d86cb518d3cf25320866ca3ef43e2ad"
sha_256
=
"9fa123ad707a5c6c944743bf3e11a0e80d86cb518d3cf25320866ca3ef43e2ad"
assert
get_file_hash
(
fi
le_path
)
==
sha_256
assert
get_file_hash
(
fi
xture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
)
==
sha_256
try
:
try
:
...
@@ -130,6 +127,5 @@ except ImportError:
...
@@ -130,6 +127,5 @@ except ImportError:
def
test_guaranteed_hash
(
def
test_guaranteed_hash
(
hash_name
:
str
,
expected
:
str
,
fixture_dir
:
FixtureDirGetter
hash_name
:
str
,
expected
:
str
,
fixture_dir
:
FixtureDirGetter
)
->
None
:
)
->
None
:
root_dir
=
Path
(
__file__
)
.
parent
.
parent
.
parent
file_path
=
fixture_dir
(
"distributions"
)
/
"demo-0.1.0.tar.gz"
file_path
=
root_dir
/
fixture_dir
(
"distributions/demo-0.1.0.tar.gz"
)
assert
get_file_hash
(
file_path
,
hash_name
)
==
expected
assert
get_file_hash
(
file_path
,
hash_name
)
==
expected
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