| Index: tests/patch_test.py
 | 
| diff --git a/tests/patch_test.py b/tests/patch_test.py
 | 
| index 034915754eb5bf33b37b4ba88c94ff8fd0d2464e..516fd06368aec09c39b00e0fd2a27231dcdff092 100755
 | 
| --- a/tests/patch_test.py
 | 
| +++ b/tests/patch_test.py
 | 
| @@ -133,68 +133,76 @@ NEW = (
 | 
|      '+bar\n')
 | 
|  
 | 
|  
 | 
| +DELETE = (
 | 
| +    '--- tools/clang_check/README.chromium\n'
 | 
| +    '+++ /dev/null\n'
 | 
| +    '@@ -1,1 +0,0 @@\n'
 | 
| +    '-bar\n')
 | 
| +
 | 
| +
 | 
|  class PatchTest(unittest.TestCase):
 | 
|    def testFilePatchDelete(self):
 | 
| -    c = patch.FilePatchDelete('foo', False)
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, True)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| +    p = patch.FilePatchDelete('foo', False)
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
|      try:
 | 
| -      c.get()
 | 
| +      p.get()
 | 
|        self.fail()
 | 
|      except NotImplementedError:
 | 
|        pass
 | 
| -    c = patch.FilePatchDelete('foo', True)
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, True)
 | 
| -    self.assertEquals(c.is_delete, True)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| +    p = patch.FilePatchDelete('foo', True)
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, True)
 | 
| +    self.assertEquals(p.is_delete, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
|      try:
 | 
| -      c.get()
 | 
| +      p.get()
 | 
|        self.fail()
 | 
|      except NotImplementedError:
 | 
|        pass
 | 
|  
 | 
|    def testFilePatchBinary(self):
 | 
| -    c = patch.FilePatchBinary('foo', 'data', [], is_new=False)
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, True)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| -    self.assertEquals(c.get(), 'data')
 | 
| +    p = patch.FilePatchBinary('foo', 'data', [], is_new=False)
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, True)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), 'data')
 | 
|  
 | 
|    def testFilePatchBinaryNew(self):
 | 
| -    c = patch.FilePatchBinary('foo', 'data', [], is_new=True)
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, True)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_new, True)
 | 
| -    self.assertEquals(c.get(), 'data')
 | 
| +    p = patch.FilePatchBinary('foo', 'data', [], is_new=True)
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, True)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.get(), 'data')
 | 
|  
 | 
|    def testFilePatchDiff(self):
 | 
| -    c = patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, [])
 | 
| -    self.assertEquals(c.filename, 'chrome/file.cc')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_git_diff, False)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| -    self.assertEquals(c.patchlevel, 0)
 | 
| -    self.assertEquals(c.get(), SVN_PATCH)
 | 
| +    p = patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, [])
 | 
| +    self.assertEquals(p.filename, 'chrome/file.cc')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_git_diff, False)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.patchlevel, 0)
 | 
| +    self.assertEquals(p.get(), SVN_PATCH)
 | 
|  
 | 
|    def testFilePatchDiffHeaderMode(self):
 | 
|      diff = (
 | 
|          'diff --git a/git_cl/git-cl b/git_cl/git-cl\n'
 | 
|          'old mode 100644\n'
 | 
|          'new mode 100755\n')
 | 
| -    c = patch.FilePatchDiff('git_cl/git-cl', diff, [])
 | 
| -    self.assertEquals(c.filename, 'git_cl/git-cl')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_git_diff, True)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| -    self.assertEquals(c.patchlevel, 1)
 | 
| -    self.assertEquals(c.get(), diff)
 | 
| +    p = patch.FilePatchDiff('git_cl/git-cl', diff, [])
 | 
| +    self.assertEquals(p.filename, 'git_cl/git-cl')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_git_diff, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.patchlevel, 1)
 | 
| +    self.assertEquals(p.get(), diff)
 | 
| +    self.assertEquals([('svn:executable', '*')], p.svn_properties)
 | 
|  
 | 
|    def testFilePatchDiffHeaderModeIndex(self):
 | 
