diff --git a/salt/serializers/yaml.py b/salt/serializers/yaml.py index c95b40e48fbf..2154e5dcabfb 100644 --- a/salt/serializers/yaml.py +++ b/salt/serializers/yaml.py @@ -72,6 +72,7 @@ def serialize(obj, **options): ''' options.setdefault('Dumper', Dumper) + options.setdefault('default_flow_style', None) try: response = yaml.dump(obj, **options) if response.endswith('\n...\n'): diff --git a/salt/serializers/yamlex.py b/salt/serializers/yamlex.py index 2e4ba6fb2b60..e42634f58044 100644 --- a/salt/serializers/yamlex.py +++ b/salt/serializers/yamlex.py @@ -182,6 +182,7 @@ def serialize(obj, **options): ''' options.setdefault('Dumper', Dumper) + options.setdefault('default_flow_style', None) try: response = yaml.dump(obj, **options) if response.endswith('\n...\n'): diff --git a/salt/utils/yamldumper.py b/salt/utils/yamldumper.py index 9892c87d231e..3692ea324aa3 100644 --- a/salt/utils/yamldumper.py +++ b/salt/utils/yamldumper.py @@ -115,6 +115,7 @@ def dump(data, stream=None, **kwargs): ''' if 'allow_unicode' not in kwargs: kwargs['allow_unicode'] = True + kwargs.setdefault('default_flow_style', None) return yaml.dump(data, stream, **kwargs) @@ -126,4 +127,5 @@ def safe_dump(data, stream=None, **kwargs): ''' if 'allow_unicode' not in kwargs: kwargs['allow_unicode'] = True + kwargs.setdefault('default_flow_style', None) return yaml.dump(data, stream, Dumper=SafeOrderedDumper, **kwargs) diff --git a/tests/unit/serializers/test_serializers.py b/tests/unit/serializers/test_serializers.py index 8ebedcdd3fa2..84bb4724bbe9 100644 --- a/tests/unit/serializers/test_serializers.py +++ b/tests/unit/serializers/test_serializers.py @@ -68,9 +68,24 @@ def test_serialize_sls(self): serialized = yamlex.serialize(data) assert serialized == '{foo: bar}', serialized + serialized = yamlex.serialize(data, default_flow_style=False) + assert serialized == 'foo: bar', serialized + deserialized = yamlex.deserialize(serialized) assert deserialized == data, deserialized + serialized = yaml.serialize(data) + assert serialized == '{foo: bar}', serialized + + deserialized = yaml.deserialize(serialized) + assert deserialized == data, deserialized + + serialized = yaml.serialize(data, default_flow_style=False) + assert serialized == 'foo: bar', serialized + + deserialized = yaml.deserialize(serialized) + assert deserialized == data, deserialized + @skipIf(not yamlex.available, SKIP_MESSAGE % 'sls') def test_serialize_complex_sls(self): data = OrderedDict([ @@ -84,6 +99,12 @@ def test_serialize_complex_sls(self): deserialized = yamlex.deserialize(serialized) assert deserialized == data, deserialized + serialized = yaml.serialize(data) + assert serialized == '{bar: 2, baz: true, foo: 1}', serialized + + deserialized = yaml.deserialize(serialized) + assert deserialized == data, deserialized + @skipIf(not yaml.available, SKIP_MESSAGE % 'yaml') @skipIf(not yamlex.available, SKIP_MESSAGE % 'sls') def test_compare_sls_vs_yaml(self): diff --git a/tests/unit/utils/test_yamldumper.py b/tests/unit/utils/test_yamldumper.py new file mode 100644 index 000000000000..7056d90fec20 --- /dev/null +++ b/tests/unit/utils/test_yamldumper.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +''' + Unit tests for salt.utils.yamldumper +''' + +# Import python libs +from __future__ import absolute_import, print_function, unicode_literals + +# Import Salt Libs +import salt.ext.six +import salt.utils.yamldumper + +# Import Salt Testing Libs +from tests.support.unit import TestCase, skipIf +from tests.support.mock import NO_MOCK, NO_MOCK_REASON + + +@skipIf(NO_MOCK, NO_MOCK_REASON) +class YamlDumperTestCase(TestCase): + ''' + TestCase for salt.utils.yamldumper module + ''' + def test_yaml_dump(self): + ''' + Test yaml.dump a dict + ''' + data = {'foo': 'bar'} + + if salt.ext.six.PY2: + exp_yaml = '{!!python/unicode \'foo\': !!python/unicode \'bar\'}\n' + else: + exp_yaml = '{foo: bar}\n' + + assert salt.utils.yamldumper.dump(data) == exp_yaml + + assert salt.utils.yamldumper.dump(data, default_flow_style=False) == exp_yaml.replace('{', '').replace('}', '') + + def test_yaml_safe_dump(self): + ''' + Test yaml.safe_dump a dict + ''' + data = {'foo': 'bar'} + assert salt.utils.yamldumper.safe_dump(data) == '{foo: bar}\n' + + assert salt.utils.yamldumper.safe_dump(data, default_flow_style=False) == 'foo: bar\n'