prevent tags from being separated inbetween (#34)

Add workaround for the destructured tags from taskpirate

This includes a detection of the type of the tags and then converting it back to a list.
Unit tests for this behavior are also added.
This commit is contained in:
Felix Schurk 2023-12-15 20:35:56 +01:00 committed by GitHub
parent f76f6ef733
commit 87a3426d81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 66 additions and 1 deletions

View file

@ -51,6 +51,12 @@ def extract_tags_from(json_obj):
tags.append(json_obj['project']) tags.append(json_obj['project'])
if 'tags' in json_obj: if 'tags' in json_obj:
if type(json_obj['tags']) is str:
# Usage of tasklib (e.g. in taskpirate) converts the tag list into a string
# If this is the case, convert it back into a list first
# See https://github.com/tbabej/taskpirate/issues/11
tags.extend(json_obj['tags'].split(','))
else:
tags.extend(json_obj['tags']) tags.extend(json_obj['tags'])
return tags return tags

View file

@ -367,3 +367,62 @@ def test_hook_should_process_stop():
) )
verify(subprocess).call(['timew', 'stop', 'Foo', ':yes']) verify(subprocess).call(['timew', 'stop', 'Foo', ':yes'])
@pytest.mark.usefixtures("teardown")
def test_hook_should_process_start_issue34_with_multiple_tags():
"""on-modify hook should process 'task start' (issue #34) with multiple tags"""
when(subprocess).call(...)
on_modify.main(
json.loads(
'''{
"description": "Foo",
"entry": "20190820T203842Z",
"modified": "20190820T203842Z",
"status": "pending",
"tags": ["abc", "xyz"],
"uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
}'''),
json.loads(
'''{
"description": "Foo",
"entry": "20190820T203842Z",
"modified": "20190820T203842Z",
"start": "20190820T203842Z",
"status": "pending",
"tags": "abc,xyz",
"uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
}''')
)
verify(subprocess).call(['timew', 'start', 'Foo', 'abc', 'xyz', ':yes'])
@pytest.mark.usefixtures("teardown")
def test_hook_should_process_start_issue34_with_single_tags():
"""on-modify hook should process 'task start' (issue #34) with single tags"""
when(subprocess).call(...)
on_modify.main(
json.loads(
'''{
"description": "Foo",
"entry": "20190820T203842Z",
"modified": "20190820T203842Z",
"status": "pending",
"tags": ["abc"],
"uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
}'''),
json.loads(
'''{
"description": "Foo",
"entry": "20190820T203842Z",
"modified": "20190820T203842Z",
"start": "20190820T203842Z",
"status": "pending",
"tags": "abc",
"uuid": "16af44c5-57d2-43bf-97ed-cf2e541d927f"
}''')
)
verify(subprocess).call(['timew', 'start', 'Foo', 'abc', ':yes'])