tests/basic_test_result.py
author Gregory Szorc <gregory.szorc@gmail.com>
Mon, 08 Oct 2018 18:17:12 -0700
changeset 40176 41263df08109
parent 38621 f4a214300957
child 43076 2372284d9457
permissions -rw-r--r--
wireprotov2: change how revisions are specified to changesetdata Right now, we have a handful of arguments for specifying the revisions whose data should be returned. Defining how all these arguments interact when various combinations are present is difficult. This commit establishes a new, generic mechanism for specifying revisions. Instead of a hodgepodge of arguments defining things, we have a list of dicts that specify revision selectors. The final set of revisions is a union of all these selectors. We implement support for specifying revisions based on: * An explicit list of changeset revisions * An explicit list of changeset revisions plus ancestry depth * A DAG range between changeset roots and heads If you squint hard enough, this problem has already been solved by revsets. But I'm reluctant to expose revsets to the wire protocol because that would require servers to implement a revset parser. Plus there are security and performance implications: the set of revision selectors needs to be narrowly and specifically tailored for what is appropriate to be executing on a server. Perhaps there would be a way for us to express the "parse tree" of a revset query, for example. I'm not sure. We can explore this space another time. For now, the new mechanism should bring sufficient flexibility while remaining relatively simple. The selector "types" are prefixed with "changeset" because I plan to add manifest and file-flavored selectors as well. This will enable us to e.g. select file revisions based on a range of changeset revisions. Differential Revision: https://phab.mercurial-scm.org/D4979
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38621
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
     1
from __future__ import absolute_import, print_function
38616
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     2
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     3
import unittest
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     4
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     5
class TestResult(unittest._TextTestResult):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     6
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     7
    def __init__(self, options, *args, **kwargs):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     8
        super(TestResult, self).__init__(*args, **kwargs)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
     9
        self._options = options
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    10
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    11
        # unittest.TestResult didn't have skipped until 2.7. We need to
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    12
        # polyfill it.
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    13
        self.skipped = []
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    14
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    15
        # We have a custom "ignored" result that isn't present in any Python
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    16
        # unittest implementation. It is very similar to skipped. It may make
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    17
        # sense to map it into skip some day.
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    18
        self.ignored = []
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    19
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    20
        self.times = []
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    21
        self._firststarttime = None
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    22
        # Data stored for the benefit of generating xunit reports.
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    23
        self.successes = []
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    24
        self.faildata = {}
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    25
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    26
    def addFailure(self, test, reason):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    27
        print("FAILURE!", test, reason)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    28
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    29
    def addSuccess(self, test):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    30
        print("SUCCESS!", test)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    31
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    32
    def addError(self, test, err):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    33
        print("ERR!", test, err)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    34
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    35
    # Polyfill.
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    36
    def addSkip(self, test, reason):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    37
        print("SKIP!", test, reason)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    38
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    39
    def addIgnore(self, test, reason):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    40
        print("IGNORE!", test, reason)
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    41
38621
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    42
    def onStart(self, test):
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    43
        print("ON_START!", test)
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    44
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    45
    def onEnd(self):
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    46
        print("ON_END!")
f4a214300957 run-tests: add missing life-cycle methods on the example custom test result
Boris Feld <boris.feld@octobus.net>
parents: 38616
diff changeset
    47
38616
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    48
    def addOutputMismatch(self, test, ret, got, expected):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    49
        return False
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    50
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    51
    def stopTest(self, test, interrupted=False):
c44ae5997869 run-tests: add support for external test result
Boris Feld <boris.feld@octobus.net>
parents:
diff changeset
    52
        super(TestResult, self).stopTest(test)