Commit e200a288 by Arun Babu Neelicattu Committed by finswimmer

publish: ensure config url is preferred

parent 733310ca
......@@ -51,11 +51,13 @@ class Factory(BaseFactory):
# Load local sources
repositories = {}
existing_repositories = config.get("repositories", {})
for source in base_poetry.pyproject.poetry_config.get("source", []):
name = source.get("name")
url = source.get("url")
if name and url:
repositories[name] = {"url": url}
if name not in existing_repositories:
repositories[name] = {"url": url}
config.merge({"repositories": repositories})
......
......@@ -29,28 +29,36 @@ def test_publish_publishes_to_pypi_by_default(fixture_dir, mocker, config):
] == uploader_upload.call_args
def test_publish_can_publish_to_given_repository(fixture_dir, mocker, config):
@pytest.mark.parametrize(
("fixture_name",), [("sample_project",), ("with_default_source",)]
)
def test_publish_can_publish_to_given_repository(
fixture_dir, mocker, config, fixture_name
):
uploader_auth = mocker.patch("poetry.publishing.uploader.Uploader.auth")
uploader_upload = mocker.patch("poetry.publishing.uploader.Uploader.upload")
poetry = Factory().create_poetry(fixture_dir("sample_project"))
poetry._config = config
poetry.config.merge(
config.merge(
{
"repositories": {"my-repo": {"url": "http://foo.bar"}},
"http-basic": {"my-repo": {"username": "foo", "password": "bar"}},
"repositories": {"foo": {"url": "http://foo.bar"}},
"http-basic": {"foo": {"username": "foo", "password": "bar"}},
}
)
mocker.patch("poetry.factory.Factory.create_config", return_value=config)
poetry = Factory().create_poetry(fixture_dir(fixture_name))
io = BufferedIO()
publisher = Publisher(poetry, io)
publisher.publish("my-repo", None, None)
publisher.publish("foo", None, None)
assert [("foo", "bar")] == uploader_auth.call_args
assert [
("http://foo.bar",),
{"cert": None, "client_cert": None, "dry_run": False},
] == uploader_upload.call_args
assert "Publishing my-package (1.2.3) to my-repo" in io.fetch_output()
assert "Publishing my-package (1.2.3) to foo" in io.fetch_output()
def test_publish_raises_error_for_undefined_repository(fixture_dir, mocker, config):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment