tests/test-walkrepo.py
author Brendan Cully <brendan@kublai.com>
Wed, 29 Oct 2008 10:55:29 -0700
changeset 7291 5ac779ea7850
parent 7201 b1aea76f7001
child 7492 8649b2a3de75
child 7494 85dc88630beb
permissions -rw-r--r--
Backed out changeset a1f8ad3c1821
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     1
import os
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     2
import os.path
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     3
from mercurial import hg, ui
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     4
from mercurial.util import walkrepos, set, frozenset
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     5
from os import mkdir, chdir
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     6
from os.path import join as pjoin
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     7
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     8
u = ui.ui()
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     9
sym = hasattr(os, 'symlink') and hasattr(os.path, 'samestat')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    10
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    11
hg.repository(u, 'top1', create=1)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    12
mkdir('subdir')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    13
chdir('subdir')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    14
hg.repository(u, 'sub1', create=1)
7201
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    15
chdir('sub1')
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    16
hg.repository(u, 'inside_sub1', create=1)
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    17
chdir('.hg')
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    18
hg.repository(u, 'patches', create=1)
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    19
chdir(os.path.pardir)
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    20
chdir(os.path.pardir)
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    21
mkdir('subsubdir')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    22
chdir('subsubdir')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    23
hg.repository(u, 'subsub1', create=1)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    24
chdir(os.path.pardir)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    25
if sym:
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    26
    os.symlink(os.path.pardir, 'circle')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    27
    os.symlink(pjoin('subsubdir', 'subsub1'), 'subsub1')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    28
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    29
def runtest():
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    30
    reposet = frozenset(walkrepos('.', followsym=True))
7201
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    31
    if sym and (len(reposet) != 5):
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    32
        print "reposet = %r" % (reposet,)
7201
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    33
        raise SystemExit(1, "Found %d repositories when I should have found 5" % (len(reposet),))
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    34
    if (not sym) and (len(reposet) != 4):
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    35
        print "reposet = %r" % (reposet,)
7201
b1aea76f7001 hgwebdir: show nested repositories (issue1336)
Benoit Allard <benoit@aeteurope.nl>
parents: 6341
diff changeset
    36
        raise SystemExit(1, "Found %d repositories when I should have found 4" % (len(reposet),))
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    37
    sub1set = frozenset((pjoin('.', 'sub1'),
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    38
                         pjoin('.', 'circle', 'subdir', 'sub1')))
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    39
    if len(sub1set & reposet) != 1:
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    40
        print "sub1set = %r" % (sub1set,)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    41
        print "reposet = %r" % (reposet,)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    42
        raise SystemExit(1, "sub1set and reposet should have exactly one path in common.")
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    43
    sub2set = frozenset((pjoin('.', 'subsub1'),
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    44
                         pjoin('.', 'subsubdir', 'subsub1')))
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    45
    if len(sub2set & reposet) != 1:
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    46
        print "sub2set = %r" % (sub2set,)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    47
        print "reposet = %r" % (reposet,)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    48
        raise SystemExit(1, "sub1set and reposet should have exactly one path in common.")
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    49
    sub3 = pjoin('.', 'circle', 'top1')
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    50
    if sym and not (sub3 in reposet):
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    51
        print "reposet = %r" % (reposet,)
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    52
        raise SystemExit(1, "Symbolic links are supported and %s is not in reposet" % (sub3,))
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    53
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    54
runtest()
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    55
if sym:
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    56
    # Simulate not having symlinks.
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    57
    del os.path.samestat
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    58
    sym = False
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    59
    runtest()