Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-specfile for openSUSE:Factory
checked in at 2023-05-12 20:37:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-specfile (Old)
and /work/SRC/openSUSE:Factory/.python-specfile.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-specfile"
Fri May 12 20:37:08 2023 rev:11 rq:1086542 version:0.17.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-specfile/python-specfile.changes
2023-04-25 16:44:47.930929305 +0200
+++
/work/SRC/openSUSE:Factory/.python-specfile.new.1533/python-specfile.changes
2023-05-12 20:40:00.134762606 +0200
@@ -1,0 +2,11 @@
+Thu May 11 12:19:01 UTC 2023 - David Anes <[email protected]>
+
+- Update to version 0.17.0:
+ * Added a new guess_packager() function that uses similar
+ heuristics as rpmdev-packager, meaning that the
+ Specfile.add_changelog_entry() method no longer requires
+ rpmdev-packager to guess the changelog entry author. (#220)
+ * The Specfile.add_changelog_entry() method now uses dates based
+ on UTC instead of the local timezone. (#223)
+
+-------------------------------------------------------------------
Old:
----
specfile-0.16.0.tar.gz
New:
----
specfile-0.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-specfile.spec ++++++
--- /var/tmp/diff_new_pack.7DUmT3/_old 2023-05-12 20:40:00.606765200 +0200
+++ /var/tmp/diff_new_pack.7DUmT3/_new 2023-05-12 20:40:00.614765244 +0200
@@ -18,7 +18,7 @@
%define skip_python38 1
Name: python-specfile
-Version: 0.16.0
+Version: 0.17.0
Release: 0
Summary: A library for parsing and manipulating RPM spec files
License: MIT
@@ -31,14 +31,13 @@
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros
# SECTION test requirements
-BuildRequires: %{python_module rpm}
+BuildRequires: git
BuildRequires: %{python_module flexmock}
BuildRequires: %{python_module pytest}
-BuildRequires: %{python_module typing-extensions}
+BuildRequires: %{python_module rpm}
# /SECTION
BuildRequires: fdupes
Requires: python-rpm
-Requires: python-typing-extensions
BuildArch: noarch
++++++ specfile-0.16.0.tar.gz -> specfile-0.17.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/.github/workflows/pypi-publish.yml
new/specfile-0.17.0/.github/workflows/pypi-publish.yml
--- old/specfile-0.16.0/.github/workflows/pypi-publish.yml 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/.github/workflows/pypi-publish.yml 2023-05-11
11:43:56.000000000 +0200
@@ -10,10 +10,12 @@
jobs:
build-n-publish:
runs-on: ubuntu-latest
+ permissions:
+ id-token: write # for trusted publishing
steps:
- uses: actions/checkout@v3
- - uses: actions/setup-python@v2
+ - uses: actions/setup-python@v4
- name: Build a source tarball and a binary wheel
# https://pypa-build.readthedocs.io
@@ -25,5 +27,4 @@
# https://github.com/pypa/gh-action-pypi-publish
uses: pypa/gh-action-pypi-publish@release/v1
with:
- password: ${{ secrets.PYPI_API_TOKEN }}
verbose: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/CHANGELOG.md
new/specfile-0.17.0/CHANGELOG.md
--- old/specfile-0.16.0/CHANGELOG.md 2023-04-20 18:57:54.000000000 +0200
+++ new/specfile-0.17.0/CHANGELOG.md 2023-05-11 11:43:56.000000000 +0200
@@ -1,3 +1,8 @@
+# 0.17.0
+
+- Added a new `guess_packager()` function that uses similar heuristics as
`rpmdev-packager`, meaning that the `Specfile.add_changelog_entry()` method no
longer requires `rpmdev-packager` to guess the changelog entry author. (#220)
+- The `Specfile.add_changelog_entry()` method now uses dates based on UTC
instead of the local timezone. (#223)
+
# 0.16.0
- Added `Specfile.has_autorelease` property to detect if a spec file uses the
`%autorelease` macro. (#221)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/Makefile new/specfile-0.17.0/Makefile
--- old/specfile-0.16.0/Makefile 2023-04-20 18:57:54.000000000 +0200
+++ new/specfile-0.17.0/Makefile 2023-05-11 11:43:56.000000000 +0200
@@ -1,12 +1,14 @@
TEST_IMAGE = specfile-tests
CONTAINER_ENGINE ?= $(shell command -v podman 2> /dev/null || echo docker)
+COLOR ?= yes
+COV_REPORT ?= --cov=specfile --cov-report=term-missing
TEST_TARGET ?= ./tests/unit ./tests/integration
.PHONY: check install build-test-image check-in-container
check:
- PYTHONPATH=$(CURDIR) PYTHONDONTWRITEBYTECODE=1 python3 -m pytest
--verbose --showlocals $(TEST_TARGET) --full-trace
+ PYTHONPATH=$(CURDIR) PYTHONDONTWRITEBYTECODE=1 python3 -m pytest
--color=$(COLOR) --verbose --showlocals $(TEST_TARGET) $(COV_REPORT)
--full-trace
install:
pip3 install --user .
@@ -15,4 +17,9 @@
$(CONTAINER_ENGINE) build --rm --tag $(TEST_IMAGE) -f
Containerfile.tests
check-in-container:
- $(CONTAINER_ENGINE) run --rm -ti -v $(CURDIR):/src:Z -w /src --env
TEST_TARGET $(TEST_IMAGE) make check
+ $(CONTAINER_ENGINE) run --rm -ti \
+ -v $(CURDIR):/src:Z -w /src \
+ --env TEST_TARGET \
+ --env COLOR \
+ --env COV_REPORT \
+ $(TEST_IMAGE) make check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/PKG-INFO new/specfile-0.17.0/PKG-INFO
--- old/specfile-0.16.0/PKG-INFO 2023-04-20 18:58:05.934381500 +0200
+++ new/specfile-0.17.0/PKG-INFO 2023-05-11 11:44:06.806230300 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: specfile
-Version: 0.16.0
+Version: 0.17.0
Summary: A library for parsing and manipulating RPM spec files.
Home-page: https://github.com/packit/specfile
Author: Red Hat
@@ -197,7 +197,8 @@
#### Changelog
```python
-# adding a new entry, author is determined using rpmdev-packager (if available)
+# adding a new entry, author is automatically determined
+# (using the same heuristics that rpmdev-packager uses) if possible
specfile.add_changelog_entry('New upstream release 2.1')
# adding a new entry, specifying author and timestamp explicitly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/README.md
new/specfile-0.17.0/README.md
--- old/specfile-0.16.0/README.md 2023-04-20 18:57:54.000000000 +0200
+++ new/specfile-0.17.0/README.md 2023-05-11 11:43:56.000000000 +0200
@@ -170,7 +170,8 @@
#### Changelog
```python
-# adding a new entry, author is determined using rpmdev-packager (if available)
+# adding a new entry, author is automatically determined
+# (using the same heuristics that rpmdev-packager uses) if possible
specfile.add_changelog_entry('New upstream release 2.1')
# adding a new entry, specifying author and timestamp explicitly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/fedora/python-specfile.spec
new/specfile-0.17.0/fedora/python-specfile.spec
--- old/specfile-0.16.0/fedora/python-specfile.spec 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/fedora/python-specfile.spec 2023-05-11
11:43:56.000000000 +0200
@@ -13,7 +13,7 @@
Name: python-specfile
-Version: 0.16.0
+Version: 0.17.0
Release: 1%{?dist}
Summary: A library for parsing and manipulating RPM spec files
@@ -25,6 +25,10 @@
BuildArch: noarch
BuildRequires: python%{python3_pkgversion}-devel
+%if %{with tests}
+# tests/unit/test_guess_packager.py
+BuildRequires: git-core
+%endif
%description
@@ -67,6 +71,9 @@
%changelog
+* Thu May 11 2023 Packit Team <[email protected]> - 0.17.0-1
+- New upstream release 0.17.0
+
* Thu Apr 20 2023 Packit Team <[email protected]> - 0.16.0-1
- New upstream release 0.16.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/files/install-requirements-pip.yaml
new/specfile-0.17.0/files/install-requirements-pip.yaml
--- old/specfile-0.16.0/files/install-requirements-pip.yaml 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/files/install-requirements-pip.yaml 2023-05-11
11:43:56.000000000 +0200
@@ -3,10 +3,3 @@
hosts: all
tasks:
- include_tasks: tasks/generic-dnf-requirements.yaml
- - name: Install deps from PyPI
- pip:
- name: "{{ item }}"
- with_items:
- - rpm-py-installer
- - typing-extensions
- become: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/specfile-0.16.0/files/tasks/generic-dnf-requirements.yaml
new/specfile-0.17.0/files/tasks/generic-dnf-requirements.yaml
--- old/specfile-0.16.0/files/tasks/generic-dnf-requirements.yaml
2023-04-20 18:57:54.000000000 +0200
+++ new/specfile-0.17.0/files/tasks/generic-dnf-requirements.yaml
2023-05-11 11:43:56.000000000 +0200
@@ -6,5 +6,4 @@
- git
- dnf-utils
- python3-pip
- - rpmdevtools
become: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/files/tasks/rpm-deps.yaml
new/specfile-0.17.0/files/tasks/rpm-deps.yaml
--- old/specfile-0.16.0/files/tasks/rpm-deps.yaml 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/files/tasks/rpm-deps.yaml 2023-05-11
11:43:56.000000000 +0200
@@ -1,6 +1,6 @@
---
+# Placeholder
- name: Install runtime RPM dependencies
dnf:
- name:
- - python3-typing-extensions
+ name: []
become: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/files/tasks/rpm-test-deps.yaml
new/specfile-0.17.0/files/tasks/rpm-test-deps.yaml
--- old/specfile-0.16.0/files/tasks/rpm-test-deps.yaml 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/files/tasks/rpm-test-deps.yaml 2023-05-11
11:43:56.000000000 +0200
@@ -4,4 +4,5 @@
name:
- python3-flexmock
- python3-pytest
+ - python3-pytest-cov
become: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/specfile/changelog.py
new/specfile-0.17.0/specfile/changelog.py
--- old/specfile-0.16.0/specfile/changelog.py 2023-04-20 18:57:54.000000000
+0200
+++ new/specfile-0.17.0/specfile/changelog.py 2023-05-11 11:43:56.000000000
+0200
@@ -4,13 +4,19 @@
import collections
import copy
import datetime
+import getpass
+import os
+import pwd
import re
+import shutil
+import subprocess
from typing import List, Optional, SupportsIndex, Union, overload
import rpm
from specfile.exceptions import SpecfileException
from specfile.formatter import formatted
+from specfile.macros import Macros
from specfile.sections import Section
from specfile.utils import EVR
@@ -361,3 +367,49 @@
result.extend(entry.content)
result.extend(entry._following_lines)
return result
+
+
+def _getent_name() -> str:
+ username = getpass.getuser()
+ pwd_struct = pwd.getpwnam(username)
+ # Use the plain username if the name field is empty
+ return pwd_struct.pw_gecos or username
+
+
+def guess_packager() -> str:
+ """
+ Guess the name and email of a packager to use for changelog entries.
+ This uses similar logic to rpmdev-packager.
+ The following places are searched for this value (in this order):
+ - $RPM_PACKAGER envvar
+ - %packager macro
+ - git config
+ - Unix username
+
+ Returns:
+ A string to use for the changelog entry author.
+ If nothing was detected, an empty string is returned.
+ """
+ if "RPM_PACKAGER" in os.environ:
+ return os.environ["RPM_PACKAGER"]
+
+ packager = Macros.expand("%packager")
+ if packager != "%packager":
+ return packager
+
+ email: str = ""
+ fullname: str = ""
+
+ if shutil.which("git"):
+ email = subprocess.run(
+ ["git", "config", "user.email"], capture_output=True, text=True
+ ).stdout.strip()
+ fullname = subprocess.run(
+ ["git", "config", "user.name"], capture_output=True, text=True
+ ).stdout.strip()
+ if not fullname:
+ fullname = _getent_name()
+
+ if fullname and email:
+ return f"{fullname} <{email}>"
+ return email or fullname
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/specfile/specfile.py
new/specfile-0.17.0/specfile/specfile.py
--- old/specfile-0.16.0/specfile/specfile.py 2023-04-20 18:57:54.000000000
+0200
+++ new/specfile-0.17.0/specfile/specfile.py 2023-05-11 11:43:56.000000000
+0200
@@ -3,7 +3,6 @@
import datetime
import re
-import subprocess
import types
from dataclasses import dataclass
from pathlib import Path
@@ -11,7 +10,7 @@
import rpm
-from specfile.changelog import Changelog, ChangelogEntry
+from specfile.changelog import Changelog, ChangelogEntry, guess_packager
from specfile.context_management import ContextManager
from specfile.exceptions import SourceNumberException, SpecfileException
from specfile.formatter import formatted
@@ -421,7 +420,7 @@
Adds a new %changelog entry. Does nothing if there is no %changelog
section
or if %autochangelog is being used.
- If not specified, author and e-mail will be determined using
rpmdev-packager, if available.
+ If not specified, author and e-mail will be automatically determined,
if possible.
Timestamp, if not set, will be set to current time (in local timezone).
Args:
@@ -450,12 +449,11 @@
if changelog and changelog[-1].extended_timestamp:
timestamp = datetime.datetime.now().astimezone()
else:
- timestamp = datetime.date.today()
+ timestamp =
datetime.datetime.now(datetime.timezone.utc).date()
if author is None:
- try:
- author =
subprocess.check_output("rpmdev-packager").decode().strip()
- except (FileNotFoundError, subprocess.CalledProcessError) as e:
- raise SpecfileException("Failed to auto-detect author")
from e
+ author = guess_packager()
+ if not author:
+ raise SpecfileException("Failed to auto-detect author")
elif email is not None:
author += f" <{email}>"
if changelog:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/specfile.egg-info/PKG-INFO
new/specfile-0.17.0/specfile.egg-info/PKG-INFO
--- old/specfile-0.16.0/specfile.egg-info/PKG-INFO 2023-04-20
18:58:05.000000000 +0200
+++ new/specfile-0.17.0/specfile.egg-info/PKG-INFO 2023-05-11
11:44:06.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: specfile
-Version: 0.16.0
+Version: 0.17.0
Summary: A library for parsing and manipulating RPM spec files.
Home-page: https://github.com/packit/specfile
Author: Red Hat
@@ -197,7 +197,8 @@
#### Changelog
```python
-# adding a new entry, author is determined using rpmdev-packager (if available)
+# adding a new entry, author is automatically determined
+# (using the same heuristics that rpmdev-packager uses) if possible
specfile.add_changelog_entry('New upstream release 2.1')
# adding a new entry, specifying author and timestamp explicitly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/specfile.egg-info/SOURCES.txt
new/specfile-0.17.0/specfile.egg-info/SOURCES.txt
--- old/specfile-0.16.0/specfile.egg-info/SOURCES.txt 2023-04-20
18:58:05.000000000 +0200
+++ new/specfile-0.17.0/specfile.egg-info/SOURCES.txt 2023-05-11
11:44:06.000000000 +0200
@@ -134,6 +134,7 @@
tests/unit/__init__.py
tests/unit/test_changelog.py
tests/unit/test_formatter.py
+tests/unit/test_guess_packager.py
tests/unit/test_macro_definitions.py
tests/unit/test_macros.py
tests/unit/test_options.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/tests/full.fmf
new/specfile-0.17.0/tests/full.fmf
--- old/specfile-0.16.0/tests/full.fmf 2023-04-20 18:57:54.000000000 +0200
+++ new/specfile-0.17.0/tests/full.fmf 2023-05-11 11:43:56.000000000 +0200
@@ -1,8 +1,10 @@
summary:
Unit & integration tests
require:
+ - git-core
- python3-flexmock
- python3-pytest
+ - python3-pytest-cov
- python3-specfile
adjust:
- when: "distro == rhel-9 or distro == centos-9 or distro == centos-stream-9"
@@ -12,4 +14,4 @@
tag:
- basic
tier: 1
-test: python3 -m pytest --verbose
+test: python3 -m pytest --verbose --cov=specfile --cov-report=term-missing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/tests/integration/test_specfile.py
new/specfile-0.17.0/tests/integration/test_specfile.py
--- old/specfile-0.16.0/tests/integration/test_specfile.py 2023-04-20
18:57:54.000000000 +0200
+++ new/specfile-0.17.0/tests/integration/test_specfile.py 2023-05-11
11:43:56.000000000 +0200
@@ -3,12 +3,12 @@
import copy
import datetime
-import subprocess
import pytest
import rpm
from flexmock import flexmock
+import specfile.specfile
from specfile.exceptions import RPMException, SpecfileException
from specfile.prep import AutopatchMacro, AutosetupMacro, PatchMacro,
SetupMacro
from specfile.sections import Section
@@ -111,11 +111,9 @@
@pytest.mark.parametrize(
- "rpmdev_packager_available, entry, author, email, timestamp, evr, result",
+ "entry, author, email, timestamp, evr, result",
[
- (False, None, None, None, None, None, None),
(
- True,
"test",
None,
None,
@@ -127,7 +125,6 @@
),
),
(
- True,
"test",
None,
None,
@@ -139,7 +136,6 @@
),
),
(
- True,
"test",
None,
None,
@@ -151,7 +147,6 @@
),
),
(
- True,
"test",
None,
None,
@@ -163,7 +158,6 @@
),
),
(
- True,
"test",
"Bill Packager",
None,
@@ -174,7 +168,6 @@
),
),
(
- True,
"test",
"Bill Packager",
"[email protected]",
@@ -189,7 +182,6 @@
),
),
(
- True,
"test",
"Bill Packager",
"[email protected]",
@@ -204,7 +196,6 @@
),
),
(
- True,
["line 1", "line 2"],
"Bill Packager",
"[email protected]",
@@ -223,7 +214,6 @@
)
def test_add_changelog_entry(
spec_minimal,
- rpmdev_packager_available,
entry,
author,
email,
@@ -231,22 +221,14 @@
evr,
result,
):
- if not rpmdev_packager_available:
- flexmock(subprocess).should_receive("check_output").with_args(
- "rpmdev-packager"
- ).and_raise(FileNotFoundError)
- elif author is None:
- flexmock(subprocess).should_receive("check_output").with_args(
- "rpmdev-packager"
- ).and_return(b"John Doe <[email protected]>")
+ if author is None:
+
flexmock(specfile.specfile).should_receive("guess_packager").and_return(
+ "John Doe <[email protected]>"
+ ).once()
spec = Specfile(spec_minimal)
- if not rpmdev_packager_available:
- with pytest.raises(SpecfileException):
- spec.add_changelog_entry(entry, author, email, timestamp, evr)
- else:
- spec.add_changelog_entry(entry, author, email, timestamp, evr)
- with spec.sections() as sections:
- assert sections.changelog[: len(result)] == result
+ spec.add_changelog_entry(entry, author, email, timestamp, evr)
+ with spec.sections() as sections:
+ assert sections.changelog[: len(result)] == result
@pytest.mark.parametrize(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/specfile-0.16.0/tests/unit/test_guess_packager.py
new/specfile-0.17.0/tests/unit/test_guess_packager.py
--- old/specfile-0.16.0/tests/unit/test_guess_packager.py 1970-01-01
01:00:00.000000000 +0100
+++ new/specfile-0.17.0/tests/unit/test_guess_packager.py 2023-05-11
11:43:56.000000000 +0200
@@ -0,0 +1,121 @@
+# Copyright Contributors to the Packit project.
+# SPDX-License-Identifier: MIT
+
+import subprocess
+from pathlib import Path
+
+import pytest
+from flexmock import flexmock
+
+import specfile.changelog
+from specfile.changelog import guess_packager
+from specfile.macros import Macros
+
+
[email protected]
+def clean_guess_packager(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) ->
None:
+ """
+ Ensure a clean environment
+ """
+ # For $RPM_PACKAGER
+ monkeypatch.delenv("RPM_PACKAGER", False)
+ # Make sure git doesn't read existing config
+ monkeypatch.setenv("HOME", "/dev/null")
+ monkeypatch.delenv("XDG_CONFIG_HOME", False)
+ monkeypatch.chdir(tmp_path)
+ # For %packager
+ Macros.remove("packager")
+ # For Unix passwd guessing
+ flexmock(specfile.changelog).should_receive("_getent_name").and_return("")
+
+
[email protected]
+def set_packager_env(monkeypatch: pytest.MonkeyPatch) -> str:
+ packager = "Patty Packager <[email protected]>"
+ monkeypatch.setenv("RPM_PACKAGER", packager)
+ return packager
+
+
[email protected]
+def set_packager_git(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> str:
+ packager = "Packager, Patty <[email protected]>"
+
+ monkeypatch.chdir(tmp_path)
+ subprocess.run(["git", "init", "."], check=True, capture_output=True)
+ subprocess.run(
+ ["git", "config", "user.name", "Packager, Patty"],
+ check=True,
+ capture_output=True,
+ )
+ subprocess.run(
+ ["git", "config", "user.email", "[email protected]"],
+ check=True,
+ capture_output=True,
+ )
+ return packager
+
+
[email protected]
+def set_packager_macro() -> str:
+ packager = "Patricia Packager"
+ Macros.define("packager", packager)
+ return packager
+
+
[email protected]
+def set_packager_passwd() -> str:
+ packager = "Ms. Packager"
+
flexmock(specfile.changelog).should_receive("_getent_name").and_return(packager)
+ return packager
+
+
+def test_guess_packager_env(clean_guess_packager, set_packager_env):
+ assert guess_packager() == set_packager_env
+
+
+def test_guess_packager_macro(clean_guess_packager, set_packager_macro):
+ assert guess_packager() == set_packager_macro
+
+
+def test_guess_packager_git(clean_guess_packager, set_packager_git):
+ assert guess_packager() == set_packager_git
+
+
+def test_guess_packager_passwd(clean_guess_packager, set_packager_passwd):
+ assert guess_packager() == set_packager_passwd
+
+
+def test_guess_packager_pref1(
+ clean_guess_packager,
+ set_packager_env,
+ set_packager_macro,
+ set_packager_git,
+ set_packager_passwd,
+):
+ assert guess_packager() == set_packager_env
+
+
+def test_guess_packager_pref2(
+ clean_guess_packager, set_packager_macro, set_packager_git,
set_packager_passwd
+):
+ assert guess_packager() == set_packager_macro
+
+
+def test_guess_packager_pref3(
+ clean_guess_packager, set_packager_git, set_packager_passwd
+):
+ assert guess_packager() == set_packager_git
+
+
+def test_guess_packager_pref4(
+ clean_guess_packager, set_packager_git, set_packager_passwd
+):
+ subprocess.run(["git", "config", "--unset", "user.email"])
+ assert guess_packager() == "Packager, Patty"
+
+
+def test_guess_packager_empty(clean_guess_packager):
+ """
+ The function should return an empty string if it can't detect the packager
+ """
+ assert guess_packager() == ""