Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-argparse-manpage for openSUSE:Factory checked in at 2023-04-16 19:39:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-argparse-manpage (Old) and /work/SRC/openSUSE:Factory/.python-argparse-manpage.new.19717 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-argparse-manpage" Sun Apr 16 19:39:05 2023 rev:12 rq:1079778 version:4.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-argparse-manpage/python-argparse-manpage.changes 2022-11-08 12:52:32.642854034 +0100 +++ /work/SRC/openSUSE:Factory/.python-argparse-manpage.new.19717/python-argparse-manpage.changes 2023-04-16 19:39:06.902379434 +0200 @@ -1,0 +2,8 @@ +Sun Apr 16 17:02:00 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 4.1: + * A new `--include` feature, inspired by `help2man --include`. + * Allow overriding build date with SOURCE_DATE_EPOCH + environment variable in order to make builds reproducible. + +------------------------------------------------------------------- Old: ---- v4.tar.gz New: ---- v4.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-argparse-manpage.spec ++++++ --- /var/tmp/diff_new_pack.QsGtad/_old 2023-04-16 19:39:07.338382029 +0200 +++ /var/tmp/diff_new_pack.QsGtad/_new 2023-04-16 19:39:07.342382053 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-argparse-manpage # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define mod_name argparse-manpage %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-argparse-manpage -Version: 4 +Version: 4.1 Release: 0 Summary: Tool for automatic manual page building from a Python ArgumentParser object License: Apache-2.0 ++++++ v4.tar.gz -> v4.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/.github/workflows/python-diff-lint.yml new/argparse-manpage-4.1/.github/workflows/python-diff-lint.yml --- old/argparse-manpage-4/.github/workflows/python-diff-lint.yml 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/.github/workflows/python-diff-lint.yml 2023-04-15 21:12:23.000000000 +0200 @@ -2,15 +2,37 @@ name: Lint Python issues on: + push: pull_request: branches: [main] +permissions: + contents: read + jobs: python-lint-job: runs-on: ubuntu-latest + + permissions: + # required for all workflows + security-events: write steps: - name: Repository checkout uses: actions/checkout@v3 - - name: VCS Diff Lint - uses: fedora-copr/vcs-diff-lint-action@v0.0.2 + - id: VCS_Diff_Lint + name: VCS Diff Lint + uses: fedora-copr/vcs-diff-lint-action@v1 + + - name: Upload artifact with detected defects in SARIF format + uses: actions/upload-artifact@v3 + with: + name: VCS Diff Lint SARIF + path: ${{ steps.VCS_Diff_Lint.outputs.sarif }} + if: ${{ always() }} + + - name: Upload SARIF to GitHub using github/codeql-action/upload-sarif + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: ${{ steps.VCS_Diff_Lint.outputs.sarif }} + if: ${{ always() }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/.github/workflows/tox.yml new/argparse-manpage-4.1/.github/workflows/tox.yml --- old/argparse-manpage-4/.github/workflows/tox.yml 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/.github/workflows/tox.yml 2023-04-15 21:12:23.000000000 +0200 @@ -16,7 +16,7 @@ - uses: actions/checkout@v2 - name: Run Tox tests id: test - uses: fedora-python/tox-github-action@master + uses: fedora-python/tox-github-action@main with: tox_env: ${{ matrix.tox_env }} strategy: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/MANIFEST.in new/argparse-manpage-4.1/MANIFEST.in --- old/argparse-manpage-4/MANIFEST.in 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/MANIFEST.in 2023-04-15 21:12:23.000000000 +0200 @@ -13,3 +13,4 @@ include examples/raw-description/bin/dg include examples/resalloc/bin/resalloc include examples/resalloc/bin/resalloc-maint +include tests/extra.man diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/NEWS new/argparse-manpage-4.1/NEWS --- old/argparse-manpage-4/NEWS 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/NEWS 2023-04-15 21:12:23.000000000 +0200 @@ -5,6 +5,18 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +News in v4.1 + +* A new `--include` feature, inspired by `help2man --include`. + +* Allow overriding build date with SOURCE_DATE_EPOCH environment variable + in order to make builds reproducible. See this link for more info: + https://reproducible-builds.org/specs/source-date-epoch/ + +* The AUTHORS section was changed to more standard AUTHOR. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + News in v4 * The manual page generator logic is now separated from the 'build_manpages' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/README.md new/argparse-manpage-4.1/README.md --- old/argparse-manpage-4/README.md 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/README.md 2023-04-15 21:12:23.000000000 +0200 @@ -114,14 +114,43 @@ for more info about existing sections - manual_title - the title of the manual, by default "Generated Python Manual", see man (7) man-pages for more instructions +- include - a file of extra material to include; see below for the format The values from setup.cfg override values from setup.py's setup(). - Then run `setup.py build_manpages` to build a manpages for your project. Also, if you used `get_build_py` helper, `setup.py build` then transitively builds the manual pages. +## Include file format + +The include file format is based on GNU `help2man`'s `--include` format. + +The format is simple: + +``` +[section] +text + +/pattern/ +text +``` + +Blocks of verbatim *roff text are inserted into the output either at +the start of the given `section` (case insensitive), or after a +paragraph matching `pattern`, a Python regular expression. + +Lines before the first section are silently ignored and may be used for +comments and the like. + +Other sections are prepended to the automatically produced output for the +standard sections given above, or included near the bottom of the man page, +before the `AUTHOR` section, in the order they occur in the include file. + +Placement of the text within the section may be explicitly requested by +using the syntax `[<section]`, `[=section]` or `[>section]` to place the +additional text before, in place of, or after the default output +respectively. ## Installation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/argparse_manpage/__init__.py new/argparse-manpage-4.1/argparse_manpage/__init__.py --- old/argparse-manpage-4/argparse_manpage/__init__.py 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/argparse_manpage/__init__.py 2023-04-15 21:12:23.000000000 +0200 @@ -2,4 +2,4 @@ argparse_manpage project """ -__version__ = '4' +__version__ = '4.1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/argparse_manpage/cli.py new/argparse-manpage-4.1/argparse_manpage/cli.py --- old/argparse-manpage-4/argparse_manpage/cli.py 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/argparse_manpage/cli.py 2023-04-15 21:12:23.000000000 +0200 @@ -66,6 +66,8 @@ ap.add_argument("--manual-title", help=( "The title of the manual, by default \"Generated Python Manual\". " "See man (7) man-pages for more instructions.")) +ap.add_argument("--include", metavar="FILE", help=( + "File that contains extra material for the man page.")) def args_to_manpage_data(args): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/argparse_manpage/manpage.py new/argparse-manpage-4.1/argparse_manpage/manpage.py --- old/argparse-manpage-4/argparse_manpage/manpage.py 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/argparse_manpage/manpage.py 2023-04-15 21:12:23.000000000 +0200 @@ -1,6 +1,9 @@ from argparse import SUPPRESS, HelpFormatter, _SubParsersAction, _HelpAction from collections import OrderedDict import datetime +import os +import time +import re DEFAULT_GROUP_NAMES = { @@ -39,6 +42,17 @@ "format", "manual_section", "manual_title", + "include", +) + +# manpage sections that are handled specially, so need special treatment +# when --include'ing extra material; see Manpage.add_section. +SPECIAL_MANPAGE_SECTIONS = ( + "author", + "comments", + "description", + "distribution", + "synopsis", ) @@ -94,7 +108,7 @@ needs_separator = False if authors: - ret.append('.SH AUTHORS') + ret.append('.SH AUTHOR') for author in authors: ret.append(".nf") ret.append(author) @@ -137,6 +151,7 @@ self.parser = parser self.format = format self._data = _data or {} + self._match_texts = [] if not getattr(parser, '_manpage', None): self.parser._manpage = [] @@ -146,7 +161,10 @@ self.date = self._data.get("date") if not self.date: - self.date = datetime.datetime.now().strftime('%Y-%m-%d') + builddate = datetime.datetime.utcfromtimestamp( + int(os.environ.get('SOURCE_DATE_EPOCH', time.time())) + ) + self.date = builddate.strftime('%Y-%m-%d') self.source = self._data.get("project_name") if not self.source: @@ -166,6 +184,10 @@ self.description = self._data.get("description") + include = self._data.get("include") + if include is not None: + self.parse_include(include) + def format_text(self, text): # Wrap by parser formatter and convert to manpage format return self.mf.format_text(self.formatter._format_text(text)).strip('\n') @@ -200,26 +222,114 @@ lines.append(_markup(line)) # Synopsis - if self.synopsis: + synopsis_section = self.get_extra_section("synopsis") + if self.synopsis or synopsis_section: lines.append('.SH SYNOPSIS') - lines.append('.B {}'.format(_markup(self.synopsis[0]))) - lines.append(' '.join(self.synopsis[1:])) + if synopsis_section: + lines.append(synopsis_section.content) + else: + lines.append('.B {}'.format(_markup(self.synopsis[0]))) + lines.append(' '.join(self.synopsis[1:])) - lines.extend(self.mf.format_parser(self.parser)) + extra_description = None + description_section = self.get_extra_section("description") + if description_section: + extra_description = description_section.content + lines.extend(self.mf.format_parser(self.parser, extra_description=extra_description)) - if self.parser.epilog != None: + comments_section = self.get_extra_section("comments") + if self.parser.epilog or comments_section: lines.append("") lines.append('.SH COMMENTS') - lines.append(self.format_text(self.parser.epilog)) + if comments_section: + lines.append(comments_section.content) + else: + lines.append(self.format_text(self.parser.epilog)) - # Additional Section - for section in self.parser._manpage: - lines.append('.SH {}'.format(section['heading'].upper())) - lines.append(self.format_text(section['content'])) + # Additional sections + for section in self.parser._manpage: # pylint: disable=protected-access + if section["heading"] not in SPECIAL_MANPAGE_SECTIONS: + lines.append('.SH {}'.format(section['heading'].upper())) + lines.append(section['content']) lines.append("") lines.extend(self.mf.format_footer(self._data)) - return "\n".join(lines).strip("\n") + "\n" + + # Finally add --include sections that match text in the page + final_lines = [] + for line in lines: + final_lines.append(line) + for match in self._match_texts: + if re.search(match['match_text'], line): + final_lines.append(match['content']) + + return "\n".join(final_lines).strip("\n") + "\n" + + def get_extra_section(self, heading): + """ + Return supplementary section for the `Manpage` (created with + `--include`), or `None` + """ + for section in self.parser._manpage: # pylint: disable=protected-access + if section["heading"] == heading: + return section + return None + + def add_section(self, heading, position, content): + """ + Add a supplementary section to a `Manpage` + """ + # Sections that need special treatment + heading = heading.lower() + if heading in ("author", "distribution"): + if heading == "author": + self._data['authors'] = [content] + elif heading == "distribution": + self._data['url'] = content + section = self.get_extra_section(heading) + if section is None: + section = {"heading": heading, "content": ""} + self.parser._manpage.append(section) # pylint: disable=protected-access + if position == '<': + section["content"] = content + section["content"] + elif position == '=': + section["content"] = content + elif position == '>': + section["content"] += content + else: + raise ValueError("invalid position " + position) + + def parse_include(self, file): + """ + Parse include file and add its contents to the man page + """ + def get_section(lines, n): + for i, line in enumerate(lines[n:]): + if re.match(r'[\[/]', line): + return n + i, lines[n:n + i] + return len(lines), lines[n:] + + with open(file) as f: + lines = f.readlines() + i = 0 + while i < len(lines): + # Parse a header line + m = re.match(r"/([^/]+)/$", lines[i]) + if m: + match_text = m.group(1) + i, section_lines = get_section(lines, i + 1) + self._match_texts.append({"match_text": match_text, "content": "".join(section_lines).strip()}) + else: + m = re.match(r"\[([<=>])?([^\]]+)\]$", lines[i]) + if m: + position = m.group(1) or '<' + heading = m.group(2).upper() + if heading == "NAME": + raise ValueError("Invalid include section " + heading) + i, section_lines = get_section(lines, i + 1) + self.add_section(heading, position, "".join(section_lines).strip()) + else: + raise ValueError("Invalid or missing section header in include file %s:\n%s" % (file, lines[i])) def underline(text): @@ -275,7 +385,7 @@ underline(args_string))) return ', '.join(parts) - def _format_parser(self, parser, subcommand=None, aliases=None, help=None): + def _format_parser(self, parser, subcommand=None, aliases=None, help=None, extra_description=None): # The parser "tree" looks like # ---------------------------- # Parser -> [ActionGroup, ActionGroup, ..] @@ -308,13 +418,16 @@ lines.append(self.format_text(parser.format_usage())) - if parser.description: + if parser.description or extra_description: if subcommand: lines.append("") else: lines.append(".SH DESCRIPTION") - lines.append(self.format_text(parser.description)) + if extra_description: + lines.append(extra_description) + if parser.description: + lines.append(self.format_text(parser.description)) is_subsequent_ag = True for group in parser._action_groups: @@ -328,11 +441,11 @@ return lines - def format_parser(self, parser): + def format_parser(self, parser, extra_description=None): """ Return lines Groff formatted text for given parser """ - return self._format_parser(parser) + return self._format_parser(parser, extra_description=extra_description) def _format_action(self, action): parts = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/build_manpages/build_manpage.py new/argparse-manpage-4.1/build_manpages/build_manpage.py --- old/argparse-manpage-4/build_manpages/build_manpage.py 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/build_manpages/build_manpage.py 2023-04-15 21:12:23.000000000 +0200 @@ -5,6 +5,8 @@ import datetime import optparse import argparse +import os +import time import warnings from distutils.core import Command @@ -34,7 +36,9 @@ def __init__(self, parser, values): self._parser = parser self.values = values - self._today = datetime.date.today() + self._today = datetime.datetime.utcfromtimestamp( + int(os.environ.get('SOURCE_DATE_EPOCH', time.time())) + ) if isinstance(parser, argparse.ArgumentParser): self._type = 'argparse' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/argument_groups/expected/test.1 new/argparse-manpage-4.1/examples/argument_groups/expected/test.1 --- old/argparse-manpage-4/examples/argument_groups/expected/test.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/argument_groups/expected/test.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH TEST "2" "2022\-10\-26" "example 0.1.0" "Test Manual" +.TH TEST "2" "2023\-04\-09" "example 0.1.0" "Test Manual" .SH NAME test \- templating system/generator for distributions .SH SYNOPSIS @@ -69,7 +69,7 @@ .TP \fB\-\-doh\fR \fI\,DOH\/\fR -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/copr/expected-output.1 new/argparse-manpage-4.1/examples/copr/expected-output.1 --- old/argparse-manpage-4/examples/copr/expected-output.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/copr/expected-output.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH COPR "1" "2022\-10\-26" "example setup\-py\-overriden" "Generated Python Manual" +.TH COPR "1" "2023\-04\-09" "example setup\-py\-overriden" "Generated Python Manual" .SH NAME copr .SH SYNOPSIS @@ -998,7 +998,7 @@ .SH COMMENTS dummy text -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/old_format/expected-output.1 new/argparse-manpage-4.1/examples/old_format/expected-output.1 --- old/argparse-manpage-4/examples/old_format/expected-output.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/old_format/expected-output.1 2023-04-15 21:12:23.000000000 +0200 @@ -16,7 +16,7 @@ .TP .B \-q, \-\-quiet don't print status messages to stdout -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/old_format_file_name/expected-output.1 new/argparse-manpage-4.1/examples/old_format_file_name/expected-output.1 --- old/argparse-manpage-4/examples/old_format_file_name/expected-output.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/old_format_file_name/expected-output.1 2023-04-15 21:12:23.000000000 +0200 @@ -16,7 +16,7 @@ .TP .B \-q, \-\-quiet don't print status messages to stdout -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/osc/expected-output.1 new/argparse-manpage-4.1/examples/osc/expected-output.1 --- old/argparse-manpage-4/examples/osc/expected-output.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/osc/expected-output.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH OSC "1" "2022\-10\-26" "osc 1.0" "Generated Python Manual" +.TH OSC "1" "2023\-04\-09" "osc 1.0" "Generated Python Manual" .SH NAME osc \- openSUSE commander command\-line .SH SYNOPSIS @@ -91,7 +91,7 @@ .RE -.SH AUTHORS +.SH AUTHOR .nf Contributors to the osc project. See the project's GIT history for the complete list. .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/raw-description/expected-output.1 new/argparse-manpage-4.1/examples/raw-description/expected-output.1 --- old/argparse-manpage-4/examples/raw-description/expected-output.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/raw-description/expected-output.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH DG "1" "2022\-10\-26" "example 0.1.0" "Generated Python Manual" +.TH DG "1" "2023\-04\-09" "example 0.1.0" "Generated Python Manual" .SH NAME dg \- templating system/generator for distributions .SH SYNOPSIS @@ -65,7 +65,7 @@ \fB\-\-multispec\-combinations\fR Print available multispec combinations -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/resalloc/expected/man/resalloc-maint.1 new/argparse-manpage-4.1/examples/resalloc/expected/man/resalloc-maint.1 --- old/argparse-manpage-4/examples/resalloc/expected/man/resalloc-maint.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/resalloc/expected/man/resalloc-maint.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH RESALLOC\-MAINT "1" "2022\-10\-26" "resalloc 0" "Generated Python Manual" +.TH RESALLOC\-MAINT "1" "2023\-04\-09" "resalloc 0" "Generated Python Manual" .SH NAME resalloc\-maint .SH SYNOPSIS @@ -40,7 +40,7 @@ .SH COMMAND \fI\,'resalloc\-maint ticket\-list'\/\fR usage: resalloc\-maint ticket\-list [\-h] -.SH AUTHORS +.SH AUTHOR .nf Pavel Raiskup <prais...@redhat.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/examples/resalloc/expected/man/resalloc.1 new/argparse-manpage-4.1/examples/resalloc/expected/man/resalloc.1 --- old/argparse-manpage-4/examples/resalloc/expected/man/resalloc.1 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/examples/resalloc/expected/man/resalloc.1 2023-04-15 21:12:23.000000000 +0200 @@ -1,4 +1,4 @@ -.TH RESALLOC "1" "2022\-10\-26" "resalloc 0" "Generated Python Manual" +.TH RESALLOC "1" "2023\-04\-09" "resalloc 0" "Generated Python Manual" .SH NAME resalloc .SH SYNOPSIS @@ -57,7 +57,7 @@ \fBticket\fR ID of ticket to be closed -.SH AUTHORS +.SH AUTHOR .nf Pavel Raiskup <prais...@redhat.com> .fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/tests/extra.man new/argparse-manpage-4.1/tests/extra.man --- old/argparse-manpage-4/tests/extra.man 1970-01-01 01:00:00.000000000 +0100 +++ new/argparse-manpage-4.1/tests/extra.man 2023-04-15 21:12:23.000000000 +0200 @@ -0,0 +1,5 @@ +[EXTRA SECTION] +This is an extra section. + +/John Doe/ +Developer extraordinaire. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/argparse-manpage-4/tests/test_script.py new/argparse-manpage-4.1/tests/test_script.py --- old/argparse-manpage-4/tests/test_script.py 2022-10-31 09:31:52.000000000 +0100 +++ new/argparse-manpage-4.1/tests/test_script.py 2023-04-15 21:12:23.000000000 +0200 @@ -8,6 +8,7 @@ import sys import subprocess import tempfile +import time SIMPLE_FILE_CONTENTS = """ import argparse @@ -44,17 +45,22 @@ .TP \\fBtest\\fR +.SH EXTRA SECTION +This is an extra section. -.SH AUTHORS +.SH AUTHOR .nf John Doe <j...@example.com> +Developer extraordinaire. .fi .nf Mr. Foo <m...@example.com> and friends .fi """ -DATE = datetime.datetime.now().strftime("%Y\\-%m\\-%d") +DATE = datetime.datetime.utcfromtimestamp( + int(os.environ.get('SOURCE_DATE_EPOCH', time.time())) + ).strftime("%Y\\-%m\\-%d") class TestsArgparseManpageScript: def setup_method(self, _): @@ -131,6 +137,7 @@ "--project-name", "Proj-On-Cmdline", "--description", "some description", "--long-description", "Some long description.", # unused + "--include", "tests/extra.man", ] output = subprocess.check_output(cmd).decode("utf-8") name="progname"