view tests/test-hgwebdir-gc.py @ 48480:cfb4f1dee978

pytype: stop excluding wireprotov2server.py This fixes: File "/mnt/c/Users/Matt/hg/mercurial/wireprotov2server.py", line 584, in _capabilitiesv2: unsupported operand type(s) for item assignment: Set[bytes] [unsupported-operands] No attribute '__setitem__' on Set[bytes] File "/mnt/c/Users/Matt/hg/mercurial/wireprotov2server.py", line 611, in _capabilitiesv2: No attribute 'append' on dict [attribute-error] In Union[List[bytes], List[nothing], dict] Called from (traceback): line 543, in httpv2apidescriptor Differential Revision: https://phab.mercurial-scm.org/D11919
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 13 Dec 2021 16:42:36 -0500
parents de2e04fe4897
children 6000f5b25c9b
line wrap: on
line source

from __future__ import absolute_import

import os
from mercurial.hgweb import hgwebdir_mod

hgwebdir = hgwebdir_mod.hgwebdir

os.mkdir(b'webdir')
os.chdir(b'webdir')

webdir = os.path.realpath(b'.')


def trivial_response(req, res):
    return []


def make_hgwebdir(gc_rate=None):
    config = os.path.join(webdir, b'hgwebdir.conf')
    with open(config, 'wb') as configfile:
        configfile.write(b'[experimental]\n')
        if gc_rate is not None:
            configfile.write(b'web.full-garbage-collection-rate=%d\n' % gc_rate)
    hg_wd = hgwebdir(config)
    hg_wd._runwsgi = trivial_response
    return hg_wd


def process_requests(webdir_instance, number):
    # we don't care for now about passing realistic arguments
    for _ in range(number):
        for chunk in webdir_instance.run_wsgi(None, None):
            pass


without_gc = make_hgwebdir(gc_rate=0)
process_requests(without_gc, 5)
assert without_gc.requests_count == 5
assert without_gc.gc_full_collections_done == 0

with_gc = make_hgwebdir(gc_rate=2)
process_requests(with_gc, 5)
assert with_gc.requests_count == 5
assert with_gc.gc_full_collections_done == 2

with_systematic_gc = make_hgwebdir()  # default value of the setting
process_requests(with_systematic_gc, 3)
assert with_systematic_gc.requests_count == 3
assert with_systematic_gc.gc_full_collections_done == 3