mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Fix up environ state tests for Windows
This commit is contained in:
parent
b4be10b8fc
commit
009a8f56ea
2 changed files with 30 additions and 10 deletions
|
@ -20,6 +20,14 @@ def __virtual__():
|
|||
return True
|
||||
|
||||
|
||||
def _norm_key(key):
|
||||
'''
|
||||
Normalize windows environment keys
|
||||
'''
|
||||
if utils.is_windows():
|
||||
return key.upper()
|
||||
return key
|
||||
|
||||
def setenv(name,
|
||||
value,
|
||||
false_unsets=False,
|
||||
|
@ -124,12 +132,11 @@ def setenv(name,
|
|||
permanent_hive = 'HKLM'
|
||||
permanent_key = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
|
||||
|
||||
out = __salt__['reg.read_value'](permanent_hive, permanent_key, key)
|
||||
out = __salt__['reg.read_value'](permanent_hive, permanent_key, _norm_key(key))
|
||||
return out['success'] is True
|
||||
else:
|
||||
return False
|
||||
|
||||
if current_environ.get(key, None) is None and not key_exists():
|
||||
if current_environ.get(_norm_key(key), None) is None and not key_exists():
|
||||
# The key does not exist in environment
|
||||
if false_unsets is not True:
|
||||
# This key will be added with value ''
|
||||
|
@ -138,13 +145,13 @@ def setenv(name,
|
|||
# The key exists.
|
||||
if false_unsets is not True:
|
||||
# Check to see if the value will change
|
||||
if current_environ.get(key, None) != '':
|
||||
if current_environ.get(_norm_key(key), None) != '':
|
||||
# This key value will change to ''
|
||||
ret['changes'].update({key: ''})
|
||||
else:
|
||||
# We're going to delete the key
|
||||
ret['changes'].update({key: None})
|
||||
elif current_environ.get(key, '') == val:
|
||||
elif current_environ.get(_norm_key(key), '') == val:
|
||||
already_set.append(key)
|
||||
else:
|
||||
ret['changes'].update({key: val})
|
||||
|
|
|
@ -14,6 +14,7 @@ from tests.support.mock import (
|
|||
# Import salt libs
|
||||
import salt.states.environ as envstate
|
||||
import salt.modules.environ as envmodule
|
||||
import salt.utils as utils
|
||||
|
||||
|
||||
class TestEnvironState(TestCase, LoaderModuleMockMixin):
|
||||
|
@ -27,7 +28,7 @@ class TestEnvironState(TestCase, LoaderModuleMockMixin):
|
|||
return {envstate: loader_globals, envmodule: loader_globals}
|
||||
|
||||
def setUp(self):
|
||||
patcher = patch.dict(os.environ, {'INITIAL': 'initial'})
|
||||
patcher = patch.dict(os.environ, {'INITIAL': 'initial'}, clear=True)
|
||||
patcher.start()
|
||||
def reset_environ(patcher):
|
||||
patcher.stop()
|
||||
|
@ -81,14 +82,20 @@ class TestEnvironState(TestCase, LoaderModuleMockMixin):
|
|||
'''test that ``clear_all`` option sets other values to '' '''
|
||||
ret = envstate.setenv('test', 'value', clear_all=True)
|
||||
self.assertEqual(ret['changes'], {'test': 'value', 'INITIAL': ''})
|
||||
self.assertEqual(envstate.os.environ, {'test': 'value', 'INITIAL': ''})
|
||||
if utils.is_windows():
|
||||
self.assertEqual(envstate.os.environ, {'TEST': 'value', 'INITIAL': ''})
|
||||
else:
|
||||
self.assertEqual(envstate.os.environ, {'test': 'value', 'INITIAL': ''})
|
||||
|
||||
def test_setenv_clearall_with_unset(self):
|
||||
'''test that ``clear_all`` option combined with ``false_unsets``
|
||||
unsets other values from environment'''
|
||||
ret = envstate.setenv('test', 'value', false_unsets=True, clear_all=True)
|
||||
self.assertEqual(ret['changes'], {'test': 'value', 'INITIAL': None})
|
||||
self.assertEqual(envstate.os.environ, {'test': 'value'})
|
||||
if utils.is_windows():
|
||||
self.assertEqual(envstate.os.environ, {'TEST': 'value'})
|
||||
else:
|
||||
self.assertEqual(envstate.os.environ, {'test': 'value'})
|
||||
|
||||
def test_setenv_unset_multi(self):
|
||||
'''test basically same things that above tests but with multiple values passed'''
|
||||
|
@ -99,12 +106,18 @@ class TestEnvironState(TestCase, LoaderModuleMockMixin):
|
|||
ret = envstate.setenv(
|
||||
'notimportant', {'test': False, 'foo': 'baz'}, false_unsets=True)
|
||||
self.assertEqual(ret['changes'], {'test': None, 'foo': 'baz'})
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'foo': 'baz'})
|
||||
if utils.is_windows():
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'FOO': 'baz'})
|
||||
else:
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'foo': 'baz'})
|
||||
|
||||
with patch.dict(envstate.__salt__, {'reg.read_value': MagicMock()}):
|
||||
ret = envstate.setenv('notimportant', {'test': False, 'foo': 'bax'})
|
||||
self.assertEqual(ret['changes'], {'test': '', 'foo': 'bax'})
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'foo': 'bax', 'test': ''})
|
||||
if utils.is_windows():
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'FOO': 'bax', 'TEST': ''})
|
||||
else:
|
||||
self.assertEqual(envstate.os.environ, {'INITIAL': 'initial', 'foo': 'bax', 'test': ''})
|
||||
|
||||
def test_setenv_test_mode(self):
|
||||
'''test that imitating action returns good values'''
|
||||
|
|
Loading…
Add table
Reference in a new issue