Skip to content

Commit d9965ab

Browse files
committed
Fixed empty string replacement bug
Only a missing replacement value will trigger one of the fallback options. Fixes #117
1 parent c8f2657 commit d9965ab

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

bumpversion/files.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,13 @@ def __init__(
7474
search: Optional[str] = None,
7575
replace: Optional[str] = None,
7676
) -> None:
77+
replacements = [replace, file_change.replace, version_config.replace]
78+
replacement = next((r for r in replacements if r is not None), "")
7779
self.file_change = FileChange(
7880
parse=file_change.parse or version_config.parse_regex.pattern,
7981
serialize=file_change.serialize or version_config.serialize_formats,
8082
search=search or file_change.search or version_config.search,
81-
replace=replace or file_change.replace or version_config.replace,
83+
replace=replacement,
8284
regex=file_change.regex or False,
8385
ignore_missing_version=file_change.ignore_missing_version or False,
8486
filename=file_change.filename,

tests/test_cli.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,7 @@ def test_replace_with_empty_string(tmp_path, fixtures_path):
576576
cli.cli,
577577
[
578578
"replace",
579+
"--verbose",
579580
"--no-configured-files",
580581
"--allow-dirty",
581582
"--search",
@@ -590,8 +591,8 @@ def test_replace_with_empty_string(tmp_path, fixtures_path):
590591
print("Here is the output:")
591592
print(result.output)
592593
print(traceback.print_exception(result.exc_info[1]))
593-
594594
assert result.exit_code == 0
595+
assert doc_path.read_text() == "We should censor \n\n"
595596

596597

597598
def test_valid_regex_not_ignoring_regex(tmp_path: Path, caplog) -> None:

0 commit comments

Comments
 (0)