1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """
- unit tests for the git_pillar runner
- """
- import errno
- import logging
- import tempfile
- import salt.runners.git_pillar as git_pillar
- import salt.utils.files
- import salt.utils.gitfs
- from tests.support.gitfs import _OPTS
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import patch
- from tests.support.runtests import RUNTIME_VARS
- from tests.support.unit import TestCase
- log = logging.getLogger(__name__)
- class GitPillarTest(TestCase, LoaderModuleMockMixin):
- """
- Validate the git_pillar runner
- """
- @classmethod
- def setUpClass(cls):
- cls.tmp_cachedir = tempfile.mkdtemp(dir=RUNTIME_VARS.TMP)
- @classmethod
- def tearDownClass(cls):
- try:
- salt.utils.files.rm_rf(cls.tmp_cachedir)
- except OSError as exc:
- if exc.errno == errno.EACCES:
- log.error("Access error removing file %s", cls.tmp_cachedir)
- elif exc.errno != errno.EEXIST:
- raise
- def setup_loader_modules(self):
- opts = _OPTS.copy()
- opts["cachedir"] = self.tmp_cachedir
- opts["verified_git_pillar_provider"] = "gitfoo"
- opts["ext_pillar"] = [
- {
- "git": [
- "master https://someurl/some",
- {"dev https://otherurl/other": [{"name": "somename"}]},
- ]
- }
- ]
- return {git_pillar: {"__opts__": opts}}
- def test_update(self):
- """
- test git_pillar.update
- """
- class MockGitProvider(
- salt.utils.gitfs.GitProvider
- ): # pylint: disable=abstract-method
- def init_remote(self):
- new = False
- self.repo = True
- return new
- def fetch(self):
- return True
- def clear_lock(self, lock_type="update"):
- pass # return success, failed
- git_providers = {"gitfoo": MockGitProvider}
- repo1 = {"master https://someurl/some": True}
- repo2 = {"dev https://otherurl/other": True}
- all_repos = {
- "master https://someurl/some": True,
- "dev https://otherurl/other": True,
- }
- with patch.object(salt.utils.gitfs, "GIT_PROVIDERS", git_providers):
- self.assertEqual(git_pillar.update(), all_repos)
- self.assertEqual(git_pillar.update(branch="master"), repo1)
- self.assertEqual(git_pillar.update(branch="dev"), repo2)
- self.assertEqual(git_pillar.update(repo="somename"), repo2)
|