1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # -*- 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
- from tests.support.helpers import destructiveTest
- from tests.support.unit import skipIf
- @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")
- @destructiveTest
- @skipIf(True, "SLOWTEST skip")
- 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))
|