Add stderr launchctl helper class and fix service mac tests

This commit is contained in:
Ch3LL 2018-05-21 14:23:58 -04:00
parent 21550dbd2d
commit e15e674955
No known key found for this signature in database
GPG key ID: 132B55A7C13EFA73
3 changed files with 22 additions and 2 deletions

View file

@ -119,6 +119,18 @@ def _run_all(cmd):
return ret
def _check_launchctl_stderr(ret):
'''
helper class to check the launchctl stderr.
launchctl does not always return bad exit code
if there is a failure
'''
err = ret['stderr'].lower()
if 'service is disabled' in err:
return True
return False
def execute_return_success(cmd):
'''
Executes the passed command. Returns True if successful
@ -274,9 +286,10 @@ def launchctl(sub_cmd, *args, **kwargs):
kwargs['python_shell'] = False
kwargs = salt.utils.args.clean_kwargs(**kwargs)
ret = __salt__['cmd.run_all'](cmd, **kwargs)
error = _check_launchctl_stderr(ret)
# Raise an error or return successful result
if ret['retcode']:
if ret['retcode'] or error:
out = 'Failed to {0} service:\n'.format(sub_cmd)
out += 'stdout: {0}\n'.format(ret['stdout'])
out += 'stderr: {0}\n'.format(ret['stderr'])

View file

@ -40,8 +40,10 @@ class MacServiceModuleTest(ModuleCase):
'''
if self.SERVICE_ENABLED:
self.run_function('service.start', [self.SERVICE_NAME])
self.run_function('service.enable', [self.SERVICE_NAME])
else:
self.run_function('service.stop', [self.SERVICE_NAME])
self.run_function('service.disable', [self.SERVICE_NAME])
def test_show(self):
'''

View file

@ -13,6 +13,7 @@ from tests.support.mixins import SaltReturnAssertsMixin
# Import salt libs
import salt.utils.path
import salt.utils.platform
INIT_DELAY = 5
@ -62,10 +63,14 @@ class ServiceTest(ModuleCase, SaltReturnAssertsMixin):
'''
test service.running state module
'''
stop_service = self.run_function('service.stop', self.service_name)
stop_service = self.run_function('service.stop', name=self.service_name)
self.assertTrue(stop_service)
self.check_service_status(self.stopped)
if salt.utils.platform.is_darwin():
# make sure the service is enabled on macosx
enable = self.run_function('service.enable', name=self.service_name)
start_service = self.run_state('service.running',
name=self.service_name)
self.assertTrue(start_service)