<s> '''<STR_LIT>''' <EOL> from __future__ import absolute_import <EOL> import os <EOL> import yaml <EOL> from salttesting import TestCase , skipIf <EOL> from salttesting . helpers import ensure_in_syspath <EOL> from salttesting . mock import NO_MOCK , NO_MOCK_REASON , MagicMock , patch <EOL> ensure_in_syspath ( '<STR_LIT>' ) <EOL> from salt . modules import grains as grainsmod <EOL> from salt . states import grains as grains <EOL> import integration <EOL> @ skipIf ( NO_MOCK , NO_MOCK_REASON ) <EOL> class GrainsTestCase ( TestCase ) : <EOL> def setUp ( self ) : <EOL> grains_test_dir = '<STR_LIT>' <EOL> grainsmod . __opts__ = grains . __opts__ = { <EOL> '<STR_LIT:test>' : False , <EOL> '<STR_LIT>' : os . path . join ( integration . TMP , grains_test_dir , '<STR_LIT>' ) , <EOL> '<STR_LIT>' : os . path . join ( integration . TMP , grains_test_dir ) , <EOL> '<STR_LIT>' : True , <EOL> } <EOL> grainsmod . __salt__ = grains . __salt__ = { <EOL> '<STR_LIT>' : MagicMock ( return_value = { <EOL> '<STR_LIT>' : <NUM_LIT:5> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } ) , <EOL> '<STR_LIT>' : grainsmod . get , <EOL> '<STR_LIT>' : grainsmod . set , <EOL> '<STR_LIT>' : grainsmod . setval , <EOL> '<STR_LIT>' : grainsmod . delval , <EOL> '<STR_LIT>' : grainsmod . append , <EOL> '<STR_LIT>' : grainsmod . remove , <EOL> '<STR_LIT>' : MagicMock ( ) <EOL> } <EOL> if not os . path . exists ( os . path . join ( integration . TMP , grains_test_dir ) ) : <EOL> os . mkdir ( os . path . join ( integration . TMP , grains_test_dir ) ) <EOL> def assertGrainFileContent ( self , grains_string ) : <EOL> if os . path . isdir ( grains . __opts__ [ '<STR_LIT>' ] ) : <EOL> grains_file = os . path . join ( <EOL> grains . __opts__ [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' ) <EOL> else : <EOL> grains_file = os . path . join ( <EOL> os . path . dirname ( grains . __opts__ [ '<STR_LIT>' ] ) , <EOL> '<STR_LIT>' ) <EOL> with open ( grains_file , "<STR_LIT:r>" ) as grf : <EOL> grains_data = grf . read ( ) <EOL> self . assertMultiLineEqual ( grains_string , grains_data ) <EOL> def setGrains ( self , grains_data ) : <EOL> grains . __grains__ = grainsmod . __grains__ = grains_data <EOL> if os . path . isdir ( grains . __opts__ [ '<STR_LIT>' ] ) : <EOL> grains_file = os . path . join ( <EOL> grains . __opts__ [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' ) <EOL> else : <EOL> grains_file = os . path . join ( <EOL> os . path . dirname ( grains . __opts__ [ '<STR_LIT>' ] ) , <EOL> '<STR_LIT>' ) <EOL> cstr = yaml . safe_dump ( grains_data , default_flow_style = False ) <EOL> with open ( grains_file , "<STR_LIT>" ) as grf : <EOL> grf . write ( cstr ) <EOL> def test_present_add ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT:bar>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT:bar>' : '<STR_LIT>' } } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT:bar>' : '<STR_LIT>' } } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_add_key_to_existing ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_already_set ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT:bar>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> def test_present_overwrite ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = None ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : None } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = None ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : None } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : None } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_fail_overwrite ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = None ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } ) <EOL> def test_present_fails_to_set_dict_or_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = [ '<STR_LIT>' , '<STR_LIT>' ] ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> delimiter = '<STR_LIT:U+002C>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> def test_present_fail_merge_dict ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_force_to_set_dict_or_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> force = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : [ '<STR_LIT>' , '<STR_LIT>' ] } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } , <EOL> force = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> delimiter = '<STR_LIT:U+002C>' , <EOL> force = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] } } } ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } , '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } , <EOL> force = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } , '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } , '<STR_LIT>' : '<STR_LIT>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_fails_to_convert_value_to_key ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> def test_present_overwrite_test ( self ) : <EOL> grains . __opts__ [ '<STR_LIT:test>' ] = True <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , None ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : { '<STR_LIT:foo>' : '<STR_LIT>' } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_present_convert_value_to_key ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT>' , <EOL> value = { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } , '<STR_LIT>' ] } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } } } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> @ patch ( '<STR_LIT>' ) <EOL> def test_present_unknown_failure ( self , mocked_setval ) : <EOL> mocked_setval . return_value = '<STR_LIT>' <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_absent_already ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT:foo>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> def test_absent_unset ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT:foo>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT:foo>' , '<STR_LIT:value>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : None } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : False } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT:foo>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT:foo>' , '<STR_LIT:value>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : None } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } , '<STR_LIT>' ] } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' , <EOL> delimiter = '<STR_LIT:U+002C>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:value>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : None } } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : '<STR_LIT>' } , '<STR_LIT>' ] } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : '<STR_LIT>' } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_absent_unset_test ( self ) : <EOL> grains . __opts__ [ '<STR_LIT:test>' ] = True <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . absent ( name = '<STR_LIT:foo>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , None ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT:foo>' , '<STR_LIT:value>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_absent_fails_nested_complex_grain ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } , '<STR_LIT>' ] } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_absent_force_nested_complex_grain ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' } } , '<STR_LIT>' ] } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' , <EOL> force = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:value>' : None } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : None } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_absent_delete ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> destructive = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT:foo>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : None } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> destructive = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT:foo>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:bar>' , '<STR_LIT>' : '<STR_LIT:value>' } } , '<STR_LIT>' ] } ) <EOL> ret = grains . absent ( <EOL> name = '<STR_LIT>' , <EOL> destructive = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' , { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT:value>' } } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_append ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_append_nested ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:list>' : [ '<STR_LIT:bar>' ] } } ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' , <EOL> delimiter = '<STR_LIT:U+002C>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:list>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_append_already ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' <EOL> + '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_append_fails_not_a_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:bar>' : '<STR_LIT>' } } ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:bar>' : '<STR_LIT>' } } ) <EOL> def test_append_convert_to_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:bar>' : '<STR_LIT>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' , <EOL> convert = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ { '<STR_LIT:bar>' : '<STR_LIT>' } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:bar>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT:value>' } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' , <EOL> convert = True ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : '<STR_LIT>' } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ { '<STR_LIT:bar>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT:value>' } , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_append_fails_inexistent ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . append ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> def test_list_present ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : { '<STR_LIT:foo>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_nested ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT:bar>' ] } } } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' , <EOL> delimiter = '<STR_LIT:U+002C>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT:bar>' , '<STR_LIT>' ] } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_inexistent ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : { '<STR_LIT:foo>' : [ '<STR_LIT>' ] } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_inexistent_nested ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : { '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT>' ] } } } } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT>' : { '<STR_LIT>' : [ '<STR_LIT>' ] } } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_not_a_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_nested_already ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:b>' : { '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:b>' : { '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_already ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_present_unknown_failure ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> grainsmod . __salt__ [ '<STR_LIT>' ] = MagicMock ( ) <EOL> ret = grains . list_present ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_absent ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_absent_nested ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:list>' : [ '<STR_LIT:bar>' ] } } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { '<STR_LIT>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : { '<STR_LIT:list>' : [ ] } } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_absent_inexistent ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> def test_list_absent_inexistent_nested ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" ) <EOL> def test_list_absent_not_a_list ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT:bar>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , False ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : '<STR_LIT:bar>' } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> def test_list_absent_already ( self ) : <EOL> self . setGrains ( { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> ret = grains . list_absent ( <EOL> name = '<STR_LIT:foo>' , <EOL> value = '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT:result>' ] , True ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , '<STR_LIT>' ) <EOL> self . assertEqual ( ret [ '<STR_LIT>' ] , { } ) <EOL> self . assertEqual ( <EOL> grains . __grains__ , <EOL> { '<STR_LIT:a>' : '<STR_LIT>' , '<STR_LIT:foo>' : [ '<STR_LIT:bar>' ] } ) <EOL> self . assertGrainFileContent ( "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> + "<STR_LIT>" <EOL> ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> from integration import run_tests <EOL> run_tests ( GrainsTestCase , needs_daemon = False ) </s>
