diff --git a/services/notification/notifiers/mixins/message/sections.py b/services/notification/notifiers/mixins/message/sections.py index 4474d9bae..c6e42614d 100644 --- a/services/notification/notifiers/mixins/message/sections.py +++ b/services/notification/notifiers/mixins/message/sections.py @@ -126,8 +126,9 @@ async def do_write_section(self, comparison, diff, changes, links, behind_by=Non misses_and_partials = None patch_coverage = None if misses_and_partials: + ln_text = "lines" if misses_and_partials > 1 else "line" yield ( - f"Attention: Patch coverage is `{patch_coverage}%` with `{misses_and_partials} lines` in your changes are missing coverage. Please review." + f"Attention: Patch coverage is `{patch_coverage}%` with `{misses_and_partials} {ln_text}` in your changes missing coverage. Please review." ) else: yield "All modified and coverable lines are covered by tests :white_check_mark:" diff --git a/services/notification/notifiers/mixins/message/writers.py b/services/notification/notifiers/mixins/message/writers.py index 0cf5d2d06..04aeb98f2 100644 --- a/services/notification/notifiers/mixins/message/writers.py +++ b/services/notification/notifiers/mixins/message/writers.py @@ -37,8 +37,9 @@ def header_lines(self, comparison: ComparisonProxy, diff, settings) -> List[str] misses_and_partials = None patch_coverage = None if misses_and_partials: + ln_text = "lines" if misses_and_partials > 1 else "line" lines.append( - f"Attention: Patch coverage is `{patch_coverage}%` with `{misses_and_partials} lines` in your changes are missing coverage. Please review." + f"Attention: Patch coverage is `{patch_coverage}%` with `{misses_and_partials} {ln_text}` in your changes missing coverage. Please review." ) else: lines.append( diff --git a/services/notification/notifiers/tests/unit/test_checks.py b/services/notification/notifiers/tests/unit/test_checks.py index d43d26133..f81e26b96 100644 --- a/services/notification/notifiers/tests/unit/test_checks.py +++ b/services/notification/notifiers/tests/unit/test_checks.py @@ -1508,7 +1508,7 @@ async def test_build_default_payload( "text": "\n".join( [ f"## [Codecov](test.example.br/gh/test_build_default_payload/{repo.name}/pull/{sample_comparison.pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{base_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload/{repo.name}/commit/{base_commit.commitid}?dropdown=coverage&el=desc) to head [(`{head_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload/{repo.name}/commit/{head_commit.commitid}?dropdown=coverage&el=desc)." f"", f"", @@ -1551,7 +1551,7 @@ async def test_build_default_payload_with_flags( "text": "\n".join( [ f"## [Codecov](test.example.br/gh/test_build_default_payload_with_flags/{repo.name}/pull/{sample_comparison.pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{base_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload_with_flags/{repo.name}/commit/{base_commit.commitid}?dropdown=coverage&el=desc) to head [(`{head_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload_with_flags/{repo.name}/commit/{head_commit.commitid}?dropdown=coverage&el=desc)." f"", f"", @@ -1595,7 +1595,7 @@ async def test_build_default_payload_with_flags_and_footer( "text": "\n".join( [ f"## [Codecov](test.example.br/gh/{test_name}/{repo.name}/pull/{sample_comparison.pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{base_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload_with_flags_and_footer/{repo.name}/commit/{base_commit.commitid}?dropdown=coverage&el=desc) to head [(`{head_commit.commitid[:7]}`)](test.example.br/gh/test_build_default_payload_with_flags_and_footer/{repo.name}/commit/{head_commit.commitid}?dropdown=coverage&el=desc).", f"", f"| [Files](test.example.br/gh/{test_name}/{repo.name}/pull/{sample_comparison.pull.pullid}?dropdown=coverage&src=pr&el=tree) | Coverage Δ | Complexity Δ | |", diff --git a/services/notification/notifiers/tests/unit/test_comment.py b/services/notification/notifiers/tests/unit/test_comment.py index 56bf5396e..fd04e9770 100644 --- a/services/notification/notifiers/tests/unit/test_comment.py +++ b/services/notification/notifiers/tests/unit/test_comment.py @@ -940,7 +940,7 @@ async def test_build_message( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1065,7 +1065,7 @@ async def test_build_message_more_sections( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1363,7 +1363,7 @@ async def test_build_message_hide_complexity( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1437,7 +1437,7 @@ async def test_build_message_no_base_report( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Please [upload](https://docs.codecov.com/docs/codecov-uploader) report for BASE (`master@{comparison.project_coverage_base.commit.commitid[:7]}`). [Learn more](https://docs.codecov.io/docs/error-reference#section-missing-base-commit) about missing BASE report.", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1508,7 +1508,7 @@ async def test_build_message_no_base_commit( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Please [upload](https://docs.codecov.com/docs/codecov-uploader) report for BASE (`master@cdf9aa4`). [Learn more](https://docs.codecov.io/docs/error-reference#section-missing-base-commit) about missing BASE report.", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1581,7 +1581,7 @@ async def test_build_message_no_change( expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -1848,7 +1848,7 @@ async def test_build_message_show_carriedforward_flags_no_cf_coverage( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -2229,7 +2229,7 @@ async def test_build_message_no_flags( result = await notifier.build_message(sample_comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -3284,7 +3284,7 @@ async def test_message_hide_details_github( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"
Additional details and impacted files\n", @@ -3318,7 +3318,7 @@ async def test_message_announcements_only( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", "", ":mega: message", @@ -3355,7 +3355,7 @@ async def test_message_hide_details_bitbucket( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{sample_comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{sample_comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{sample_comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -4503,7 +4503,7 @@ async def test_build_message_no_base_commit_new_layout( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Please [upload](https://docs.codecov.com/docs/codecov-uploader) report for BASE (`master@cdf9aa4`). [Learn more](https://docs.codecov.io/docs/error-reference#section-missing-base-commit) about missing BASE report.", f"", f"[![Impacted file tree graph](test.example.br/gh/{repository.slug}/pull/{pull.pullid}/graphs/tree.svg?width=650&height=150&src=pr&token={repository.image_token})](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree)", @@ -4569,7 +4569,7 @@ async def test_build_message_no_base_report_new_layout( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Please [upload](https://docs.codecov.com/docs/codecov-uploader) report for BASE (`master@{comparison.project_coverage_base.commit.commitid[:7]}`). [Learn more](https://docs.codecov.io/docs/error-reference#section-missing-base-commit) about missing BASE report.", f"", f"
Additional details and impacted files\n", @@ -4639,7 +4639,7 @@ async def test_build_message_no_project_coverage( pull_url = f"test.example.br/gh/{repository.slug}/pull/{pull.pullid}" expected_result = [ f"## [Codecov]({pull_url}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"", f"| [Files]({pull_url}?dropdown=coverage&src=pr&el=tree) | Patch % | Lines |", f"|---|---|---|", @@ -4680,7 +4680,7 @@ async def test_build_message_no_project_coverage_condensed_yaml_configs( pull_url = f"test.example.br/gh/{repository.slug}/pull/{pull.pullid}" expected_result = [ f"## [Codecov]({pull_url}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"", f"| [Files]({pull_url}?dropdown=coverage&src=pr&el=tree) | Patch % | Lines |", f"|---|---|---|", @@ -4720,7 +4720,7 @@ async def test_build_message_head_and_pull_head_differ_new_layout( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"> :exclamation: **Current head {comparison.head.commit.commitid[:7]} differs from pull request most recent head {comparison.enriched_pull.provider_pull['head']['commitid'][:7]}**", @@ -4797,7 +4797,7 @@ async def test_build_message_head_and_pull_head_differ_with_components( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - f"Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + f"Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"> Project coverage is 60.00%. Comparing base [(`{comparison.project_coverage_base.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.project_coverage_base.commit.commitid}?dropdown=coverage&el=desc) to head [(`{comparison.head.commit.commitid[:7]}`)](test.example.br/gh/{repository.slug}/commit/{comparison.head.commit.commitid}?dropdown=coverage&el=desc).", f"", f"> :exclamation: **Current head {comparison.head.commit.commitid[:7]} differs from pull request most recent head {comparison.enriched_pull.provider_pull['head']['commitid'][:7]}**", @@ -4884,7 +4884,7 @@ async def test_build_message_team_plan_customer_missing_lines( result = await notifier.build_message(comparison) expected_result = [ f"## [Codecov](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=h1) Report", - "Attention: Patch coverage is `66.66667%` with `1 lines` in your changes are missing coverage. Please review.", + "Attention: Patch coverage is `66.66667%` with `1 line` in your changes missing coverage. Please review.", f"| [Files](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?dropdown=coverage&src=pr&el=tree) | Patch % | Lines |", "|---|---|---|", f"| [file\\_1.go](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree#diff-ZmlsZV8xLmdv) | 66.67% | [1 Missing :warning: ](test.example.br/gh/{repository.slug}/pull/{pull.pullid}?src=pr&el=tree) |",