Skip to content

Commit

Permalink
Support binary and set tags. Fixes #140
Browse files Browse the repository at this point in the history
  • Loading branch information
kislyuk committed Feb 21, 2022
1 parent 6d88a13 commit 6240c0a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
11 changes: 11 additions & 0 deletions test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,5 +251,16 @@ def test_abbrev_opt_collisions(self):
def test_entity_expansion_defense(self):
self.run_yq(bomb_yaml, ["."], expect_exit_codes=["yq: Error: detected unsafe YAML entity expansion"])

def test_yaml_type_tags(self):
bin_yaml = "example: !!binary Zm9vYmFyCg=="
self.assertEqual(self.run_yq(bin_yaml, ["."]), "")
self.assertEqual(self.run_yq(bin_yaml, ["-y", "."]), "example: Zm9vYmFyCg==\n")
set_yaml = "example: !!set { Boston Red Sox, Detroit Tigers, New York Yankees }"
self.assertEqual(self.run_yq(set_yaml, ["."]), "")
self.assertEqual(
self.run_yq(set_yaml, ["-y", "."]),
"example:\n Boston Red Sox: null\n Detroit Tigers: null\n New York Yankees: null\n"
)

if __name__ == '__main__':
unittest.main()
2 changes: 2 additions & 0 deletions yq/loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,6 @@ def parse_unknown_tags(loader, tag_suffix, node):
loader_class.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping)
loader_class.add_constructor(yaml.resolver.BaseResolver.DEFAULT_SEQUENCE_TAG, construct_sequence)
loader_class.add_multi_constructor('', parse_unknown_tags)
loader_class.yaml_constructors.pop("tag:yaml.org,2002:binary", None)
loader_class.yaml_constructors.pop("tag:yaml.org,2002:set", None)
return loader_class

0 comments on commit 6240c0a

Please sign in to comment.