tests/test-walkrepo.py
author Brodie Rao <brodie@bitheap.org>
Thu, 27 Oct 2011 11:57:08 -0700
branchstable
changeset 15375 fe9d36a6853e
parent 14971 0b21ae0a2366
child 16321 e1615a24b73a
permissions -rw-r--r--
hgweb: fix dynamic date calculation not working under Safari While Chrome, Firefox, and IE 6+ support the current date format being passed to Date(), Safari doesn't: > new Date('Mon Oct 24 13:58:01 2011 +0200') Invalid Date However, the rfc822date format--officially supported by ECMAScript[1]--does work: > new Date('Mon, 24 Oct 2011 13:58:01 +0200') Mon Oct 24 2011 04:58:01 GMT-0700 (PDT) This change replaces all instances of {date|date} in HTML with {date|rfc822date}. For elements that only have the "age" class, there's no outward change for users with JavaScript enabled. For elements with both the "age" and "date" classes, the full date displayed uses the new format. Tested in IE 6, Safari 5.1.1, Google Chrome 15, and Firefox 7.0.1. [1]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse

import os
from mercurial import hg, ui
from mercurial.scmutil import walkrepos
from os import mkdir, chdir
from os.path import join as pjoin

u = ui.ui()
sym = getattr(os, 'symlink', False) and getattr(os.path, 'samestat', False)

hg.repository(u, 'top1', create=1)
mkdir('subdir')
chdir('subdir')
hg.repository(u, 'sub1', create=1)
mkdir('subsubdir')
chdir('subsubdir')
hg.repository(u, 'subsub1', create=1)
chdir(os.path.pardir)
if sym:
    os.symlink(os.path.pardir, 'circle')
    os.symlink(pjoin('subsubdir', 'subsub1'), 'subsub1')

def runtest():
    reposet = frozenset(walkrepos('.', followsym=True))
    if sym and (len(reposet) != 3):
        print "reposet = %r" % (reposet,)
        print "Found %d repositories when I should have found 3" % (len(reposet),)
    if (not sym) and (len(reposet) != 2):
        print "reposet = %r" % (reposet,)
        print "Found %d repositories when I should have found 2" % (len(reposet),)
    sub1set = frozenset((pjoin('.', 'sub1'),
                         pjoin('.', 'circle', 'subdir', 'sub1')))
    if len(sub1set & reposet) != 1:
        print "sub1set = %r" % (sub1set,)
        print "reposet = %r" % (reposet,)
        print "sub1set and reposet should have exactly one path in common."
    sub2set = frozenset((pjoin('.', 'subsub1'),
                         pjoin('.', 'subsubdir', 'subsub1')))
    if len(sub2set & reposet) != 1:
        print "sub2set = %r" % (sub2set,)
        print "reposet = %r" % (reposet,)
        print "sub1set and reposet should have exactly one path in common."
    sub3 = pjoin('.', 'circle', 'top1')
    if sym and not (sub3 in reposet):
        print "reposet = %r" % (reposet,)
        print "Symbolic links are supported and %s is not in reposet" % (sub3,)

runtest()
if sym:
    # Simulate not having symlinks.
    del os.path.samestat
    sym = False
    runtest()