Skip to content

Commit 0a20e70

Browse files
Trim whitespace from multi-value fields (#26)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 5388339 commit 0a20e70

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
message: Trim whitespace from multi-value fields.
2+
pr_ids:
3+
- '26'
4+
timestamp: 1665243991
5+
type: minor

changelogd/changelogd.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# -*- coding: utf-8 -*-
22
"""Main module."""
3+
import csv
34
import datetime
45
import getpass
56
import glob
67
import hashlib
8+
import io
79
import json
810
import logging
911
import os
@@ -60,7 +62,9 @@ def value(self) -> typing.Any:
6062
if value is None and not self.required:
6163
break
6264
if value is not None and self.multiple:
63-
value = value.split(",")
65+
csv_string = io.StringIO(value)
66+
reader = csv.reader(csv_string, delimiter=",")
67+
value = [value.strip() for value in next(reader)]
6468
return value
6569

6670

tests/test_entry.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,34 @@ def test_non_interactive_data(setup_env, type_input):
111111
}
112112

113113

114+
def test_multi_value_string(setup_env):
115+
runner = CliRunner()
116+
runner.invoke(commands.init)
117+
118+
entry = runner.invoke(
119+
commands.entry,
120+
["--type", "1", "--message", "test message"],
121+
input='a, b,"c,d", e,f',
122+
)
123+
assert entry.exit_code == 0
124+
125+
entries = glob.glob(str(setup_env / "changelog.d" / "*entry.yaml"))
126+
assert len(entries) == 1
127+
128+
with open(entries[0]) as entry_fh:
129+
entry_content = yaml.load(entry_fh)
130+
131+
assert entry_content.pop("timestamp")
132+
assert entry_content == {
133+
"git_email": "user@example.com",
134+
"git_user": "Some User",
135+
"issue_id": ["a", "b", "c,d", "e", "f"],
136+
"message": "test message",
137+
"os_user": "test-user",
138+
"type": "feature",
139+
}
140+
141+
114142
def test_entry_missing_message_types(setup_env, caplog):
115143
runner = CliRunner()
116144
runner.invoke(commands.init)

0 commit comments

Comments
 (0)