Commit e200a288 by Arun Babu Neelicattu Committed by finswimmer

publish: ensure config url is preferred

parent 733310ca
...@@ -51,10 +51,12 @@ class Factory(BaseFactory): ...@@ -51,10 +51,12 @@ class Factory(BaseFactory):
# Load local sources # Load local sources
repositories = {} repositories = {}
existing_repositories = config.get("repositories", {})
for source in base_poetry.pyproject.poetry_config.get("source", []): for source in base_poetry.pyproject.poetry_config.get("source", []):
name = source.get("name") name = source.get("name")
url = source.get("url") url = source.get("url")
if name and url: if name and url:
if name not in existing_repositories:
repositories[name] = {"url": url} repositories[name] = {"url": url}
config.merge({"repositories": repositories}) config.merge({"repositories": repositories})
......
...@@ -29,28 +29,36 @@ def test_publish_publishes_to_pypi_by_default(fixture_dir, mocker, config): ...@@ -29,28 +29,36 @@ def test_publish_publishes_to_pypi_by_default(fixture_dir, mocker, config):
] == uploader_upload.call_args ] == 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_auth = mocker.patch("poetry.publishing.uploader.Uploader.auth")
uploader_upload = mocker.patch("poetry.publishing.uploader.Uploader.upload") uploader_upload = mocker.patch("poetry.publishing.uploader.Uploader.upload")
poetry = Factory().create_poetry(fixture_dir("sample_project"))
poetry._config = config config.merge(
poetry.config.merge(
{ {
"repositories": {"my-repo": {"url": "http://foo.bar"}}, "repositories": {"foo": {"url": "http://foo.bar"}},
"http-basic": {"my-repo": {"username": "foo", "password": "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() io = BufferedIO()
publisher = Publisher(poetry, io) publisher = Publisher(poetry, io)
publisher.publish("my-repo", None, None) publisher.publish("foo", None, None)
assert [("foo", "bar")] == uploader_auth.call_args assert [("foo", "bar")] == uploader_auth.call_args
assert [ assert [
("http://foo.bar",), ("http://foo.bar",),
{"cert": None, "client_cert": None, "dry_run": False}, {"cert": None, "client_cert": None, "dry_run": False},
] == uploader_upload.call_args ] == 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): 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