|      diff = (
 | 
| @@ -202,36 +210,36 @@ class PatchTest(unittest.TestCase):
 | 
|          'diff --git a/git_cl/git-cl b/git_cl/git-cl\n'
 | 
|          'old mode 100644\n'
 | 
|          'new mode 100755\n')
 | 
| -    c = patch.FilePatchDiff('git_cl/git-cl', diff, [])
 | 
| -    self.assertEquals(c.filename, 'git_cl/git-cl')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_git_diff, True)
 | 
| -    self.assertEquals(c.is_new, False)
 | 
| -    self.assertEquals(c.patchlevel, 1)
 | 
| -    self.assertEquals(c.get(), diff)
 | 
| +    p = patch.FilePatchDiff('git_cl/git-cl', diff, [])
 | 
| +    self.assertEquals(p.filename, 'git_cl/git-cl')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_git_diff, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.patchlevel, 1)
 | 
| +    self.assertEquals(p.get(), diff)
 | 
|  
 | 
|    def testFilePatchDiffSvnNew(self):
 | 
|      # The code path is different for git and svn.
 | 
| -    c = patch.FilePatchDiff('foo', NEW, [])
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_git_diff, False)
 | 
| -    self.assertEquals(c.is_new, True)
 | 
| -    self.assertEquals(c.patchlevel, 0)
 | 
| -    self.assertEquals(c.get(), NEW)
 | 
| +    p = patch.FilePatchDiff('foo', NEW, [])
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_git_diff, False)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.patchlevel, 0)
 | 
| +    self.assertEquals(p.get(), NEW)
 | 
|  
 | 
|    def testFilePatchDiffGitNew(self):
 | 
|      # The code path is different for git and svn.
 | 
| -    c = patch.FilePatchDiff('foo', GIT_NEW, [])
 | 
| -    self.assertEquals(c.filename, 'foo')
 | 
| -    self.assertEquals(c.is_binary, False)
 | 
| -    self.assertEquals(c.is_delete, False)
 | 
| -    self.assertEquals(c.is_git_diff, True)
 | 
| -    self.assertEquals(c.is_new, True)
 | 
| -    self.assertEquals(c.patchlevel, 1)
 | 
| -    self.assertEquals(c.get(), GIT_NEW)
 | 
| +    p = patch.FilePatchDiff('foo', GIT_NEW, [])
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_git_diff, True)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.patchlevel, 1)
 | 
| +    self.assertEquals(p.get(), GIT_NEW)
 | 
|  
 | 
|    def testFilePatchDiffBad(self):
 | 
|      try:
 | 
| @@ -444,16 +452,62 @@ class PatchTest(unittest.TestCase):
 | 
|      self.assertEquals(expected, patches.filenames)
 | 
|      self.assertEquals(SVN_PATCH, patches.patches[0].get())
 | 
|  
 | 
| -  def testGitPatches(self):
 | 
| -    # Shouldn't throw.
 | 
| -    patch.FilePatchDiff('tools/clang_check/README.chromium', GIT_DELETE, [])
 | 
| -    patch.FilePatchDiff('tools/run_local_server.sh', GIT_RENAME, [])
 | 
| -    patch.FilePatchDiff(
 | 
| +  def testDelete(self):
 | 
| +    p = patch.FilePatchDiff('tools/clang_check/README.chromium', DELETE, [])
 | 
| +    self.assertEquals(p.filename, 'tools/clang_check/README.chromium')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), DELETE)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitDelete(self):
 | 
| +    p = patch.FilePatchDiff('tools/clang_check/README.chromium', GIT_DELETE, [])
 | 
| +    self.assertEquals(p.filename, 'tools/clang_check/README.chromium')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, True)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), GIT_DELETE)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitRename(self):
 | 
| +    p = patch.FilePatchDiff('tools/run_local_server.sh', GIT_RENAME, [])
 | 
| +    self.assertEquals(p.filename, 'tools/run_local_server.sh')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), GIT_RENAME)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitRenamePartial(self):
 | 
| +    p = patch.FilePatchDiff(
 | 
|          'chrome/browser/chromeos/views/webui_menu_widget.h',
 | 
|          GIT_RENAME_PARTIAL, [])
 | 
| -    patch.FilePatchDiff('pp', GIT_COPY, [])
 | 
