mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 09:23:56 +00:00
61f30a9d80
Example: ``` yaml pillars: default: commands: {% if grains['os'] == 'RedHat' %} pkg_grains: /usr/bin/rpm_grains {% endif %} ``` In this case `pkg_grains` wouldn't be found on anything else that RedHat systems and would be NoneType which would return an error and break the module.
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Import python libs
|
|
from __future__ import absolute_import
|
|
import os
|
|
|
|
# Import Salt Testing libs
|
|
from tests.support.mixins import LoaderModuleMockMixin
|
|
from tests.support.unit import TestCase, skipIf
|
|
from tests.support.mock import NO_MOCK, NO_MOCK_REASON
|
|
|
|
# Import Salt Libs
|
|
import salt.pillar.saltclass as saltclass
|
|
|
|
|
|
base_path = os.path.dirname(os.path.realpath(__file__))
|
|
fake_minion_id = 'fake_id'
|
|
fake_pillar = {}
|
|
fake_args = ({'path': '{0}/../../integration/files/saltclass/examples'.format(base_path)})
|
|
fake_opts = {}
|
|
fake_salt = {}
|
|
fake_grains = {}
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
class SaltclassPillarTestCase(TestCase, LoaderModuleMockMixin):
|
|
'''
|
|
Tests for salt.pillar.saltclass
|
|
'''
|
|
def setup_loader_modules(self):
|
|
return {saltclass: {'__opts__': fake_opts,
|
|
'__salt__': fake_salt,
|
|
'__grains__': fake_grains
|
|
}}
|
|
|
|
def _runner(self, expected_ret):
|
|
full_ret = {}
|
|
parsed_ret = []
|
|
try:
|
|
full_ret = saltclass.ext_pillar(fake_minion_id, fake_pillar, fake_args)
|
|
parsed_ret = full_ret['__saltclass__']['classes']
|
|
# Fail the test if we hit our NoneType error
|
|
except TypeError as err:
|
|
self.fail(err)
|
|
# Else give the parsed content result
|
|
self.assertListEqual(parsed_ret, expected_ret)
|
|
|
|
def test_succeeds(self):
|
|
ret = ['default.users', 'default.motd', 'default', 'roles.app']
|
|
self._runner(ret)
|