123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # -*- coding: utf-8 -*-
- from __future__ import absolute_import
- import tarfile
- import tempfile
- import subprocess
- import sys
- import os
- from tests.support.unit import TestCase
- import salt.utils.files
- import salt.utils.thin
- try:
- import virtualenv
- HAS_VENV = True
- except ImportError:
- HAS_VENV = False
- class TestThinDir(TestCase):
- def setUp(self):
- self.tmpdir = tempfile.mkdtemp()
- def tearDown(self):
- salt.utils.files.rm_rf(self.tmpdir)
- def test_thin_dir(self):
- '''
- Test the thin dir to make sure salt-call can run
- Run salt call via a python in a new virtual environment to ensure
- salt-call has all dependencies needed.
- '''
- venv_dir = os.path.join(self.tmpdir, 'venv')
- virtualenv.create_environment(venv_dir)
- salt.utils.thin.gen_thin(self.tmpdir)
- thin_dir = os.path.join(self.tmpdir, 'thin')
- thin_archive = os.path.join(thin_dir, 'thin.tgz')
- tar = tarfile.open(thin_archive)
- tar.extractall(thin_dir)
- tar.close()
- bins = 'bin'
- if sys.platform == 'win32':
- bins = 'Scripts'
- cmd = [
- os.path.join(venv_dir, bins, 'python'),
- os.path.join(thin_dir, 'salt-call'),
- '--version',
- ]
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = proc.communicate()
- proc.wait()
- assert proc.returncode == 0, (stdout, stderr, proc.returncode)
|