Mercurial > hgsubversion
comparison tests/test_push_command.py @ 1202:cccc7a50f66d
test_push_command: call makememfilectx
| author | Sean Farley <sean.michael.farley@gmail.com> |
|---|---|
| date | Mon, 02 Jun 2014 19:41:37 -0500 |
| parents | 2d7398fffd0d |
| children | aa8b72bd1320 46523cdfd3b0 |
comparison
equal
deleted
inserted
replaced
| 1201:65631b2c61fb | 1202:cccc7a50f66d |
|---|---|
| 16 from mercurial import node | 16 from mercurial import node |
| 17 from mercurial import revlog | 17 from mercurial import revlog |
| 18 from mercurial import util as hgutil | 18 from mercurial import util as hgutil |
| 19 | 19 |
| 20 from hgsubversion import util | 20 from hgsubversion import util |
| 21 from hgsubversion import compathacks | |
| 21 | 22 |
| 22 import time | 23 import time |
| 23 | 24 |
| 24 | 25 |
| 25 class PushTests(test_util.TestBase): | 26 class PushTests(test_util.TestBase): |
| 31 | 32 |
| 32 def test_cant_push_empty_ctx(self): | 33 def test_cant_push_empty_ctx(self): |
| 33 repo = self.repo | 34 repo = self.repo |
| 34 def file_callback(repo, memctx, path): | 35 def file_callback(repo, memctx, path): |
| 35 if path == 'adding_file': | 36 if path == 'adding_file': |
| 36 return context.memfilectx(path=path, | 37 return compathacks.makememfilectx(repo, |
| 37 data='foo', | 38 path=path, |
| 38 islink=False, | 39 data='foo', |
| 39 isexec=False, | 40 islink=False, |
| 40 copied=False) | 41 isexec=False, |
| 42 copied=False) | |
| 41 raise IOError() | 43 raise IOError() |
| 42 ctx = context.memctx(repo, | 44 ctx = context.memctx(repo, |
| 43 (repo['default'].node(), node.nullid), | 45 (repo['default'].node(), node.nullid), |
| 44 'automated test', | 46 'automated test', |
| 45 [], | 47 [], |
| 56 | 58 |
| 57 def test_push_add_of_added_upstream_gives_sane_error(self): | 59 def test_push_add_of_added_upstream_gives_sane_error(self): |
| 58 repo = self.repo | 60 repo = self.repo |
| 59 def file_callback(repo, memctx, path): | 61 def file_callback(repo, memctx, path): |
| 60 if path == 'adding_file': | 62 if path == 'adding_file': |
| 61 return context.memfilectx(path=path, | 63 return compathacks.makememfilectx(repo, |
| 62 data='foo', | 64 path=path, |
| 63 islink=False, | 65 data='foo', |
| 64 isexec=False, | 66 islink=False, |
| 65 copied=False) | 67 isexec=False, |
| 68 copied=False) | |
| 66 raise IOError() | 69 raise IOError() |
| 67 p1 = repo['default'].node() | 70 p1 = repo['default'].node() |
| 68 ctx = context.memctx(repo, | 71 ctx = context.memctx(repo, |
| 69 (p1, node.nullid), | 72 (p1, node.nullid), |
| 70 'automated test', | 73 'automated test', |
| 103 self.assertEqual(tip.node(), old_tip) | 106 self.assertEqual(tip.node(), old_tip) |
| 104 | 107 |
| 105 def test_cant_push_with_changes(self): | 108 def test_cant_push_with_changes(self): |
| 106 repo = self.repo | 109 repo = self.repo |
| 107 def file_callback(repo, memctx, path): | 110 def file_callback(repo, memctx, path): |
| 108 return context.memfilectx( | 111 return compathacks.makememfilectx(repo, |
| 109 path=path, data='foo', islink=False, | 112 path=path, |
| 110 isexec=False, copied=False) | 113 data='foo', |
| 114 islink=False, | |
| 115 isexec=False, | |
| 116 copied=False) | |
| 111 ctx = context.memctx(repo, | 117 ctx = context.memctx(repo, |
| 112 (repo['default'].node(), node.nullid), | 118 (repo['default'].node(), node.nullid), |
| 113 'automated test', | 119 'automated test', |
| 114 ['adding_file'], | 120 ['adding_file'], |
| 115 file_callback, | 121 file_callback, |
| 152 repo = self.repo | 158 repo = self.repo |
| 153 old_tip = repo['tip'].node() | 159 old_tip = repo['tip'].node() |
| 154 expected_parent = repo['default'].node() | 160 expected_parent = repo['default'].node() |
| 155 def file_callback(repo, memctx, path): | 161 def file_callback(repo, memctx, path): |
| 156 if path == 'adding_file': | 162 if path == 'adding_file': |
| 157 return context.memfilectx(path=path, | 163 return compathacks.makememfilectx(repo, |
| 158 data='foo', | 164 path=path, |
| 159 islink=False, | 165 data='foo', |
| 160 isexec=False, | 166 islink=False, |
| 161 copied=False) | 167 isexec=False, |
| 168 copied=False) | |
| 162 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 169 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 163 ctx = context.memctx(repo, | 170 ctx = context.memctx(repo, |
| 164 parents=(repo['default'].node(), node.nullid), | 171 parents=(repo['default'].node(), node.nullid), |
| 165 text='automated test', | 172 text='automated test', |
| 166 files=['adding_file'], | 173 files=['adding_file'], |
| 199 repo = self.repo | 206 repo = self.repo |
| 200 old_tip = repo['tip'].node() | 207 old_tip = repo['tip'].node() |
| 201 expected_parent = repo['default'].node() | 208 expected_parent = repo['default'].node() |
| 202 def file_callback(repo, memctx, path): | 209 def file_callback(repo, memctx, path): |
| 203 if path == 'adding_file': | 210 if path == 'adding_file': |
| 204 return context.memfilectx(path=path, | 211 return compathacks.makememfilectx(repo, |
| 205 data='foo', | 212 path=path, |
| 206 islink=False, | 213 data='foo', |
| 207 isexec=False, | 214 islink=False, |
| 208 copied=False) | 215 isexec=False, |
| 216 copied=False) | |
| 209 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 217 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 210 ctx = context.memctx(repo, | 218 ctx = context.memctx(repo, |
| 211 (repo['default'].node(), node.nullid), | 219 (repo['default'].node(), node.nullid), |
| 212 'automated test', | 220 'automated test', |
| 213 ['adding_file'], | 221 ['adding_file'], |
| 227 self.assertEqual(tip['adding_file'].data(), 'foo') | 235 self.assertEqual(tip['adding_file'].data(), 'foo') |
| 228 self.assertEqual(tip.branch(), 'default') | 236 self.assertEqual(tip.branch(), 'default') |
| 229 | 237 |
| 230 def test_push_two_revs_different_local_branch(self): | 238 def test_push_two_revs_different_local_branch(self): |
| 231 def filectxfn(repo, memctx, path): | 239 def filectxfn(repo, memctx, path): |
| 232 return context.memfilectx(path=path, | 240 return compathacks.makememfilectx(repo, |
| 233 data=path, | 241 path=path, |
| 234 islink=False, | 242 data=path, |
| 235 isexec=False, | 243 islink=False, |
| 236 copied=False) | 244 isexec=False, |
| 245 copied=False) | |
| 237 oldtiphash = self.repo['default'].node() | 246 oldtiphash = self.repo['default'].node() |
| 238 ctx = context.memctx(self.repo, | 247 ctx = context.memctx(self.repo, |
| 239 (self.repo[0].node(), revlog.nullid,), | 248 (self.repo[0].node(), revlog.nullid,), |
| 240 'automated test', | 249 'automated test', |
| 241 ['gamma', ], | 250 ['gamma', ], |
| 267 repo = self.repo | 276 repo = self.repo |
| 268 old_tip = repo['tip'].node() | 277 old_tip = repo['tip'].node() |
| 269 expected_parent = repo['tip'].parents()[0].node() | 278 expected_parent = repo['tip'].parents()[0].node() |
| 270 def file_callback(repo, memctx, path): | 279 def file_callback(repo, memctx, path): |
| 271 if path == 'adding_file2': | 280 if path == 'adding_file2': |
| 272 return context.memfilectx(path=path, | 281 return compathacks.makememfilectx(repo, |
| 273 data='foo2', | 282 path=path, |
| 274 islink=False, | 283 data='foo2', |
| 275 isexec=False, | 284 islink=False, |
| 276 copied=False) | 285 isexec=False, |
| 286 copied=False) | |
| 277 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 287 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 278 ctx = context.memctx(repo, | 288 ctx = context.memctx(repo, |
| 279 (repo['default'].node(), node.nullid), | 289 (repo['default'].node(), node.nullid), |
| 280 'automated test', | 290 'automated test', |
| 281 ['adding_file2'], | 291 ['adding_file2'], |
| 302 | 312 |
| 303 def test_push_to_branch(self, push=True): | 313 def test_push_to_branch(self, push=True): |
| 304 repo = self.repo | 314 repo = self.repo |
| 305 def file_callback(repo, memctx, path): | 315 def file_callback(repo, memctx, path): |
| 306 if path == 'adding_file': | 316 if path == 'adding_file': |
| 307 return context.memfilectx(path=path, | 317 return compathacks.makememfilectx(repo, |
| 308 data='foo', | 318 path=path, |
| 309 islink=False, | 319 data='foo', |
| 310 isexec=False, | 320 islink=False, |
| 311 copied=False) | 321 isexec=False, |
| 322 copied=False) | |
| 312 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 323 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 313 ctx = context.memctx(repo, | 324 ctx = context.memctx(repo, |
| 314 (repo['the_branch'].node(), node.nullid), | 325 (repo['the_branch'].node(), node.nullid), |
| 315 'automated test', | 326 'automated test', |
| 316 ['adding_file'], | 327 ['adding_file'], |
| 383 def test_push_executable_file(self): | 394 def test_push_executable_file(self): |
| 384 self.test_push_to_default(commit=True) | 395 self.test_push_to_default(commit=True) |
| 385 repo = self.repo | 396 repo = self.repo |
| 386 def file_callback(repo, memctx, path): | 397 def file_callback(repo, memctx, path): |
| 387 if path == 'gamma': | 398 if path == 'gamma': |
| 388 return context.memfilectx(path=path, | 399 return compathacks.makememfilectx(repo, |
| 389 data='foo', | 400 path=path, |
| 390 islink=False, | 401 data='foo', |
| 391 isexec=True, | 402 islink=False, |
| 392 copied=False) | 403 isexec=True, |
| 404 copied=False) | |
| 393 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 405 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 394 ctx = context.memctx(repo, | 406 ctx = context.memctx(repo, |
| 395 (repo['tip'].node(), node.nullid), | 407 (repo['tip'].node(), node.nullid), |
| 396 'message', | 408 'message', |
| 397 ['gamma', ], | 409 ['gamma', ], |
| 413 def test_push_symlink_file(self): | 425 def test_push_symlink_file(self): |
| 414 self.test_push_to_default(commit=True) | 426 self.test_push_to_default(commit=True) |
| 415 repo = self.repo | 427 repo = self.repo |
| 416 def file_callback(repo, memctx, path): | 428 def file_callback(repo, memctx, path): |
| 417 if path == 'gamma': | 429 if path == 'gamma': |
| 418 return context.memfilectx(path=path, | 430 return compathacks.makememfilectx(repo, |
| 419 data='foo', | 431 path=path, |
| 420 islink=True, | 432 data='foo', |
| 421 isexec=False, | 433 islink=True, |
| 422 copied=False) | 434 isexec=False, |
| 435 copied=False) | |
| 423 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 436 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 424 ctx = context.memctx(repo, | 437 ctx = context.memctx(repo, |
| 425 (repo['tip'].node(), node.nullid), | 438 (repo['tip'].node(), node.nullid), |
| 426 'message', | 439 'message', |
| 427 ['gamma', ], | 440 ['gamma', ], |
| 447 def test_push_existing_file_newly_execute(self, execute=True, | 460 def test_push_existing_file_newly_execute(self, execute=True, |
| 448 link=False, expected_flags='x'): | 461 link=False, expected_flags='x'): |
| 449 self.test_push_to_default() | 462 self.test_push_to_default() |
| 450 repo = self.repo | 463 repo = self.repo |
| 451 def file_callback(repo, memctx, path): | 464 def file_callback(repo, memctx, path): |
| 452 return context.memfilectx(path=path, | 465 return compathacks.makememfilectx(repo, |
| 453 data='foo', | 466 path=path, |
| 454 islink=link, | 467 data='foo', |
| 455 isexec=execute, | 468 islink=link, |
| 456 copied=False) | 469 isexec=execute, |
| 470 copied=False) | |
| 457 ctx = context.memctx(repo, | 471 ctx = context.memctx(repo, |
| 458 (repo['default'].node(), node.nullid), | 472 (repo['default'].node(), node.nullid), |
| 459 'message', | 473 'message', |
| 460 ['alpha', ], | 474 ['alpha', ], |
| 461 file_callback, | 475 file_callback, |
| 472 self.assertEqual(tip['alpha'].flags(), expected_flags) | 486 self.assertEqual(tip['alpha'].flags(), expected_flags) |
| 473 # while we're here, double check pushing an already-executable file | 487 # while we're here, double check pushing an already-executable file |
| 474 # works | 488 # works |
| 475 repo = self.repo | 489 repo = self.repo |
| 476 def file_callback2(repo, memctx, path): | 490 def file_callback2(repo, memctx, path): |
| 477 return context.memfilectx(path=path, | 491 return compathacks.makememfilectx(repo, |
| 478 data='bar', | 492 path=path, |
| 479 islink=link, | 493 data='bar', |
| 480 isexec=execute, | 494 islink=link, |
| 481 copied=False) | 495 isexec=execute, |
| 496 copied=False) | |
| 482 ctx = context.memctx(repo, | 497 ctx = context.memctx(repo, |
| 483 (repo['default'].node(), node.nullid), | 498 (repo['default'].node(), node.nullid), |
| 484 'message', | 499 'message', |
| 485 ['alpha', ], | 500 ['alpha', ], |
| 486 file_callback2, | 501 file_callback2, |
| 496 self.assertEqual(tip.parents()[0]['alpha'].flags(), expected_flags) | 511 self.assertEqual(tip.parents()[0]['alpha'].flags(), expected_flags) |
| 497 self.assertEqual(tip['alpha'].flags(), expected_flags) | 512 self.assertEqual(tip['alpha'].flags(), expected_flags) |
| 498 # now test removing the property entirely | 513 # now test removing the property entirely |
| 499 repo = self.repo | 514 repo = self.repo |
| 500 def file_callback3(repo, memctx, path): | 515 def file_callback3(repo, memctx, path): |
| 501 return context.memfilectx(path=path, | 516 return compathacks.makememfilectx(repo, |
| 502 data='bar', | 517 path=path, |
| 503 islink=False, | 518 data='bar', |
| 504 isexec=False, | 519 islink=False, |
| 505 copied=False) | 520 isexec=False, |
| 521 copied=False) | |
| 506 ctx = context.memctx(repo, | 522 ctx = context.memctx(repo, |
| 507 (repo['default'].node(), node.nullid), | 523 (repo['default'].node(), node.nullid), |
| 508 'message', | 524 'message', |
| 509 ['alpha', ], | 525 ['alpha', ], |
| 510 file_callback3, | 526 file_callback3, |
| 644 def file_callback(repo, memctx, path): | 660 def file_callback(repo, memctx, path): |
| 645 if path == 'adding_file' or path == 'newdir/new_file': | 661 if path == 'adding_file' or path == 'newdir/new_file': |
| 646 testData = 'fooFirstFile' | 662 testData = 'fooFirstFile' |
| 647 if path == 'newdir/new_file': | 663 if path == 'newdir/new_file': |
| 648 testData = 'fooNewFile' | 664 testData = 'fooNewFile' |
| 649 return context.memfilectx(path=path, | 665 return compathacks.makememfilectx(repo, |
| 650 data=testData, | 666 path=path, |
| 651 islink=False, | 667 data=testData, |
| 652 isexec=False, | 668 islink=False, |
| 653 copied=False) | 669 isexec=False, |
| 670 copied=False) | |
| 654 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) | 671 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
| 655 ctx = context.memctx(repo, | 672 ctx = context.memctx(repo, |
| 656 (repo['default'].node(), node.nullid), | 673 (repo['default'].node(), node.nullid), |
| 657 'automated test', | 674 'automated test', |
| 658 ['adding_file'], | 675 ['adding_file'], |
