1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # -*- coding: utf-8 -*-
- '''
- integration tests for mac_pkgutil
- '''
- # Import Python libs
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- # Import Salt Testing libs
- from tests.support.runtests import RUNTIME_VARS
- from tests.support.case import ModuleCase
- import pytest
- # Import Salt libs
- import salt.utils.path
- import salt.utils.platform
- TEST_PKG_URL = 'https://distfiles.macports.org/MacPorts/MacPorts-2.3.4-10.11-ElCapitan.pkg'
- TEST_PKG_NAME = 'org.macports.MacPorts'
- @pytest.mark.skip_if_not_root
- class MacPkgutilModuleTest(ModuleCase):
- '''
- Validate the mac_pkgutil module
- '''
- @classmethod
- def setUpClass(cls):
- cls.test_pkg = os.path.join(RUNTIME_VARS.TMP, 'MacPorts-2.3.4-10.11-ElCapitan.pkg')
- def setUp(self):
- '''
- Get current settings
- '''
- if not salt.utils.platform.is_darwin():
- self.skipTest('Test only available on macOS')
- if not salt.utils.path.which('pkgutil'):
- self.skipTest('Test requires pkgutil binary')
- os_release = self.run_function('grains.get', ['osrelease'])
- self.pkg_name = 'com.apple.pkg.BaseSystemResources'
- if int(os_release.split('.')[1]) >= 13 and salt.utils.platform.is_darwin():
- self.pkg_name = 'com.apple.pkg.iTunesX'
- def tearDown(self):
- '''
- Reset to original settings
- '''
- self.run_function('pkgutil.forget', [TEST_PKG_NAME])
- self.run_function('file.remove', ['/opt/local'])
- def test_list(self):
- '''
- Test pkgutil.list
- '''
- self.assertIsInstance(self.run_function('pkgutil.list'), list)
- self.assertIn(self.pkg_name,
- self.run_function('pkgutil.list'))
- def test_is_installed(self):
- '''
- Test pkgutil.is_installed
- '''
- # Test Package is installed
- self.assertTrue(
- self.run_function('pkgutil.is_installed',
- [self.pkg_name]))
- # Test Package is not installed
- self.assertFalse(
- self.run_function('pkgutil.is_installed', ['spongebob']))
- @pytest.mark.destructive_test
- def test_install_forget(self):
- '''
- Test pkgutil.install
- Test pkgutil.forget
- '''
- # Test if installed
- self.assertFalse(
- self.run_function('pkgutil.is_installed', [TEST_PKG_NAME]))
- # Download the package
- self.run_function('cp.get_url', [TEST_PKG_URL, self.test_pkg])
- # Test install
- self.assertTrue(
- self.run_function('pkgutil.install', [self.test_pkg, TEST_PKG_NAME]))
- self.assertIn(
- 'Unsupported scheme',
- self.run_function('pkgutil.install', ['ftp://test', 'spongebob']))
- # Test forget
- self.assertTrue(self.run_function('pkgutil.forget', [TEST_PKG_NAME]))
|