123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- # -*- coding: utf-8 -*-
- # Import Python Libs
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import shutil
- import tempfile
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.paths import TMP
- from tests.support.unit import skipIf, TestCase
- from tests.support.mock import NO_MOCK, NO_MOCK_REASON
- # Import salt libs
- import salt.utils.files
- import salt.utils.stringutils
- import salt.runners.winrepo as winrepo
- # Can't use raw string with unicode_literals, since the \u in the uninstaller
- # will be interpreted as a unicode code point and the interpreter will raise a
- # SyntaxError.
- _WINREPO_SLS = '''
- winscp_x86:
- 5.7.5:
- full_name: 'WinSCP 5.7.5'
- installer: 'http://heanet.dl.sourceforge.net/project/winscp/WinSCP/5.7.5/winscp575setup.exe'
- install_flags: '/SP- /verysilent /norestart'
- uninstaller: '%PROGRAMFILES%\\WinSCP\\unins000.exe'
- uninstall_flags: '/verysilent'
- msiexec: False
- locale: en_US
- reboot: False
- 5.7.4:
- full_name: 'WinSCP 5.7.4'
- installer: 'http://cznic.dl.sourceforge.net/project/winscp/WinSCP/5.7.4/winscp574setup.exe'
- install_flags: '/SP- /verysilent /norestart'
- uninstaller: '%PROGRAMFILES%\\WinSCP\\unins000.exe'
- uninstall_flags: '/verysilent'
- msiexec: False
- locale: en_US
- reboot: False
- '''
- _WINREPO_GENREPO_DATA = {
- 'name_map': {
- 'WinSCP 5.7.4': 'winscp_x86',
- 'WinSCP 5.7.5': 'winscp_x86'
- },
- 'repo': {
- 'winscp_x86': {
- '5.7.5': {
- 'full_name': 'WinSCP 5.7.5',
- 'installer': 'http://heanet.dl.sourceforge.net/project/winscp/WinSCP/5.7.5/winscp575setup.exe',
- 'install_flags': '/SP- /verysilent /norestart',
- 'uninstaller': '%PROGRAMFILES%\\WinSCP\\unins000.exe',
- 'uninstall_flags': '/verysilent',
- 'msiexec': False,
- 'locale': 'en_US',
- 'reboot': False
- },
- '5.7.4': {
- 'full_name': 'WinSCP 5.7.4',
- 'installer': 'http://cznic.dl.sourceforge.net/project/winscp/WinSCP/5.7.4/winscp574setup.exe',
- 'install_flags': '/SP- /verysilent /norestart',
- 'uninstaller': '%PROGRAMFILES%\\WinSCP\\unins000.exe',
- 'uninstall_flags': '/verysilent',
- 'msiexec': False,
- 'locale': 'en_US',
- 'reboot': False
- }
- }
- }
- }
- @skipIf(NO_MOCK, NO_MOCK_REASON)
- class WinrepoTest(TestCase, LoaderModuleMockMixin):
- '''
- Test the winrepo runner
- '''
- def setup_loader_modules(self):
- self.winrepo_dir = tempfile.mkdtemp(dir=TMP)
- self.addCleanup(shutil.rmtree, self.winrepo_dir, ignore_errors=True)
- self.extmods_dir = tempfile.mkdtemp(dir=TMP)
- self.addCleanup(shutil.rmtree, self.extmods_dir, ignore_errors=True)
- self.winrepo_sls_dir = os.path.join(self.winrepo_dir, 'repo_sls')
- os.mkdir(self.winrepo_sls_dir)
- return {
- winrepo: {
- '__opts__': {
- 'winrepo_cachefile': 'winrepo.p',
- 'optimization_order': [0, 1, 2],
- 'renderer': 'yaml',
- 'renderer_blacklist': [],
- 'renderer_whitelist': [],
- 'file_roots': {'base': [self.winrepo_dir]},
- 'winrepo_dir': self.winrepo_dir,
- 'extension_modules': self.extmods_dir
- }
- }
- }
- def test_genrepo(self):
- '''
- Test winrepo.genrepo runner
- '''
- sls_file = os.path.join(self.winrepo_sls_dir, 'wireshark.sls')
- # Add a winrepo SLS file
- with salt.utils.files.fopen(sls_file, 'w') as fp_:
- fp_.write(salt.utils.stringutils.to_str(_WINREPO_SLS))
- self.assertEqual(winrepo.genrepo(), _WINREPO_GENREPO_DATA)
|