comparison tests/test_push_command.py @ 992:110794582448

push: avoid failure when push is being called from a newly created subdirectory The failure was occuring during push when a new file is added inside a new subdirectory and push is being called from this subdirectory. This subdirectory disappears when the commit is being rebased[during push] causing the push to fail with 'no such file/directory' error.
author Kapil Bajaj <kapilbajaj@fb.com>
date Thu, 17 Jan 2013 17:01:45 -0800
parents 26e9fd21f3bf
children e775ffbcb359
comparison
equal deleted inserted replaced
991:26e9fd21f3bf 992:110794582448
578 self.assertFalse(commit1.mutable()) 578 self.assertFalse(commit1.mutable())
579 commit2 = commit1.parents()[0] 579 commit2 = commit1.parents()[0]
580 self.assertEqual(commit2.files(), ['gamma']) 580 self.assertEqual(commit2.files(), ['gamma'])
581 self.assertFalse(commit2.mutable()) 581 self.assertFalse(commit2.mutable())
582 582
583 def test_push_in_subdir(self, commit=True):
584 repo = self.repo
585 old_tip = repo['tip'].node()
586 def file_callback(repo, memctx, path):
587 if path == 'adding_file' or path == 'newdir/new_file':
588 testData = 'fooFirstFile'
589 if path == 'newdir/new_file':
590 testData = 'fooNewFile'
591 return context.memfilectx(path=path,
592 data=testData,
593 islink=False,
594 isexec=False,
595 copied=False)
596 raise IOError(errno.EINVAL, 'Invalid operation: ' + path)
597 ctx = context.memctx(repo,
598 (repo['default'].node(), node.nullid),
599 'automated test',
600 ['adding_file'],
601 file_callback,
602 'an_author',
603 '2012-12-13 20:59:48 -0500',
604 {'branch': 'default', })
605 new_hash = repo.commitctx(ctx)
606 p = os.path.join(repo.root, "newdir")
607 os.mkdir(p)
608 ctx = context.memctx(repo,
609 (repo['default'].node(), node.nullid),
610 'automated test',
611 ['newdir/new_file'],
612 file_callback,
613 'an_author',
614 '2012-12-13 20:59:48 -0500',
615 {'branch': 'default', })
616 os.chdir(p)
617 new_hash = repo.commitctx(ctx)
618 hg.update(repo, repo['tip'].node())
619 self.pushrevisions()
620 tip = self.repo['tip']
621 self.assertNotEqual(tip.node(), old_tip)
622 self.assertEqual(p, os.getcwd())
623 self.assertEqual(tip['adding_file'].data(), 'fooFirstFile')
624 self.assertEqual(tip['newdir/new_file'].data(), 'fooNewFile')
625 self.assertEqual(tip.branch(), 'default')
626
583 627
584 def suite(): 628 def suite():
585 test_classes = [PushTests, ] 629 test_classes = [PushTests, ]
586 all_tests = [] 630 all_tests = []
587 # This is the quickest hack I could come up with to load all the tests from 631 # This is the quickest hack I could come up with to load all the tests from