| -    patch.FilePatchDiff('foo', GIT_NEW, [])
 | 
| -    self.assertTrue(True)
 | 
| +    self.assertEquals(
 | 
| +        p.filename, 'chrome/browser/chromeos/views/webui_menu_widget.h')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), GIT_RENAME_PARTIAL)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitCopy(self):
 | 
| +    p = patch.FilePatchDiff('pp', GIT_COPY, [])
 | 
| +    self.assertEquals(p.filename, 'pp')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), GIT_COPY)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitNew(self):
 | 
| +    p = patch.FilePatchDiff('foo', GIT_NEW, [])
 | 
| +    self.assertEquals(p.filename, 'foo')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.get(), GIT_NEW)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
|  
 | 
|    def testOnlyHeader(self):
 | 
|      p = patch.FilePatchDiff('file_a', '--- file_a\n+++ file_a\n', [])
 | 
| @@ -481,9 +535,15 @@ class PatchTest(unittest.TestCase):
 | 
|  
 | 
|    def testRenameOnlyHeader(self):
 | 
|      p = patch.FilePatchDiff('file_b', '--- file_a\n+++ file_b\n', [])
 | 
| -    self.assertTrue(p)
 | 
| -
 | 
| -  def testGitCopy(self):
 | 
| +    self.assertEquals(p.filename, 'file_b')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    # Should it be marked as new?
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), '--- file_a\n+++ file_b\n')
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
| +
 | 
| +  def testGitCopyPartial(self):
 | 
|      diff = (
 | 
|          'diff --git a/wtf b/wtf2\n'
 | 
|          'similarity index 98%\n'
 | 
| @@ -499,7 +559,13 @@ class PatchTest(unittest.TestCase):
 | 
|          ' # blah blah blah as\n'
 | 
|          ' # found in the LICENSE file.\n')
 | 
|      p = patch.FilePatchDiff('wtf2', diff, [])
 | 
| -    self.assertTrue(p)
 | 
| +    self.assertEquals(p.filename, 'wtf2')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    # Should it be marked as new?
 | 
| +    self.assertEquals(p.is_new, False)
 | 
| +    self.assertEquals(p.get(), diff)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
|  
 | 
|    def testGitExe(self):
 | 
|      diff = (
 | 
| @@ -509,9 +575,15 @@ class PatchTest(unittest.TestCase):
 | 
|          '+++ b/natsort_test.py\n'
 | 
|          '@@ -0,0 +1,1 @@\n'
 | 
|          '+#!/usr/bin/env python\n')
 | 
| -    self.assertEquals(
 | 
| -        [('svn:executable', '*')],
 | 
| -        patch.FilePatchDiff('natsort_test.py', diff, []).svn_properties)
 | 
| +    p = patch.FilePatchDiff('natsort_test.py', diff, [])
 | 
| +    self.assertEquals(p.filename, 'natsort_test.py')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.get(), diff)
 | 
| +    self.assertEquals([('svn:executable', '*')], p.svn_properties)
 | 
| +
 | 
| +  def testGitExe2(self):
 | 
|      diff = (
 | 
|          'diff --git a/natsort_test.py b/natsort_test.py\n'
 | 
|          'new file mode 100644\n'
 | 
| @@ -519,8 +591,13 @@ class PatchTest(unittest.TestCase):
 | 
|          '+++ b/natsort_test.py\n'
 | 
|          '@@ -0,0 +1,1 @@\n'
 | 
|          '+#!/usr/bin/env python\n')
 | 
| -    self.assertEquals(
 | 
| -        [], patch.FilePatchDiff('natsort_test.py', diff, []).svn_properties)
 | 
| +    p = patch.FilePatchDiff('natsort_test.py', diff, [])
 | 
| +    self.assertEquals(p.filename, 'natsort_test.py')
 | 
| +    self.assertEquals(p.is_binary, False)
 | 
| +    self.assertEquals(p.is_delete, False)
 | 
| +    self.assertEquals(p.is_new, True)
 | 
| +    self.assertEquals(p.get(), diff)
 | 
| +    self.assertEquals([], p.svn_properties)
 | 
|  
 | 
|  
 | 
|  if __name__ == '__main__':
 | 
| 
 |