Skip to content

Commit

Permalink
handle empty issue names (#656)
Browse files Browse the repository at this point in the history
  • Loading branch information
adiroiban authored Aug 6, 2024
2 parents 543db79 + c24e5a1 commit 4aa8174
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
6 changes: 5 additions & 1 deletion src/towncrier/_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,11 @@ def find_fragments(
counter = orphan_fragment_counter[category]
orphan_fragment_counter[category] += 1

if config.issue_pattern and not re.fullmatch(config.issue_pattern, issue):
if (
config.issue_pattern
and issue # not orphan
and not re.fullmatch(config.issue_pattern, issue)
):
raise ClickException(
f"Issue name '{issue}' does not match the "
f"configured pattern, '{config.issue_pattern}'"
Expand Down
1 change: 1 addition & 0 deletions src/towncrier/newsfragments/655.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed a bug where orphan news fragments (e.g. +abc1234.feature) would fail when an `issue_pattern` is configured. Orphan news fragments are now excempt from `issue_pattern` checks.
50 changes: 41 additions & 9 deletions src/towncrier/test/test_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -529,14 +529,32 @@ def test_issue_pattern(self, runner):
"pyproject.toml",
extra_config='issue_pattern = "\\\\d+"',
)
write(
"foo/newsfragments/AAA.BBB.feature.md",
"This fragment has an invalid name (should be digits only)",
)
write(
"foo/newsfragments/123.feature",
"This fragment has a valid name",
)
write(
"foo/newsfragments/+abcdefg.feature",
"This fragment has a valid name (orphan fragment)",
)
commit("add stuff")

result = runner.invoke(towncrier_check, ["--compare-with", "main"])
self.assertEqual(0, result.exit_code, result.output)

@with_isolated_runner
def test_issue_pattern_invalid_with_suffix(self, runner):
"""
Fails if an issue name goes against the configured pattern.
"""
create_project(
"pyproject.toml",
extra_config='issue_pattern = "\\\\d+"',
)
write(
"foo/newsfragments/AAA.BBB.feature.md",
"This fragment has an invalid name (should be digits only)",
)
commit("add stuff")

result = runner.invoke(towncrier_check, ["--compare-with", "main"])
Expand All @@ -545,11 +563,25 @@ def test_issue_pattern(self, runner):
"Error: Issue name 'AAA.BBB' does not match the configured pattern, '\\d+'",
result.output,
)
self.assertNotIn(
"Error: Issue '123' does not match the configured pattern, '\\d+'",
result.output,

@with_isolated_runner
def test_issue_pattern_invalid(self, runner):
"""
Fails if an issue name goes against the configured pattern.
"""
create_project(
"pyproject.toml",
extra_config='issue_pattern = "\\\\d+"',
)
self.assertNotIn(
"Error: Issue '123.feature' does not match the configured pattern, '\\d+'",
write(
"foo/newsfragments/AAA.BBB.feature",
"This fragment has an invalid name (should be digits only)",
)
commit("add stuff")

result = runner.invoke(towncrier_check, ["--compare-with", "main"])
self.assertEqual(1, result.exit_code, result.output)
self.assertIn(
"Error: Issue name 'AAA.BBB' does not match the configured pattern, '\\d+'",
result.output,
)

0 comments on commit 4aa8174

Please sign in to comment.