#86 Automatically word-wrap the description of extras subpackages
Merged 3 years ago by churchyard. Opened 3 years ago by churchyard.
rpms/ churchyard/python-rpm-macros description_wrap  into  rawhide

file modified
+13 -3
@@ -202,9 +202,19 @@ 

          local rpmname = value_n .. '+' .. extras

          local pkgdef = '%package -n ' .. rpmname

          local summary = 'Summary: Metapackage for ' .. value_n .. ': ' .. extras .. ' extras'

-         local description = '%description -n ' .. rpmname .. '\\\n' ..

-                             'This is a metapackage bringing in ' .. extras .. ' extras requires for ' .. value_n .. '.\\\n' ..

-                             'It contains no code, just makes sure the dependencies are installed.\\\n'

+         local description = '%description -n ' .. rpmname .. '\\\n'

+         local current_line = 'This is a metapackage bringing in'

+         for _, word in ipairs({extras, 'extras', 'requires', 'for', value_n .. '.'}) do

+           local line = current_line .. ' ' .. word

+           if line:len() > 79 then

+             description = description .. current_line .. '\\\n'

+             current_line = word

+           else

+             current_line = line

+           end

+         end

+         description = description .. current_line .. '\\\n' ..

+                       'It contains no code, just makes sure the dependencies are installed.\\\n'

          local files = ''

          if value_i ~= '' then

              files = '%files -n ' .. rpmname .. '\\\n' .. '%ghost ' .. value_i

file modified
+5 -1
@@ -1,6 +1,6 @@ 

  Name:           python-rpm-macros

  Version:        3.9

- Release:        12%{?dist}

+ Release:        13%{?dist}

  Summary:        The common Python RPM macros

  

  # macros and lua: MIT, compileall2.py: PSFv2
@@ -107,6 +107,10 @@ 

  

  

  %changelog

+ * Fri Feb 05 2021 Miro Hrončok <mhroncok@redhat.com> - 3.9-13

+ - Automatically word-wrap the description of extras subpackages

+ - Fixes: rhbz#1922442

+ 

  * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.9-12

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

  

file modified
+36 -12
@@ -12,12 +12,8 @@ 

  # Handy environment variable you can use to run the tests

  # with modified macros files. Multiple files should be

  # separated by colon.

- # To get 'em all, run:

- # ls -1 macros.* | tr "\n" ":"

- # and then:

- # TESTED_FILES="<output of previous command>" pytest -v

- # or both combined:

- # TESTED_FILES=$(ls -1 macros.* | tr "\n" ":") pytest -v

+ # You can use * if you escape it from your Shell:

+ # TESTED_FILES='macros.*' pytest -v

  # Remember that some tests might need more macros files than just

  # the local ones.

  TESTED_FILES = os.getenv("TESTED_FILES", None)
@@ -340,7 +336,8 @@ 

          Summary: Metapackage for python3-setuptools_scm: toml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+toml

-         This is a metapackage bringing in toml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in toml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

  

          %files -n python3-setuptools_scm+toml
@@ -350,7 +347,8 @@ 

          Summary: Metapackage for python3-setuptools_scm: yaml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+yaml

-         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in yaml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

  

          %files -n python3-setuptools_scm+yaml
@@ -367,7 +365,8 @@ 

          Summary: Metapackage for python3-setuptools_scm: toml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+toml

-         This is a metapackage bringing in toml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in toml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

  

          %files -n python3-setuptools_scm+toml -f ghost_filelist
@@ -376,7 +375,8 @@ 

          Summary: Metapackage for python3-setuptools_scm: yaml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+yaml

-         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in yaml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

  

          %files -n python3-setuptools_scm+yaml -f ghost_filelist
@@ -392,7 +392,8 @@ 

          Summary: Metapackage for python3-setuptools_scm: toml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+toml

-         This is a metapackage bringing in toml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in toml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

  

  
@@ -401,12 +402,35 @@ 

          Summary: Metapackage for python3-setuptools_scm: yaml extras

          Requires: python3-setuptools_scm = 6-7

          %description -n python3-setuptools_scm+yaml

-         This is a metapackage bringing in yaml extras requires for python3-setuptools_scm.

+         This is a metapackage bringing in yaml extras requires for

+         python3-setuptools_scm.

          It contains no code, just makes sure the dependencies are installed.

          """).lstrip().splitlines()

      assert lines == expected

  

  

+ @pytest.mark.parametrize('basename_len', [1, 10, 30, 45, 78])

+ @pytest.mark.parametrize('extra_len', [1, 13, 28, 52, 78])

+ def test_python_extras_subpkg_description_wrapping(basename_len, extra_len):

+     basename = 'x' * basename_len

+     extra = 'y' * extra_len

+     lines = rpm_eval(f'%python_extras_subpkg -n {basename} -F {extra}',

+                      version='6', release='7')

+     for idx, line in enumerate(lines):

+         if line.startswith('%description'):

+             start = idx + 1

+     lines = lines[start:]

+     assert all(len(l) < 80 for l in lines)

+     assert len(lines) < 6

+     if len(" ".join(lines[:-1])) < 80:

+         assert len(lines) == 2

+     expected_singleline = (f"This is a metapackage bringing in {extra} extras "

+                            f"requires for {basename}. It contains no code, "

+                            f"just makes sure the dependencies are installed.")

+     description_singleline = " ".join(lines)

+     assert description_singleline == expected_singleline

+ 

+ 

  unversioned_macros = pytest.mark.parametrize('macro', [

      '%__python',

      '%python',

This only works for package and extra names less than 79 characters long.
I don't expect many actual packages to exceed this limit.
78 characters should be enough for everybody.

1 new commit added

  • Tests: Amend the comment for TESTED_FILES
3 years ago

Build succeeded.

  • @pytest.mark.parametrize('basename', ['x', 'x'10, 'x'30, 'x'*77])
  • @pytest.mark.parametrize('extra', ['y', 'y'10, 'y'30, 'y'*77])

If we say this works for names up to 78 characters long, let's test for 78 characters instead of 77?

rebased onto d34a6c73150805bb35a00e661d72fdffc7b48f5b

3 years ago

Oh. So it works for 78. I've amended the tests as well as the commit message.

Technically, extras name can be 79. But I don't really want to go into that detail. 78 characters should really be enough for everybody.

Oh. So it works for 78. I've amended the tests as well as the commit message.

Numbers look good now! As a personal preference, I would mention somewhere that it's 78 because of the dot after the name of the subpackage, it is not obvious without a deeper inspection of the code.

1 new commit added

  • fixup! Automatically word-wrap the description of extras subpackages
3 years ago

3 new commits added

  • fixup! Automatically word-wrap the description of extras subpackages
  • Tests: Amend the comment for TESTED_FILES
  • Automatically word-wrap the description of extras subpackages
3 years ago

rebased onto c746b25

3 years ago

Final ack, everything looks good!

Build succeeded.

Pull-Request has been merged by churchyard

3 years ago