Ticket #13278: 13278_review2.patch

File 13278_review2.patch, 7.2 KB (added by jdemeyer, 7 years ago)
  • sage/doctest/forker.py

    # HG changeset patch
    # User David Roe <roed.math@gmail.com>
    # Date 1363509697 21600
    # Node ID 75000abe6b4eb415e30777d04483ad12e59ab6b5
    # Parent  3bb4af2b8adcd46d3509d767b6e18981f8a0857d
    show_skipped reviewer patch
    
    diff --git a/sage/doctest/forker.py b/sage/doctest/forker.py
    a b  
    18631863        sage: DTT = DocTestTask(FDS)
    18641864        sage: DC = DocTestController(DD,[filename])
    18651865        sage: ntests, results = DTT(options=DD)
    1866         sage: ntests
    1867         309
     1866        sage: ntests >= 300 or ntests
     1867        True
    18681868        sage: sorted(results.keys())
    18691869        ['cputime', 'err', 'failures', 'optionals', 'walltime']
    18701870    """
     
    19251925            sage: ntests, runner = DTT(options=DD)
    19261926            sage: runner.failures
    19271927            0
    1928             sage: ntests
    1929             206
     1928            sage: ntests >= 200 or ntests
     1929            True
    19301930        """
    19311931        result = None
    19321932        try:
  • sage/doctest/parsing.py

    diff --git a/sage/doctest/parsing.py b/sage/doctest/parsing.py
    a b  
    6060        sage: sorted(list(parse_optional_tags("    sage: factor(10^(10^10) + 1) # LoNg TiME, NoT TeSTED; OptioNAL -- P4cka9e")))
    6161        ['long time', 'not tested', 'p4cka9e']
    6262        sage: parse_optional_tags("    sage: raise RuntimeError # known bug")
    63         set(['known bug'])
     63        set(['bug'])
    6464        sage: sorted(list(parse_optional_tags("    sage: determine_meaning_of_life() # long time, not implemented")))
    6565        ['long time', 'not implemented']
    6666
     
    8181
    8282    tags = []
    8383    for m in optional_regex.finditer(comment):
    84         if m.group(1):
    85             tags.append(m.group(1))
     84        cmd = m.group(1)
     85        if cmd == 'known bug':
     86            tags.append('bug') # so that such tests will be run by sage -t ... -only-optional=bug
     87        elif cmd:
     88            tags.append(cmd)
    8689        else:
    8790            tags.extend(m.group(3).split() or [""])
    8891    return set(tags)
     
    512515            if isinstance(item, doctest.Example):
    513516                optional_tags = parse_optional_tags(item.source)
    514517                if optional_tags:
    515                     if 'known bug' in optional_tags:
    516                         optional_tags.remove('known bug')
    517                         optional_tags.add('bug') # so that such tests will be run by sage -t ... -only-optional=bug
    518518                    for tag in optional_tags:
    519519                        self.optionals[tag] += 1
    520520                    if ('not implemented' in optional_tags) or ('not tested' in optional_tags):
  • sage/doctest/reporting.py

    diff --git a/sage/doctest/reporting.py b/sage/doctest/reporting.py
    a b  
    270270        If the user has requested that we report on skipped doctests,
    271271        we do so::
    272272
    273             sage: DC.options = DocTestDefaults(show_skipped = True)
     273            sage: DC.options = DocTestDefaults(show_skipped=True)
    274274            sage: optionals = collections.defaultdict(int)
    275275            sage: optionals['magma'] = 5; optionals['long time'] = 4; optionals[''] = 1; optionals['not tested'] = 2
    276276            sage: D = DictAsObject(dict(err=None,optionals=optionals))
     
    398398                        try:
    399399                            optionals = result_dict.optionals
    400400                        except AttributeError:
    401                             pass
    402                         else:
    403                             if self.controller.options.optional is not True: # if True we test all optional tags
    404                                 tags = sorted(optionals.keys())
    405                                 untested = optionals["not tested"] + optionals["not implemented"]
    406                                 seen_other = False
    407                                 for tag in tags:
    408                                     nskipped = optionals[tag]
    409                                     if tag == "long time":
    410                                         if not self.controller.options.long:
    411                                             seen_other = True
    412                                             log("    %s not run"%(count_noun(nskipped, "long test")))
    413                                     elif (tag not in self.controller.options.optional and
    414                                           tag not in ["not tested", "not implemented"]):
     401                            optionals = dict()
     402                        if self.controller.options.optional is not True: # if True we test all optional tags
     403                            untested = 0  # Report not tested/implemented tests at the end
     404                            seen_other = False
     405                            for tag in sorted(optionals.keys()):
     406                                nskipped = optionals[tag]
     407                                if tag == "long time":
     408                                    if not self.controller.options.long:
     409                                        seen_other = True
     410                                        log("    %s not run"%(count_noun(nskipped, "long test")))
     411                                elif tag in ("not tested", "not implemented"):
     412                                    untested += nskipped
     413                                else:
     414                                    if tag not in self.controller.options.optional:
    415415                                        seen_other = True
    416416                                        if tag == "bug":
    417417                                            log("    %s not run due to known bugs"%(count_noun(nskipped, "test")))
     
    419419                                            log("    %s not run"%(count_noun(nskipped, "unlabeled test")))
    420420                                        else:
    421421                                            log("    %s not run"%(count_noun(nskipped, tag + " test")))
    422                                 if untested:
    423                                     log ("    %s skipped"%(count_noun(untested, "%stest"%("other " if seen_other else ""))))
     422                            if untested:
     423                                log ("    %s skipped"%(count_noun(untested, "%stest"%("other " if seen_other else ""))))
    424424                    log("    [%s, %s%.1f s]" % (count_noun(ntests, "test"), "%s, "%(count_noun(f, "failure")) if f else "", wall))
    425425            self.sources_completed += 1
    426426
  • sage/doctest/test.py

    diff --git a/sage/doctest/test.py b/sage/doctest/test.py
    a b  
    219219
    220220Test the ``--show-skipped`` option::
    221221
    222     sage: subprocess.call(["sage", "-t", "--show-skipped", "show_skipped.rst"], cwd=tests_dir)
     222    sage: subprocess.call(["sage", "-t", "--show-skipped", "show_skipped.rst"], cwd=tests_dir)  # long time
    223223    Running doctests ...
    224224    Doctesting 1 file.
    225225    sage -t show_skipped.rst
     
    237237
    238238Optional tests are run correctly::
    239239
    240     sage: subprocess.call(["sage", "-t", "--long", "--show-skipped", "--optional=sage,gap", "show_skipped.rst"], cwd=tests_dir)
     240    sage: subprocess.call(["sage", "-t", "--long", "--show-skipped", "--optional=sage,gap", "show_skipped.rst"], cwd=tests_dir)  # long time
    241241    Running doctests ...
    242242    Doctesting 1 file.
    243     sage -t show_skipped.rst
     243    sage -t --long show_skipped.rst
    244244        1 unlabeled test not run
    245245        2 tests not run due to known bugs
    246246        1 other test skipped