| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Unit tests for patch.py.""" | 6 """Unit tests for patch.py.""" |
| 7 | 7 |
| 8 import logging | 8 import logging |
| 9 import os | 9 import os |
| 10 import sys | 10 import sys |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 134 |
| 135 | 135 |
| 136 DELETE = ( | 136 DELETE = ( |
| 137 '--- tools/clang_check/README.chromium\n' | 137 '--- tools/clang_check/README.chromium\n' |
| 138 '+++ /dev/null\n' | 138 '+++ /dev/null\n' |
| 139 '@@ -1,1 +0,0 @@\n' | 139 '@@ -1,1 +0,0 @@\n' |
| 140 '-bar\n') | 140 '-bar\n') |
| 141 | 141 |
| 142 | 142 |
| 143 class PatchTest(unittest.TestCase): | 143 class PatchTest(unittest.TestCase): |
| 144 def _check_patch(self, |
| 145 p, |
| 146 filename, |
| 147 diff, |
| 148 is_binary=False, |
| 149 is_delete=False, |
| 150 is_git_diff=False, |
| 151 is_new=False, |
| 152 patchlevel=0, |
| 153 svn_properties=None): |
| 154 svn_properties = svn_properties or [] |
| 155 self.assertEquals(p.filename, filename) |
| 156 self.assertEquals(p.is_binary, is_binary) |
| 157 self.assertEquals(p.is_delete, is_delete) |
| 158 if hasattr(p, 'is_git_diff'): |
| 159 self.assertEquals(p.is_git_diff, is_git_diff) |
| 160 self.assertEquals(p.is_new, is_new) |
| 161 if hasattr(p, 'patchlevel'): |
| 162 self.assertEquals(p.patchlevel, patchlevel) |
| 163 if diff: |
| 164 self.assertEquals(p.get(), diff) |
| 165 if hasattr(p, 'svn_properties'): |
| 166 self.assertEquals(p.svn_properties, svn_properties) |
| 167 |
| 144 def testFilePatchDelete(self): | 168 def testFilePatchDelete(self): |
| 145 p = patch.FilePatchDelete('foo', False) | 169 p = patch.FilePatchDelete('foo', False) |
| 146 self.assertEquals(p.filename, 'foo') | 170 self._check_patch(p, 'foo', None, is_delete=True) |
| 147 self.assertEquals(p.is_binary, False) | |
| 148 self.assertEquals(p.is_delete, True) | |
| 149 self.assertEquals(p.is_new, False) | |
| 150 try: | 171 try: |
| 151 p.get() | 172 p.get() |
| 152 self.fail() | 173 self.fail() |
| 153 except NotImplementedError: | 174 except NotImplementedError: |
| 154 pass | 175 pass |
| 176 |
| 177 def testFilePatchDeleteBin(self): |
| 155 p = patch.FilePatchDelete('foo', True) | 178 p = patch.FilePatchDelete('foo', True) |
| 156 self.assertEquals(p.filename, 'foo') | 179 self._check_patch(p, 'foo', None, is_delete=True, is_binary=True) |
| 157 self.assertEquals(p.is_binary, True) | |
| 158 self.assertEquals(p.is_delete, True) | |
| 159 self.assertEquals(p.is_new, False) | |
| 160 try: | 180 try: |
| 161 p.get() | 181 p.get() |
| 162 self.fail() | 182 self.fail() |
| 163 except NotImplementedError: | 183 except NotImplementedError: |
| 164 pass | 184 pass |
| 165 | 185 |
| 166 def testFilePatchBinary(self): | 186 def testFilePatchBinary(self): |
| 167 p = patch.FilePatchBinary('foo', 'data', [], is_new=False) | 187 p = patch.FilePatchBinary('foo', 'data', [], is_new=False) |
| 168 self.assertEquals(p.filename, 'foo') | 188 self._check_patch(p, 'foo', 'data', is_binary=True) |
| 169 self.assertEquals(p.is_binary, True) | |
| 170 self.assertEquals(p.is_delete, False) | |
| 171 self.assertEquals(p.is_new, False) | |
| 172 self.assertEquals(p.get(), 'data') | |
| 173 | 189 |
| 174 def testFilePatchBinaryNew(self): | 190 def testFilePatchBinaryNew(self): |
| 175 p = patch.FilePatchBinary('foo', 'data', [], is_new=True) | 191 p = patch.FilePatchBinary('foo', 'data', [], is_new=True) |
| 176 self.assertEquals(p.filename, 'foo') | 192 self._check_patch(p, 'foo', 'data', is_binary=True, is_new=True) |
| 177 self.assertEquals(p.is_binary, True) | |
| 178 self.assertEquals(p.is_delete, False) | |
| 179 self.assertEquals(p.is_new, True) | |
| 180 self.assertEquals(p.get(), 'data') | |
| 181 | 193 |
| 182 def testFilePatchDiff(self): | 194 def testFilePatchDiff(self): |
| 183 p = patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, []) | 195 p = patch.FilePatchDiff('chrome/file.cc', SVN_PATCH, []) |
| 184 self.assertEquals(p.filename, 'chrome/file.cc') | 196 self._check_patch(p, 'chrome/file.cc', SVN_PATCH) |
| 185 self.assertEquals(p.is_binary, False) | |
| 186 self.assertEquals(p.is_delete, False) | |
| 187 self.assertEquals(p.is_git_diff, False) | |
| 188 self.assertEquals(p.is_new, False) | |
| 189 self.assertEquals(p.patchlevel, 0) | |
| 190 self.assertEquals(p.get(), SVN_PATCH) | |
| 191 | 197 |
| 192 def testFilePatchDiffHeaderMode(self): | 198 def testFilePatchDiffHeaderMode(self): |
| 193 diff = ( | 199 diff = ( |
| 194 'diff --git a/git_cl/git-cl b/git_cl/git-cl\n' | 200 'diff --git a/git_cl/git-cl b/git_cl/git-cl\n' |
| 195 'old mode 100644\n' | 201 'old mode 100644\n' |
| 196 'new mode 100755\n') | 202 'new mode 100755\n') |
| 197 p = patch.FilePatchDiff('git_cl/git-cl', diff, []) | 203 p = patch.FilePatchDiff('git_cl/git-cl', diff, []) |
| 198 self.assertEquals(p.filename, 'git_cl/git-cl') | 204 self._check_patch( |
| 199 self.assertEquals(p.is_binary, False) | 205 p, 'git_cl/git-cl', diff, is_git_diff=True, patchlevel=1, |
| 200 self.assertEquals(p.is_delete, False) | 206 svn_properties=[('svn:executable', '*')]) |
| 201 self.assertEquals(p.is_git_diff, True) | |
| 202 self.assertEquals(p.is_new, False) | |
| 203 self.assertEquals(p.patchlevel, 1) | |
| 204 self.assertEquals(p.get(), diff) | |
| 205 self.assertEquals([('svn:executable', '*')], p.svn_properties) | |
| 206 | 207 |
| 207 def testFilePatchDiffHeaderModeIndex(self): | 208 def testFilePatchDiffHeaderModeIndex(self): |
| 208 diff = ( | 209 diff = ( |
| 209 'Index: Junk\n' | 210 'Index: Junk\n' |
| 210 'diff --git a/git_cl/git-cl b/git_cl/git-cl\n' | 211 'diff --git a/git_cl/git-cl b/git_cl/git-cl\n' |
| 211 'old mode 100644\n' | 212 'old mode 100644\n' |
| 212 'new mode 100755\n') | 213 'new mode 100755\n') |
| 213 p = patch.FilePatchDiff('git_cl/git-cl', diff, []) | 214 p = patch.FilePatchDiff('git_cl/git-cl', diff, []) |
| 214 self.assertEquals(p.filename, 'git_cl/git-cl') | 215 self._check_patch( |
| 215 self.assertEquals(p.is_binary, False) | 216 p, 'git_cl/git-cl', diff, is_git_diff=True, patchlevel=1, |
| 216 self.assertEquals(p.is_delete, False) | 217 svn_properties=[('svn:executable', '*')]) |
| 217 self.assertEquals(p.is_git_diff, True) | |
| 218 self.assertEquals(p.is_new, False) | |
| 219 self.assertEquals(p.patchlevel, 1) | |
| 220 self.assertEquals(p.get(), diff) | |
| 221 | 218 |
| 222 def testFilePatchDiffSvnNew(self): | 219 def testFilePatchDiffSvnNew(self): |
| 223 # The code path is different for git and svn. | 220 # The code path is different for git and svn. |
| 224 p = patch.FilePatchDiff('foo', NEW, []) | 221 p = patch.FilePatchDiff('foo', NEW, []) |
| 225 self.assertEquals(p.filename, 'foo') | 222 self._check_patch(p, 'foo', NEW, is_new=True) |
| 226 self.assertEquals(p.is_binary, False) | |
| 227 self.assertEquals(p.is_delete, False) | |
| 228 self.assertEquals(p.is_git_diff, False) | |
| 229 self.assertEquals(p.is_new, True) | |
| 230 self.assertEquals(p.patchlevel, 0) | |
| 231 self.assertEquals(p.get(), NEW) | |
| 232 | 223 |
| 233 def testFilePatchDiffGitNew(self): | 224 def testFilePatchDiffGitNew(self): |
| 234 # The code path is different for git and svn. | 225 # The code path is different for git and svn. |
| 235 p = patch.FilePatchDiff('foo', GIT_NEW, []) | 226 p = patch.FilePatchDiff('foo', GIT_NEW, []) |
| 236 self.assertEquals(p.filename, 'foo') | 227 self._check_patch( |
| 237 self.assertEquals(p.is_binary, False) | 228 p, 'foo', GIT_NEW, is_new=True, is_git_diff=True, patchlevel=1) |
| 238 self.assertEquals(p.is_delete, False) | |
| 239 self.assertEquals(p.is_git_diff, True) | |
| 240 self.assertEquals(p.is_new, True) | |
| 241 self.assertEquals(p.patchlevel, 1) | |
| 242 self.assertEquals(p.get(), GIT_NEW) | |
| 243 | 229 |
| 244 def testFilePatchDiffBad(self): | 230 def testFilePatchDiffBad(self): |
| 245 try: | 231 try: |
| 246 patch.FilePatchDiff('foo', 'data', []) | 232 patch.FilePatchDiff('foo', 'data', []) |
| 247 self.fail() | 233 self.fail() |
| 248 except patch.UnsupportedPatchFormat: | 234 except patch.UnsupportedPatchFormat: |
| 249 pass | 235 pass |
| 250 | 236 |
| 251 def testFilePatchDiffEmpty(self): | 237 def testFilePatchDiffEmpty(self): |
| 252 try: | 238 try: |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 patches = patch.PatchSet([ | 433 patches = patch.PatchSet([ |
| 448 patch.FilePatchDiff('chrome\\file.cc', mangled_patch, []), | 434 patch.FilePatchDiff('chrome\\file.cc', mangled_patch, []), |
| 449 patch.FilePatchDelete('other\\place\\foo', True), | 435 patch.FilePatchDelete('other\\place\\foo', True), |
| 450 ]) | 436 ]) |
| 451 expected = ['chrome/file.cc', 'other/place/foo'] | 437 expected = ['chrome/file.cc', 'other/place/foo'] |
| 452 self.assertEquals(expected, patches.filenames) | 438 self.assertEquals(expected, patches.filenames) |
| 453 self.assertEquals(SVN_PATCH, patches.patches[0].get()) | 439 self.assertEquals(SVN_PATCH, patches.patches[0].get()) |
| 454 | 440 |
| 455 def testDelete(self): | 441 def testDelete(self): |
| 456 p = patch.FilePatchDiff('tools/clang_check/README.chromium', DELETE, []) | 442 p = patch.FilePatchDiff('tools/clang_check/README.chromium', DELETE, []) |
| 457 self.assertEquals(p.filename, 'tools/clang_check/README.chromium') | 443 self._check_patch( |
| 458 self.assertEquals(p.is_binary, False) | 444 p, 'tools/clang_check/README.chromium', DELETE, is_delete=True) |
| 459 self.assertEquals(p.is_delete, True) | |
| 460 self.assertEquals(p.is_new, False) | |
| 461 self.assertEquals(p.get(), DELETE) | |
| 462 self.assertEquals([], p.svn_properties) | |
| 463 | 445 |
| 464 def testGitDelete(self): | 446 def testGitDelete(self): |
| 465 p = patch.FilePatchDiff('tools/clang_check/README.chromium', GIT_DELETE, []) | 447 p = patch.FilePatchDiff('tools/clang_check/README.chromium', GIT_DELETE, []) |
| 466 self.assertEquals(p.filename, 'tools/clang_check/README.chromium') | 448 self._check_patch( |
| 467 self.assertEquals(p.is_binary, False) | 449 p, 'tools/clang_check/README.chromium', GIT_DELETE, is_delete=True, |
| 468 self.assertEquals(p.is_delete, True) | 450 is_git_diff=True, patchlevel=1) |
| 469 self.assertEquals(p.is_new, False) | |
| 470 self.assertEquals(p.get(), GIT_DELETE) | |
| 471 self.assertEquals([], p.svn_properties) | |
| 472 | 451 |
| 473 def testGitRename(self): | 452 def testGitRename(self): |
| 474 p = patch.FilePatchDiff('tools/run_local_server.sh', GIT_RENAME, []) | 453 p = patch.FilePatchDiff('tools/run_local_server.sh', GIT_RENAME, []) |
| 475 self.assertEquals(p.filename, 'tools/run_local_server.sh') | 454 self._check_patch(p, 'tools/run_local_server.sh', GIT_RENAME, |
| 476 self.assertEquals(p.is_binary, False) | 455 is_git_diff=True, patchlevel=1) |
| 477 self.assertEquals(p.is_delete, False) | |
| 478 self.assertEquals(p.is_new, False) | |
| 479 self.assertEquals(p.get(), GIT_RENAME) | |
| 480 self.assertEquals([], p.svn_properties) | |
| 481 | 456 |
| 482 def testGitRenamePartial(self): | 457 def testGitRenamePartial(self): |
| 483 p = patch.FilePatchDiff( | 458 p = patch.FilePatchDiff( |
| 484 'chrome/browser/chromeos/views/webui_menu_widget.h', | 459 'chrome/browser/chromeos/views/webui_menu_widget.h', |
| 485 GIT_RENAME_PARTIAL, []) | 460 GIT_RENAME_PARTIAL, []) |
| 486 self.assertEquals( | 461 self._check_patch( |
| 487 p.filename, 'chrome/browser/chromeos/views/webui_menu_widget.h') | 462 p, 'chrome/browser/chromeos/views/webui_menu_widget.h', |
| 488 self.assertEquals(p.is_binary, False) | 463 GIT_RENAME_PARTIAL, is_git_diff=True, patchlevel=1) |
| 489 self.assertEquals(p.is_delete, False) | |
| 490 self.assertEquals(p.is_new, False) | |
| 491 self.assertEquals(p.get(), GIT_RENAME_PARTIAL) | |
| 492 self.assertEquals([], p.svn_properties) | |
| 493 | 464 |
| 494 def testGitCopy(self): | 465 def testGitCopy(self): |
| 495 p = patch.FilePatchDiff('pp', GIT_COPY, []) | 466 p = patch.FilePatchDiff('pp', GIT_COPY, []) |
| 496 self.assertEquals(p.filename, 'pp') | 467 self._check_patch(p, 'pp', GIT_COPY, is_git_diff=True, patchlevel=1) |
| 497 self.assertEquals(p.is_binary, False) | |
| 498 self.assertEquals(p.is_delete, False) | |
| 499 self.assertEquals(p.is_new, False) | |
| 500 self.assertEquals(p.get(), GIT_COPY) | |
| 501 self.assertEquals([], p.svn_properties) | |
| 502 | |
| 503 def testGitNew(self): | |
| 504 p = patch.FilePatchDiff('foo', GIT_NEW, []) | |
| 505 self.assertEquals(p.filename, 'foo') | |
| 506 self.assertEquals(p.is_binary, False) | |
| 507 self.assertEquals(p.is_delete, False) | |
| 508 self.assertEquals(p.is_new, True) | |
| 509 self.assertEquals(p.get(), GIT_NEW) | |
| 510 self.assertEquals([], p.svn_properties) | |
| 511 | 468 |
| 512 def testOnlyHeader(self): | 469 def testOnlyHeader(self): |
| 513 p = patch.FilePatchDiff('file_a', '--- file_a\n+++ file_a\n', []) | 470 diff = '--- file_a\n+++ file_a\n' |
| 514 self.assertTrue(p) | 471 p = patch.FilePatchDiff('file_a', diff, []) |
| 472 self._check_patch(p, 'file_a', diff) |
| 515 | 473 |
| 516 def testSmallest(self): | 474 def testSmallest(self): |
| 517 p = patch.FilePatchDiff( | 475 diff = '--- file_a\n+++ file_a\n@@ -0,0 +1 @@\n+foo\n' |
| 518 'file_a', '--- file_a\n+++ file_a\n@@ -0,0 +1 @@\n+foo\n', []) | 476 p = patch.FilePatchDiff('file_a', diff, []) |
| 519 self.assertTrue(p) | 477 self._check_patch(p, 'file_a', diff) |
| 520 | 478 |
| 521 def testInverted(self): | 479 def testInverted(self): |
| 522 try: | 480 try: |
| 523 patch.FilePatchDiff( | 481 patch.FilePatchDiff( |
| 524 'file_a', '+++ file_a\n--- file_a\n@@ -0,0 +1 @@\n+foo\n', []) | 482 'file_a', '+++ file_a\n--- file_a\n@@ -0,0 +1 @@\n+foo\n', []) |
| 525 self.fail() | 483 self.fail() |
| 526 except patch.UnsupportedPatchFormat: | 484 except patch.UnsupportedPatchFormat: |
| 527 pass | 485 pass |
| 528 | 486 |
| 529 def testInvertedOnlyHeader(self): | 487 def testInvertedOnlyHeader(self): |
| 530 try: | 488 try: |
| 531 patch.FilePatchDiff('file_a', '+++ file_a\n--- file_a\n', []) | 489 patch.FilePatchDiff('file_a', '+++ file_a\n--- file_a\n', []) |
| 532 self.fail() | 490 self.fail() |
| 533 except patch.UnsupportedPatchFormat: | 491 except patch.UnsupportedPatchFormat: |
| 534 pass | 492 pass |
| 535 | 493 |
| 536 def testRenameOnlyHeader(self): | 494 def testRenameOnlyHeader(self): |
| 537 p = patch.FilePatchDiff('file_b', '--- file_a\n+++ file_b\n', []) | 495 diff = '--- file_a\n+++ file_b\n' |
| 538 self.assertEquals(p.filename, 'file_b') | 496 p = patch.FilePatchDiff('file_b', diff, []) |
| 539 self.assertEquals(p.is_binary, False) | |
| 540 self.assertEquals(p.is_delete, False) | |
| 541 # Should it be marked as new? | 497 # Should it be marked as new? |
| 542 self.assertEquals(p.is_new, False) | 498 self._check_patch(p, 'file_b', diff) |
| 543 self.assertEquals(p.get(), '--- file_a\n+++ file_b\n') | |
| 544 self.assertEquals([], p.svn_properties) | |
| 545 | 499 |
| 546 def testGitCopyPartial(self): | 500 def testGitCopyPartial(self): |
| 547 diff = ( | 501 diff = ( |
| 548 'diff --git a/wtf b/wtf2\n' | 502 'diff --git a/wtf b/wtf2\n' |
| 549 'similarity index 98%\n' | 503 'similarity index 98%\n' |
| 550 'copy from wtf\n' | 504 'copy from wtf\n' |
| 551 'copy to wtf2\n' | 505 'copy to wtf2\n' |
| 552 'index 79fbaf3..3560689 100755\n' | 506 'index 79fbaf3..3560689 100755\n' |
| 553 '--- a/wtf\n' | 507 '--- a/wtf\n' |
| 554 '+++ b/wtf2\n' | 508 '+++ b/wtf2\n' |
| 555 '@@ -1,4 +1,4 @@\n' | 509 '@@ -1,4 +1,4 @@\n' |
| 556 '-#!/usr/bin/env python\n' | 510 '-#!/usr/bin/env python\n' |
| 557 '+#!/usr/bin/env python1.3\n' | 511 '+#!/usr/bin/env python1.3\n' |
| 558 ' # Copyright (c) 2010 The Chromium Authors. All rights reserved.\n' | 512 ' # Copyright (c) 2010 The Chromium Authors. All rights reserved.\n' |
| 559 ' # blah blah blah as\n' | 513 ' # blah blah blah as\n' |
| 560 ' # found in the LICENSE file.\n') | 514 ' # found in the LICENSE file.\n') |
| 561 p = patch.FilePatchDiff('wtf2', diff, []) | 515 p = patch.FilePatchDiff('wtf2', diff, []) |
| 562 self.assertEquals(p.filename, 'wtf2') | |
| 563 self.assertEquals(p.is_binary, False) | |
| 564 self.assertEquals(p.is_delete, False) | |
| 565 # Should it be marked as new? | 516 # Should it be marked as new? |
| 566 self.assertEquals(p.is_new, False) | 517 self._check_patch(p, 'wtf2', diff, is_git_diff=True, patchlevel=1) |
| 567 self.assertEquals(p.get(), diff) | |
| 568 self.assertEquals([], p.svn_properties) | |
| 569 | 518 |
| 570 def testGitExe(self): | 519 def testGitExe(self): |
| 571 diff = ( | 520 diff = ( |
| 572 'diff --git a/natsort_test.py b/natsort_test.py\n' | 521 'diff --git a/natsort_test.py b/natsort_test.py\n' |
| 573 'new file mode 100755\n' | 522 'new file mode 100755\n' |
| 574 '--- /dev/null\n' | 523 '--- /dev/null\n' |
| 575 '+++ b/natsort_test.py\n' | 524 '+++ b/natsort_test.py\n' |
| 576 '@@ -0,0 +1,1 @@\n' | 525 '@@ -0,0 +1,1 @@\n' |
| 577 '+#!/usr/bin/env python\n') | 526 '+#!/usr/bin/env python\n') |
| 578 p = patch.FilePatchDiff('natsort_test.py', diff, []) | 527 p = patch.FilePatchDiff('natsort_test.py', diff, []) |
| 579 self.assertEquals(p.filename, 'natsort_test.py') | 528 self._check_patch( |
| 580 self.assertEquals(p.is_binary, False) | 529 p, 'natsort_test.py', diff, is_new=True, is_git_diff=True, patchlevel=1, |
| 581 self.assertEquals(p.is_delete, False) | 530 svn_properties=[('svn:executable', '*')]) |
| 582 self.assertEquals(p.is_new, True) | |
| 583 self.assertEquals(p.get(), diff) | |
| 584 self.assertEquals([('svn:executable', '*')], p.svn_properties) | |
| 585 | 531 |
| 586 def testGitExe2(self): | 532 def testGitExe2(self): |
| 587 diff = ( | 533 diff = ( |
| 588 'diff --git a/natsort_test.py b/natsort_test.py\n' | 534 'diff --git a/natsort_test.py b/natsort_test.py\n' |
| 589 'new file mode 100644\n' | 535 'new file mode 100644\n' |
| 590 '--- /dev/null\n' | 536 '--- /dev/null\n' |
| 591 '+++ b/natsort_test.py\n' | 537 '+++ b/natsort_test.py\n' |
| 592 '@@ -0,0 +1,1 @@\n' | 538 '@@ -0,0 +1,1 @@\n' |
| 593 '+#!/usr/bin/env python\n') | 539 '+#!/usr/bin/env python\n') |
| 594 p = patch.FilePatchDiff('natsort_test.py', diff, []) | 540 p = patch.FilePatchDiff('natsort_test.py', diff, []) |
| 595 self.assertEquals(p.filename, 'natsort_test.py') | 541 self._check_patch( |
| 596 self.assertEquals(p.is_binary, False) | 542 p, 'natsort_test.py', diff, is_new=True, is_git_diff=True, patchlevel=1) |
| 597 self.assertEquals(p.is_delete, False) | |
| 598 self.assertEquals(p.is_new, True) | |
| 599 self.assertEquals(p.get(), diff) | |
| 600 self.assertEquals([], p.svn_properties) | |
| 601 | 543 |
| 602 | 544 |
| 603 if __name__ == '__main__': | 545 if __name__ == '__main__': |
| 604 logging.basicConfig(level= | 546 logging.basicConfig(level= |
| 605 [logging.WARNING, logging.INFO, logging.DEBUG][ | 547 [logging.WARNING, logging.INFO, logging.DEBUG][ |
| 606 min(2, sys.argv.count('-v'))]) | 548 min(2, sys.argv.count('-v'))]) |
| 607 unittest.main() | 549 unittest.main() |
| OLD | NEW |