diff --git a/codecov_cli/helpers/encoder.py b/codecov_cli/helpers/encoder.py index 167a817e..19eb54a1 100644 --- a/codecov_cli/helpers/encoder.py +++ b/codecov_cli/helpers/encoder.py @@ -1,13 +1,21 @@ import re +import click + slug_without_subgroups_regex = re.compile(r"[^/\s]+\/[^/\s]+$") slug_with_subgroups_regex = re.compile(r"[^/\s]+(\/[^/\s]+)+$") encoded_slug_regex = re.compile(r"[^:\s]+(:::[^:\s]+)*(::::[^:\s]+){1}$") def encode_slug(slug: str): + if slug is None: + raise click.ClickException( + "Slug is required. Provide it via --slug or ensure CI environment variables are set." + ) if slug_with_subgroups_is_invalid(slug): - raise ValueError("The provided slug is invalid") + raise click.ClickException( + "The provided slug is invalid. Expected format: owner/repo or owner/subgroup/repo." + ) owner, repo = slug.rsplit("/", 1) encoded_owner = ":::".join(owner.split("/")) encoded_slug = "::::".join([encoded_owner, repo]) diff --git a/tests/helpers/test_encoder.py b/tests/helpers/test_encoder.py index cc185487..05d37cd3 100644 --- a/tests/helpers/test_encoder.py +++ b/tests/helpers/test_encoder.py @@ -1,3 +1,4 @@ +import click import pytest from codecov_cli.helpers.encoder import ( @@ -21,7 +22,7 @@ ], ) def test_encode_invalid_slug(slug): - with pytest.raises(ValueError): + with pytest.raises(click.ClickException): encode_slug(slug)