tests/test-hgwebdir-paths.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 07 Mar 2024 10:55:22 +0100
changeset 51531 f85f23f1479b
parent 48875 6000f5b25c9b
permissions -rw-r--r--
branchcache: skip entries that are topological heads in the on disk file In the majority of cases, topological heads are also branch heads. We have efficient way to get the topological heads and efficient way to retrieve their branch information. So there is little value in putting them in the branch cache file explicitly. On the contrary, writing them explicitly tend to create very large cache file that are inefficient to read and update. So the branch cache v3 format is no longer including them. This changeset focus on the format aspect and have no focus on the performance aspect. We will cover that later.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
     1
import os
28932
4eac86331acb tests: make test-hgwebdir-paths use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 15381
diff changeset
     2
from mercurial import (
4eac86331acb tests: make test-hgwebdir-paths use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 15381
diff changeset
     3
    hg,
4eac86331acb tests: make test-hgwebdir-paths use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 15381
diff changeset
     4
    ui as uimod,
4eac86331acb tests: make test-hgwebdir-paths use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 15381
diff changeset
     5
)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
     6
from mercurial.hgweb import hgwebdir_mod
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
     7
28932
4eac86331acb tests: make test-hgwebdir-paths use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 15381
diff changeset
     8
hgwebdir = hgwebdir_mod.hgwebdir
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
     9
37879
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    10
os.mkdir(b'webdir')
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    11
os.chdir(b'webdir')
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    12
37879
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    13
webdir = os.path.realpath(b'.')
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    14
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28932
diff changeset
    15
u = uimod.ui.load()
37879
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    16
hg.repository(u, b'a', create=1)
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    17
hg.repository(u, b'b', create=1)
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    18
os.chdir(b'b')
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    19
hg.repository(u, b'd', create=1)
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    20
os.chdir(b'..')
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    21
hg.repository(u, b'c', create=1)
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    22
os.chdir(b'..')
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    23
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    24
paths = {
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    25
    b't/a/': b'%s/a' % webdir,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    26
    b'b': b'%s/b' % webdir,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    27
    b'coll': b'%s/*' % webdir,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    28
    b'rcoll': b'%s/**' % webdir,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37879
diff changeset
    29
}
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    30
37879
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    31
config = os.path.join(webdir, b'hgwebdir.conf')
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    32
configfile = open(config, 'wb')
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    33
configfile.write(b'[paths]\n')
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    34
for k, v in paths.items():
37879
81455f482478 tests: port test-hgwebdir-paths.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
    35
    configfile.write(b'%s = %s\n' % (k, v))
8529
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    36
configfile.close()
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    37
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    38
confwd = hgwebdir(config)
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    39
dictwd = hgwebdir(paths)
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    40
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    41
assert len(confwd.repos) == len(dictwd.repos), 'different numbers'
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    42
assert len(confwd.repos) == 9, 'expected 9 repos, found %d' % len(confwd.repos)
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    43
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    44
found = dict(confwd.repos)
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    45
for key, path in dictwd.repos:
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    46
    assert key in found, 'repository %s was not found' % key
a767998f0a78 hgweb: make hgwebdir handle dict/list paths the same as config paths
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
diff changeset
    47
    assert found[key] == path, 'different paths for repo %s' % key