123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- # -*- coding: utf-8 -*-
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import shutil
- import textwrap
- import pytest
- import salt.utils.files
- import salt.utils.platform
- import salt.utils.stringutils
- from tests.support.case import ModuleCase
- @pytest.mark.windows_whitelisted
- class PyDSLRendererIncludeTestCase(ModuleCase):
- def setUp(self):
- self.directory_created = False
- if salt.utils.platform.is_windows():
- if not os.path.isdir("\\tmp"):
- os.mkdir("\\tmp")
- self.directory_created = True
- def tearDown(self):
- if salt.utils.platform.is_windows():
- if self.directory_created:
- shutil.rmtree("\\tmp")
- @pytest.mark.destructive_test
- @pytest.mark.slow_test(seconds=30) # Test takes >10 and <=30 seconds
- def test_rendering_includes(self):
- """
- This test is currently hard-coded to /tmp to work-around a seeming
- inability to load custom modules inside the pydsl renderers. This
- is a FIXME.
- """
- self.run_function("state.sls", ["pydsl.aaa"])
- expected = textwrap.dedent(
- """\
- X1
- X2
- X3
- Y1 extended
- Y2 extended
- Y3
- hello red 1
- hello green 2
- hello blue 3
- """
- )
- # Windows adds `linefeed` in addition to `newline`. There's also an
- # unexplainable space before the `linefeed`...
- if salt.utils.platform.is_windows():
- expected = (
- "X1 \r\n"
- "X2 \r\n"
- "X3 \r\n"
- "Y1 extended \r\n"
- "Y2 extended \r\n"
- "Y3 \r\n"
- "hello red 1 \r\n"
- "hello green 2 \r\n"
- "hello blue 3 \r\n"
- )
- try:
- with salt.utils.files.fopen("/tmp/output", "r") as f:
- ret = salt.utils.stringutils.to_unicode(f.read())
- finally:
- os.remove("/tmp/output")
- self.assertEqual(sorted(ret), sorted(expected))
|