@ -23,25 +23,31 @@ class PresubmitDiffTest(unittest.TestCase):
# State of the local directory.
self . root = tempfile . mkdtemp ( )
os . makedirs ( os . path . join ( self . root , " nested " ) )
with open ( os . path . join ( self . root , " unchanged.txt " ) , " w " ) as f :
f . write ( " unchanged \n " )
with open ( os . path . join ( self . root , " added.txt " ) , " w " ) as f :
f . write ( " added \n " )
with open ( os . path . join ( self . root , " modified.txt " ) , " w " ) as f :
f . write ( " modified... foo \n " )
with open ( os . path . join ( self . root , " nested/modified.txt " ) , " w " ) as f :
f . write ( " goodbye \n " )
# On Windows, writing "\n" in text mode becomes "\r\n". Write in binary
# so that doesn't happen, otherwise tests will fail.
with open ( os . path . join ( self . root , " unchanged.txt " ) , " wb " ) as f :
f . write ( " unchanged \n " . encode ( " utf-8 " ) )
with open ( os . path . join ( self . root , " added.txt " ) , " wb " ) as f :
f . write ( " added \n " . encode ( " utf-8 " ) )
with open ( os . path . join ( self . root , " modified.txt " ) , " wb " ) as f :
f . write ( " modified... foo \n " . encode ( " utf-8 " ) )
with open ( os . path . join ( self . root , " nested/modified.txt " ) , " wb " ) as f :
f . write ( " goodbye \n " . encode ( " utf-8 " ) )
# State of the remote repository.
fetch_data = {
" unchanged.txt " : " unchanged \n " ,
" deleted.txt " : " deleted \n " ,
" modified.txt " : " modified... bar \n " ,
" nested/modified.txt " : " hello \n " ,
" unchanged.txt " : " unchanged \n " . encode ( " utf-8 " ) ,
" deleted.txt " : " deleted \n " . encode ( " utf-8 " ) ,
" modified.txt " : " modified... bar \n " . encode ( " utf-8 " ) ,
" nested/modified.txt " : " hello \n " . encode ( " utf-8 " ) ,
# Intenionally invalid start byte for utf-8.
" deleted_binary " : b " \xff \x00 " ,
}
def fetch_side_effect ( host , repo , ref , file ) :
return fetch_data . get ( file , " " )
return fetch_data . get ( file , b " " )
fetch_content_mock = mock . patch ( " presubmit_diff.fetch_content " ,
side_effect = fetch_side_effect )
@ -111,6 +117,17 @@ index 71779d2c..00000000
{ " deleted.txt " : expected_diff } ,
)
def test_create_diffs_with_binary_file ( self ) :
expected_diff = """ diff --git a/deleted_binary b/deleted_binary
deleted file mode 100644
index ce542efaa . .00000000
Binary files a / deleted_binary and / dev / null differ
"""
self . _test_create_diffs (
[ " deleted_binary " ] ,
{ " deleted_binary " : expected_diff } ,
)
# pylint: disable=line-too-long
def test_create_diffs_with_modified_files ( self ) :