[postprocessor:metadata] handle dicts in mode;tags (fixes #1598)
This commit is contained in:
@@ -102,11 +102,17 @@ class MetadataPP(PostProcessor):
|
||||
if not tags:
|
||||
return
|
||||
|
||||
if not isinstance(tags, list):
|
||||
if isinstance(tags, str):
|
||||
taglist = tags.split(", ")
|
||||
if len(taglist) < len(tags) / 16:
|
||||
taglist = tags.split(" ")
|
||||
tags = taglist
|
||||
elif isinstance(tags, dict):
|
||||
taglists = tags.values()
|
||||
tags = []
|
||||
extend = tags.extend
|
||||
for taglist in taglists:
|
||||
extend(taglist)
|
||||
|
||||
fp.write("\n".join(tags) + "\n")
|
||||
|
||||
|
||||
@@ -30,9 +30,9 @@ class MockPostprocessorModule(Mock):
|
||||
|
||||
class FakeJob():
|
||||
|
||||
def __init__(self):
|
||||
self.extractor = extractor.find("test:")
|
||||
self.pathfmt = util.PathFormat(self.extractor)
|
||||
def __init__(self, extr=extractor.find("test:")):
|
||||
self.extractor = extr
|
||||
self.pathfmt = util.PathFormat(extr)
|
||||
self.out = output.NullOutput()
|
||||
self.get_logger = logging.getLogger
|
||||
self.hooks = collections.defaultdict(list)
|
||||
@@ -243,6 +243,15 @@ class MetadataTest(BasePostprocessorTest):
|
||||
self._trigger()
|
||||
self.assertEqual(self._output(m), "foo\nbar\nbaz\n")
|
||||
|
||||
def test_metadata_tags_dict(self):
|
||||
self._create(
|
||||
{"mode": "tags"},
|
||||
{"tags": {"g": ["foobar1", "foobar2"], "m": ["foobarbaz"]}},
|
||||
)
|
||||
with patch("builtins.open", mock_open()) as m:
|
||||
self._trigger()
|
||||
self.assertEqual(self._output(m), "foobar1\nfoobar2\nfoobarbaz\n")
|
||||
|
||||
def test_metadata_custom(self):
|
||||
def test(pp_info):
|
||||
pp = self._create(pp_info, {"foo": "bar"})
|
||||
|
||||
Reference in New Issue
Block a user