##// END OF EJS Templates
tests: Extend vcsbackend - create repo with commits...
johbo -
r770:d9d969e2 default
parent child Browse files
Show More
@@ -643,39 +643,10 b' class Backend(object):'
643 self._fixture.destroy_repo(repo_name)
643 self._fixture.destroy_repo(repo_name)
644
644
645 def _add_commits_to_repo(self, repo, commits):
645 def _add_commits_to_repo(self, repo, commits):
646 if not commits:
646 commit_ids = _add_commits_to_repo(repo, commits)
647 if not commit_ids:
647 return
648 return
648
649 self._commit_ids = commit_ids
649 imc = repo.in_memory_commit
650 commit = None
651 self._commit_ids = {}
652
653 for idx, commit in enumerate(commits):
654 message = unicode(commit.get('message', 'Commit %s' % idx))
655
656 for node in commit.get('added', []):
657 imc.add(FileNode(node.path, content=node.content))
658 for node in commit.get('changed', []):
659 imc.change(FileNode(node.path, content=node.content))
660 for node in commit.get('removed', []):
661 imc.remove(FileNode(node.path))
662
663 parents = [
664 repo.get_commit(commit_id=self._commit_ids[p])
665 for p in commit.get('parents', [])]
666
667 operations = ('added', 'changed', 'removed')
668 if not any((commit.get(o) for o in operations)):
669 imc.add(FileNode('file_%s' % idx, content=message))
670
671 commit = imc.commit(
672 message=message,
673 author=unicode(commit.get('author', 'Automatic')),
674 date=commit.get('date'),
675 branch=commit.get('branch'),
676 parents=parents)
677
678 self._commit_ids[commit.message] = commit.raw_id
679
650
680 # Creating refs for Git to allow fetching them from remote repository
651 # Creating refs for Git to allow fetching them from remote repository
681 if self.alias == 'git':
652 if self.alias == 'git':
@@ -687,8 +658,6 b' class Backend(object):'
687 refs[ref_name] = self._commit_ids[message]
658 refs[ref_name] = self._commit_ids[message]
688 self._create_refs(repo, refs)
659 self._create_refs(repo, refs)
689
660
690 return commit
691
692 def _create_refs(self, repo, refs):
661 def _create_refs(self, repo, refs):
693 for ref_name in refs:
662 for ref_name in refs:
694 repo.set_refs(ref_name, refs[ref_name])
663 repo.set_refs(ref_name, refs[ref_name])
@@ -783,17 +752,20 b' class VcsBackend(object):'
783 """
752 """
784 return get_backend(self.alias)
753 return get_backend(self.alias)
785
754
786 def create_repo(self, number_of_commits=0, _clone_repo=None):
755 def create_repo(self, commits=None, number_of_commits=0, _clone_repo=None):
787 repo_name = self._next_repo_name()
756 repo_name = self._next_repo_name()
788 self._repo_path = get_new_dir(repo_name)
757 self._repo_path = get_new_dir(repo_name)
789 Repository = get_backend(self.alias)
758 repo_class = get_backend(self.alias)
790 src_url = None
759 src_url = None
791 if _clone_repo:
760 if _clone_repo:
792 src_url = _clone_repo.path
761 src_url = _clone_repo.path
793 repo = Repository(self._repo_path, create=True, src_url=src_url)
762 repo = repo_class(self._repo_path, create=True, src_url=src_url)
794 self._cleanup_repos.append(repo)
763 self._cleanup_repos.append(repo)
795 for idx in xrange(number_of_commits):
764
796 self.ensure_file(filename='file_%s' % idx, content=repo.name)
765 commits = commits or [
766 {'message': 'Commit %s of %s' % (x, repo_name)}
767 for x in xrange(number_of_commits)]
768 _add_commits_to_repo(repo, commits)
797 return repo
769 return repo
798
770
799 def clone_repo(self, repo):
771 def clone_repo(self, repo):
@@ -825,6 +797,44 b' class VcsBackend(object):'
825 self.add_file(self.repo, filename, content)
797 self.add_file(self.repo, filename, content)
826
798
827
799
800 def _add_commits_to_repo(vcs_repo, commits):
801 commit_ids = {}
802 if not commits:
803 return commit_ids
804
805 imc = vcs_repo.in_memory_commit
806 commit = None
807
808 for idx, commit in enumerate(commits):
809 message = unicode(commit.get('message', 'Commit %s' % idx))
810
811 for node in commit.get('added', []):
812 imc.add(FileNode(node.path, content=node.content))
813 for node in commit.get('changed', []):
814 imc.change(FileNode(node.path, content=node.content))
815 for node in commit.get('removed', []):
816 imc.remove(FileNode(node.path))
817
818 parents = [
819 vcs_repo.get_commit(commit_id=commit_ids[p])
820 for p in commit.get('parents', [])]
821
822 operations = ('added', 'changed', 'removed')
823 if not any((commit.get(o) for o in operations)):
824 imc.add(FileNode('file_%s' % idx, content=message))
825
826 commit = imc.commit(
827 message=message,
828 author=unicode(commit.get('author', 'Automatic')),
829 date=commit.get('date'),
830 branch=commit.get('branch'),
831 parents=parents)
832
833 commit_ids[commit.message] = commit.raw_id
834
835 return commit_ids
836
837
828 @pytest.fixture
838 @pytest.fixture
829 def reposerver(request):
839 def reposerver(request):
830 """
840 """
General Comments 0
You need to be logged in to leave comments. Login now