view tests/test_single_dir_clone.py @ 1597:b06be5815692

README: update links and mercurial version supported The README still had old links to selenic.com. This patch changes them, and also updates the mercurial versions it supports.
author Pulkit Goyal <pulkit@yandex-team.ru>
date Thu, 15 Nov 2018 17:10:52 +0300
parents d55c9d0ba350
children 7bb6562feb85
line wrap: on
line source

import test_util

import errno
import shutil
import unittest

from mercurial import commands
from mercurial import context
from mercurial import hg
from mercurial import node
from mercurial import ui

from hgsubversion import compathacks

revsymbol = test_util.revsymbol

class TestSingleDirClone(test_util.TestBase):
    stupid_mode_tests = True

    def test_clone_single_dir_simple(self):
        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
                                            layout='single',
                                            subdir='')
        self.assertEqual(compathacks.branchset(repo),
                         set(['default']))
        self.assertEqual(sorted(repo['tip'].manifest().keys()),
                         ['branches/branch_from_tag/alpha',
                          'branches/branch_from_tag/beta',
                          'tags/copied_tag/alpha',
                          'tags/copied_tag/beta',
                          'tags/tag_r3/alpha',
                          'tags/tag_r3/beta',
                          'trunk/alpha',
                          'trunk/beta'])

    def test_auto_detect_single(self):
        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
                                            layout='auto')
        self.assertEqual(compathacks.branchset(repo),
                         set(['default', 'branch_from_tag']))
        oldmanifest = test_util.filtermanifest(revsymbol(repo, 'default').manifest().keys())
        # remove standard layout
        shutil.rmtree(self.wc_path)
        # try again with subdir to get single dir clone
        repo = self._load_fixture_and_fetch('branch_from_tag.svndump',
                                            layout='auto',
                                            subdir='trunk')
        self.assertEqual(compathacks.branchset(repo), set(['default', ]))
        self.assertEqual(revsymbol(repo, 'default').manifest().keys(), oldmanifest)

    def test_clone_subdir_is_file_prefix(self):
        FIXTURE = 'subdir_is_file_prefix.svndump'
        repo = self._load_fixture_and_fetch(FIXTURE,
                                            layout='single',
                                            subdir=test_util.subdir[FIXTURE])
        self.assertEqual(compathacks.branchset(repo), set(['default']))
        self.assertEqual(repo['tip'].manifest().keys(), ['flaf.txt'])

    def test_externals_single(self):
        repo = self._load_fixture_and_fetch('externals.svndump',
                                            layout='single')
        for rev in repo:
            assert '.hgsvnexternals' not in repo[rev].manifest()
        return # TODO enable test when externals in single are fixed
        expect = """[.]
 -r2 ^/externals/project2@2 deps/project2
[subdir]
 ^/externals/project1 deps/project1
[subdir2]
 ^/externals/project1 deps/project1
"""
        test = 2
        self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect)

    def test_externals_single_whole_repo(self):
        # This is the test which demonstrates the brokenness of externals
        return # TODO enable test when externals in single are fixed
        repo = self._load_fixture_and_fetch('externals.svndump',
                                            layout='single',
                                            subdir='')
        for rev in repo:
            rc = repo[rev]
            if '.hgsvnexternals' in rc:
                extdata = rc['.hgsvnexternals'].data()
                assert '[.]' not in extdata
                print extdata
        expect = '' # Not honestly sure what this should be...
        test = 4
        self.assertEqual(self.repo[test]['.hgsvnexternals'].data(), expect)