File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88import traceback
99from datetime import datetime
1010
11+ from pkgcore .ebuild .misc import sort_keywords
1112from snakeoil .cli .exceptions import UserException
1213from snakeoil .mappings import OrderedSet
1314
@@ -71,15 +72,10 @@ def _eof(self, change):
7172 @mangle ("keywords" )
7273 def _keywords (self , change ):
7374 """Fix keywords order."""
74-
75- def keywords_sort_key (kw ):
76- return tuple (reversed (kw .lstrip ("-~" ).partition ("-" )))
77-
7875 lines = change .data .splitlines ()
7976 for i , line in enumerate (lines ):
8077 if mo := keywords_regex .match (line ):
81- kw = sorted (mo .group ("keywords" ).split (), key = keywords_sort_key )
82- new_kw = " " .join (kw )
78+ new_kw = " " .join (sort_keywords (mo .group ("keywords" ).split ()))
8379 if not mo .group ("quote" ):
8480 new_kw = f'"{ new_kw } "'
8581 lines [i ] = f"{ mo .group ('pre' )} { new_kw } { mo .group ('post' )} "
Original file line number Diff line number Diff line change @@ -52,6 +52,22 @@ def test_mangled_file(self, tmp_path):
5252 assert list (Mangler ([fake_change (path )])) == [str (path )]
5353 assert path .read_text () == "# comment\n "
5454
55+ @pytest .mark .parametrize (
56+ ("original" , "expected" ),
57+ (
58+ # glob-arches first, then arches, then prefix-arches
59+ ('KEYWORDS="~x86-macos amd64 -* ~alpha"' , '"-* ~alpha amd64 ~x86-macos"' ),
60+ # unquoted keywords gain quotes
61+ ("KEYWORDS=sparc" , '"sparc"' ),
62+ ("KEYWORDS='sparc ~arm64 alpha'" , "'alpha ~arm64 sparc'" ),
63+ ),
64+ )
65+ def test_keywords_order (self , tmp_path , original , expected ):
66+ path = tmp_path / "pkg-1.ebuild"
67+ path .write_text (f"# comment\n { original } \n " )
68+ assert list (Mangler ([fake_change (path )])) == [str (path )]
69+ assert path .read_text () == f"# comment\n KEYWORDS={ expected } \n "
70+
5571 def test_iterator_exceptions (self , tmp_path ):
5672 """Test parallelized iterator against unhandled exceptions."""
5773 path = tmp_path / "file"
You can’t perform that action at this time.
0 commit comments