@ -23,6 +23,8 @@ import io
import inspect
from shutil import copyfile , move
import difflib
import tempfile
import shutil
class AnsibleFailJson ( Exception ) :
@ -169,25 +171,29 @@ class TestInterfacesFileModule(unittest.TestCase):
}
for testname , options_list in testcases . items ( ) :
for testfile in self . getTestFiles ( ) :
path = os . path . join ( fixture_path , testfile )
lines , ifaces = interfaces_file . read_interfaces_file ( module , path )
backupp = module . backup_local ( path )
options = options_list [ 0 ]
for state in [ ' present ' , ' absent ' ] :
fail_json_iterations = [ ]
options [ ' state ' ] = state
try :
_ , lines = interfaces_file . setInterfaceOption ( module , lines , options [ ' iface ' ] , options [ ' option ' ] , options [ ' value ' ] , options [ ' state ' ] )
except AnsibleFailJson as e :
fail_json_iterations . append ( " fail_json message: %s \n options: \n %s " %
( str ( e ) , json . dumps ( options , sort_keys = True , indent = 4 , separators = ( ' , ' , ' : ' ) ) ) )
interfaces_file . write_changes ( module , [ d [ ' line ' ] for d in lines if ' line ' in d ] , path )
self . compareStringWithFile ( " \n ===== \n " . join ( fail_json_iterations ) , " %s _ %s .exceptions.txt " % ( testfile , testname ) )
self . compareInterfacesLinesToFile ( lines , testfile , " %s _ %s " % ( testfile , testname ) )
self . compareInterfacesToFile ( ifaces , testfile , " %s _ %s .json " % ( testfile , testname ) )
self . compareFileToBackup ( path , backupp )
with tempfile . NamedTemporaryFile ( ) as temp_file :
src_path = os . path . join ( fixture_path , testfile )
path = temp_file . name
shutil . copy ( src_path , path )
lines , ifaces = interfaces_file . read_interfaces_file ( module , path )
backupp = module . backup_local ( path )
options = options_list [ 0 ]
for state in [ ' present ' , ' absent ' ] :
fail_json_iterations = [ ]
options [ ' state ' ] = state
try :
_ , lines = interfaces_file . setInterfaceOption ( module , lines ,
options [ ' iface ' ] , options [ ' option ' ] , options [ ' value ' ] , options [ ' state ' ] )
except AnsibleFailJson as e :
fail_json_iterations . append ( " fail_json message: %s \n options: \n %s " %
( str ( e ) , json . dumps ( options , sort_keys = True , indent = 4 , separators = ( ' , ' , ' : ' ) ) ) )
interfaces_file . write_changes ( module , [ d [ ' line ' ] for d in lines if ' line ' in d ] , path )
self . compareStringWithFile ( " \n ===== \n " . join ( fail_json_iterations ) , " %s _ %s .exceptions.txt " % ( testfile , testname ) )
self . compareInterfacesLinesToFile ( lines , testfile , " %s _ %s " % ( testfile , testname ) )
self . compareInterfacesToFile ( ifaces , testfile , " %s _ %s .json " % ( testfile , testname ) )
self . compareFileToBackup ( path , backupp )
def test_change_method ( self ) :
testcases = {
@ -202,21 +208,24 @@ class TestInterfacesFileModule(unittest.TestCase):
}
for testname , options_list in testcases . items ( ) :
for testfile in self . getTestFiles ( ) :
path = os . path . join ( fixture_path , testfile )
lines , ifaces = interfaces_file . read_interfaces_file ( module , path )
backupp = module . backup_local ( path )
options = options_list [ 0 ]
fail_json_iterations = [ ]
try :
_ , lines = interfaces_file . setInterfaceOption ( module , lines , options [ ' iface ' ] , options [ ' option ' ] , options [ ' value ' ] , options [ ' state ' ] )
except AnsibleFailJson as e :
fail_json_iterations . append ( " fail_json message: %s \n options: \n %s " %
( str ( e ) , json . dumps ( options , sort_keys = True , indent = 4 , separators = ( ' , ' , ' : ' ) ) ) )
interfaces_file . write_changes ( module , [ d [ ' line ' ] for d in lines if ' line ' in d ] , path )
with tempfile . NamedTemporaryFile ( ) as temp_file :
src_path = os . path . join ( fixture_path , testfile )
path = temp_file . name
shutil . copy ( src_path , path )
lines , ifaces = interfaces_file . read_interfaces_file ( module , path )
backupp = module . backup_local ( path )
options = options_list [ 0 ]
fail_json_iterations = [ ]
try :
_ , lines = interfaces_file . setInterfaceOption ( module , lines , options [ ' iface ' ] , options [ ' option ' ] , options [ ' value ' ] , options [ ' state ' ] )
except AnsibleFailJson as e :
fail_json_iterations . append ( " fail_json message: %s \n options: \n %s " %
( str ( e ) , json . dumps ( options , sort_keys = True , indent = 4 , separators = ( ' , ' , ' : ' ) ) ) )
interfaces_file . write_changes ( module , [ d [ ' line ' ] for d in lines if ' line ' in d ] , path )
self . compareStringWithFile ( " \n ===== \n " . join ( fail_json_iterations ) , " %s _ %s .exceptions.txt " % ( testfile , testname ) )
self . compareStringWithFile ( " \n ===== \n " . join ( fail_json_iterations ) , " %s _ %s .exceptions.txt " % ( testfile , testname ) )
self . compareInterfacesLinesToFile ( lines , testfile , " %s _ %s " % ( testfile , testname ) )
self . compareInterfacesToFile ( ifaces , testfile , " %s _ %s .json " % ( testfile , testname ) )
# Restore backup
move ( backupp , path )
self . compareInterfacesLinesToFile ( lines , testfile , " %s _ %s " % ( testfile , testname ) )
self . compareInterfacesToFile ( ifaces , testfile , " %s _ %s .json " % ( testfile , testname ) )
# Restore backup
move ( backupp , path )