@ -40,7 +40,10 @@ class PatchTest(unittest.TestCase):
if hasattr ( p , ' patchlevel ' ) :
self . assertEquals ( p . patchlevel , patchlevel )
if diff :
self . assertEquals ( p . get ( ) , diff )
if is_binary :
self . assertEquals ( p . get ( ) , diff )
else :
self . assertEquals ( p . get ( True ) , diff )
if hasattr ( p , ' svn_properties ' ) :
self . assertEquals ( p . svn_properties , svn_properties )
@ -97,19 +100,29 @@ class PatchTest(unittest.TestCase):
hunks = ' ' . join ( lines [ 4 : ] )
self . assertEquals ( header , p . diff_header )
self . assertEquals ( hunks , p . diff_hunks )
self . assertEquals ( RAW . PATCH , p . get ( ) )
self . assertEquals ( RAW . PATCH , p . get ( True ) )
self . assertEquals ( RAW . PATCH , p . get ( False ) )
def testValidSvnNew ( self ) :
p = patch . FilePatchDiff ( ' chrome/file.cc ' , RAW . MINIMAL_NEW , [ ] )
self . assertEquals ( RAW . MINIMAL_NEW , p . diff_header )
self . assertEquals ( ' ' , p . diff_hunks )
self . assertEquals ( RAW . MINIMAL_NEW , p . get ( ) )
self . assertEquals ( RAW . MINIMAL_NEW , p . get ( True ) )
self . assertEquals ( RAW . MINIMAL_NEW , p . get ( False ) )
def testValidSvnDelete ( self ) :
p = patch . FilePatchDiff ( ' chrome/file.cc ' , RAW . MINIMAL_DELETE , [ ] )
self . assertEquals ( RAW . MINIMAL_DELETE , p . diff_header )
self . assertEquals ( ' ' , p . diff_hunks )
self . assertEquals ( RAW . MINIMAL_DELETE , p . get ( ) )
self . assertEquals ( RAW . MINIMAL_DELETE , p . get ( True ) )
self . assertEquals ( RAW . MINIMAL_DELETE , p . get ( False ) )
def testValidSvnRename ( self ) :
p = patch . FilePatchDiff ( ' file_b ' , RAW . MINIMAL_RENAME , [ ] )
self . assertEquals ( RAW . MINIMAL_RENAME , p . diff_header )
self . assertEquals ( ' ' , p . diff_hunks )
self . assertEquals ( RAW . MINIMAL_RENAME , p . get ( True ) )
self . assertEquals ( ' --- file_b \n +++ file_b \n ' , p . get ( False ) )
def testRelPath ( self ) :
patches = patch . PatchSet ( [
@ -176,7 +189,8 @@ class PatchTest(unittest.TestCase):
] )
expected = [ ' chrome/file.cc ' , ' other/place/foo ' ]
self . assertEquals ( expected , patches . filenames )
self . assertEquals ( RAW . PATCH , patches . patches [ 0 ] . get ( ) )
self . assertEquals ( RAW . PATCH , patches . patches [ 0 ] . get ( True ) )
self . assertEquals ( RAW . PATCH , patches . patches [ 0 ] . get ( False ) )
def testDelete ( self ) :
p = patch . FilePatchDiff ( ' tools/clang_check/README.chromium ' , RAW . DELETE , [ ] )
@ -227,6 +241,25 @@ class PatchTest(unittest.TestCase):
p , ' wtf2 ' , GIT . COPY_PARTIAL , source_filename = ' wtf ' , is_git_diff = True ,
patchlevel = 1 , is_new = True )
def testGitCopyPartialAsSvn ( self ) :
p = patch . FilePatchDiff ( ' wtf2 ' , GIT . COPY_PARTIAL , [ ] )
# TODO(maruel): Improve processing.
diff = (
' diff --git a/wtf2 b/wtf22 \n '
' similarity index 98 % \n '
' copy from wtf2 \n '
' copy to wtf22 \n '
' index 79fbaf3..3560689 100755 \n '
' --- a/wtf2 \n '
' +++ b/wtf22 \n '
' @@ -1,4 +1,4 @@ \n '
' -#!/usr/bin/env python \n '
' +#!/usr/bin/env python1.3 \n '
' # Copyright (c) 2010 The Chromium Authors. All rights reserved. \n '
' # blah blah blah as \n '
' # found in the LICENSE file. \n ' )
self . assertEquals ( diff , p . get ( False ) )
def testGitNewExe ( self ) :
p = patch . FilePatchDiff ( ' natsort_test.py ' , GIT . NEW_EXE , [ ] )
self . _check_patch (
@ -239,24 +272,42 @@ class PatchTest(unittest.TestCase):
p , ' natsort_test.py ' , GIT . NEW_MODE , is_new = True , is_git_diff = True ,
patchlevel = 1 )
def testPatchsetOrder ( self ) :
# Deletes must be last.
# File renames/move/copy must be first.
patches = [
patch . FilePatchDiff ( ' chrome/file.cc ' , RAW . PATCH , [ ] ) ,
patch . FilePatchDiff (
' tools \\ clang_check/README.chromium ' , GIT . DELETE , [ ] ) ,
patch . FilePatchDiff ( ' tools/run_local_server.sh ' , GIT . RENAME , [ ] ) ,
patch . FilePatchDiff (
' chromeos \\ views/webui_menu_widget.h ' , GIT . RENAME_PARTIAL , [ ] ) ,
patch . FilePatchDiff ( ' pp ' , GIT . COPY , [ ] ) ,
patch . FilePatchDiff ( ' foo ' , GIT . NEW , [ ] ) ,
patch . FilePatchDelete ( ' other/place/foo ' , True ) ,
patch . FilePatchBinary ( ' bar ' , ' data ' , [ ] , is_new = False ) ,
]
expected = [
' pp ' ,
' chromeos/views/webui_menu_widget.h ' ,
' tools/run_local_server.sh ' ,
' bar ' ,
' chrome/file.cc ' ,
' foo ' ,
' other/place/foo ' ,
' tools/clang_check/README.chromium ' ,
]
patchset = patch . PatchSet ( patches )
self . assertEquals ( expected , patchset . filenames )
class PatchTestFail ( unittest . TestCase ) :
# All patches that should throw.
def testFilePatchDelete ( self ) :
p = patch . FilePatchDelete ( ' foo ' , False )
try :
p . get ( )
self . fail ( )
except NotImplementedError :
pass
self . assertFalse ( hasattr ( patch . FilePatchDelete ( ' foo ' , False ) , ' get ' ) )
def testFilePatchDeleteBin ( self ) :
p = patch . FilePatchDelete ( ' foo ' , True )
try :
p . get ( )
self . fail ( )
except NotImplementedError :
pass
self . assertFalse ( hasattr ( patch . FilePatchDelete ( ' foo ' , True ) , ' get ' ) )
def testFilePatchDiffBad ( self ) :
try :