[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20190530-50-gebaee13

jturney-9JcytcrH/[email protected]
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=ebaee1379ea105d2f19e43187d58def9f4bae6d8

commit ebaee1379ea105d2f19e43187d58def9f4bae6d8
Author: Jon Turney <[email protected]>
Date:   Fri Jul 5 13:00:09 2019 +0100

    Extend test to cover json dump
    
    Sort lists (of subpacakages and maintainers), so that ordering in json
    output is stable.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=3ae7737f2d825f27f7e6e1bb7ee496ec672a7c8b

commit 3ae7737f2d825f27f7e6e1bb7ee496ec672a7c8b
Author: Jon Turney <[email protected]>
Date:   Fri Jul 5 19:29:22 2019 +0100

    Fix maintainer lookup in json dump


Diff:
---
 calm/package.py                                   |    6 +-
 test/test_calm.py                                 |   12 +-
 test/testdata/process_arch/packages.json.expected |  440 +++++++++++++++++++++
 3 files changed, 454 insertions(+), 4 deletions(-)

diff --git a/calm/package.py b/calm/package.py
index 3867f33..ccca563 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -1175,12 +1175,12 @@ def write_repo_json(args, packages, f):
             'name': po.orig_name,
             'versions': versions,
             'summary': po.version_hints[bv]['sdesc'].strip('"'),
-            'subpackages': [{'name': sp, 'categories': package(sp).version_hints[package(sp).best_version].get('category', '').split()} for sp in po.is_used_by],
+            'subpackages': [{'name': sp, 'categories': package(sp).version_hints[package(sp).best_version].get('category', '').split()} for sp in sorted(po.is_used_by)],
             'arches': arches,
         }
 
-        if pkg_maintainers[pn] and ('ORPHANED' not in pkg_maintainers[pn]):
-            d['maintainers'] = pkg_maintainers[pn]
+        if pkg_maintainers[po.orig_name] and ('ORPHANED' not in pkg_maintainers[po.orig_name]):
+            d['maintainers'] = sorted(pkg_maintainers[po.orig_name])
 
         pl.append(d)
 
diff --git a/test/test_calm.py b/test/test_calm.py
index ef4f79f..f4853cb 100755
--- a/test/test_calm.py
+++ b/test/test_calm.py
@@ -28,6 +28,8 @@
 import collections
 import contextlib
 import filecmp
+import io
+import json
 import logging
 import os
 import pprint
@@ -459,7 +461,15 @@ class CalmTest(unittest.TestCase):
             with self.subTest(directory=d):
                 dirlist = capture_dirtree(getattr(args, d))
                 compare_with_expected_file(self, 'testdata/process_arch', dirlist, d)
-                shutil.rmtree(getattr(args, d))
+
+        with io.StringIO() as jsonfile:
+            package.write_repo_json(args, packages, jsonfile)
+            j = json.loads(jsonfile.getvalue(), object_pairs_hook=collections.OrderedDict)
+            del j['timestamp']
+            compare_with_expected_file(self, 'testdata/process_arch', json.dumps(j, sort_keys=True, indent=4), 'packages.json')
+
+        for d in ['rel_area', 'homedir', 'htdocs', 'vault']:
+            shutil.rmtree(getattr(args, d))
 
     @classmethod
     def setUpClass(cls):
diff --git a/test/testdata/process_arch/packages.json.expected b/test/testdata/process_arch/packages.json.expected
new file mode 100644
index 0000000..010c8f3
--- /dev/null
+++ b/test/testdata/process_arch/packages.json.expected
@@ -0,0 +1,440 @@
+('{\n'
+ '    "num_packages": 17,\n'
+ '    "packages": [\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Jari Aalto"\n'
+ '            ],\n'
+ '            "name": "arc",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Archive"\n'
+ '                    ],\n'
+ '                    "name": "arc"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "The ARC archive utility",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "4.32.7-10"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey"\n'
+ '            ],\n'
+ '            "name": "corrupt",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "corrupt"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "A corrupt package",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "2.0.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Corinna Vinschen",\n'
+ '                "Yaakov Selkowitz"\n'
+ '            ],\n'
+ '            "name": "cygwin",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Base"\n'
+ '                    ],\n'
+ '                    "name": "cygwin"\n'
+ '                },\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Debug"\n'
+ '                    ],\n'
+ '                    "name": "cygwin-debuginfo"\n'
+ '                },\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "cygwin-devel"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "The UNIX emulation engine",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "2.2.0-1",\n'
+ '                    "2.2.1-1"\n'
+ '                ],\n'
+ '                "test": [\n'
+ '                    "2.3.0-0.3"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Jari Aalto"\n'
+ '            ],\n'
+ '            "name": "keychain",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Utils"\n'
+ '                    ],\n'
+ '                    "name": "keychain"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Key manager for OpenSSH",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "2.6.8-1",\n'
+ '                    "2.7.1-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Yaakov Selkowitz"\n'
+ '            ],\n'
+ '            "name": "mDNSResponder",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Net"\n'
+ '                    ],\n'
+ '                    "name": "libdns_sd-devel"\n'
+ '                },\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Net"\n'
+ '                    ],\n'
+ '                    "name": "libdns_sd1"\n'
+ '                },\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Net"\n'
+ '                    ],\n'
+ '                    "name": "mDNSResponder"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Bonjour Zeroconf implementation",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "379.32.1-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "name": "obs-a",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "obs-a"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "obsolete package A",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "name": "obs-b",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "obs-b"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "obsolete package B",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Corinna Vinschen"\n'
+ '            ],\n'
+ '            "name": "openssh",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Net"\n'
+ '                    ],\n'
+ '                    "name": "openssh"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "The OpenSSH server and client programs",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "7.2p2-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey"\n'
+ '            ],\n'
+ '            "name": "per-version-replacement-hint-only",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Base"\n'
+ '                    ],\n'
+ '                    "name": "per-version-replacement-hint-only"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Per-version hint test package",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey"\n'
+ '            ],\n'
+ '            "name": "per-version",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Base"\n'
+ '                    ],\n'
+ '                    "name": "per-version"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Per-version hint test package",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "4.0-1",\n'
+ '                    "4.8-1"\n'
+ '                ],\n'
+ '                "test": [\n'
+ '                    "5.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey",\n'
+ '                "Yaakov Selkowitz"\n'
+ '            ],\n'
+ '            "name": "perl-Net-SMTP-SSL",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Perl"\n'
+ '                    ],\n'
+ '                    "name": "perl-Net-SMTP-SSL"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Perl distribution Net-SMTP-SSL",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.01-1",\n'
+ '                    "1.02-1",\n'
+ '                    "1.03-1",\n'
+ '                    "1.03-2"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "name": "rpm-doc",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "_obsolete"\n'
+ '                    ],\n'
+ '                    "name": "rpm-doc"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Obsolete package for RPM package management system manual pages (extra text to so repr is '
+ 'not one line)",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "4.1-2",\n'
+ '                    "999-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey"\n'
+ '            ],\n'
+ '            "name": "staleversion",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Shells",\n'
+ '                        "Base"\n'
+ '                    ],\n'
+ '                    "name": "staleversion"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "Test package for stale version removal",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "240-1",\n'
+ '                    "242-0",\n'
+ '                    "243-0",\n'
+ '                    "250-0",\n'
+ '                    "251-0"\n'
+ '                ],\n'
+ '                "test": [\n'
+ '                    "260-0"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "name": "test-c",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "test-c"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "test package C",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "name": "test-d",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "test-d"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "test package D",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0.42590-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86",\n'
+ '                "x86_64"\n'
+ '            ],\n'
+ '            "name": "test-e",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "test-e"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "test package E",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        },\n'
+ '        {\n'
+ '            "arches": [\n'
+ '                "x86"\n'
+ '            ],\n'
+ '            "maintainers": [\n'
+ '                "Blooey McFooey"\n'
+ '            ],\n'
+ '            "name": "testpackage",\n'
+ '            "subpackages": [\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "testpackage"\n'
+ '                },\n'
+ '                {\n'
+ '                    "categories": [\n'
+ '                        "Devel"\n'
+ '                    ],\n'
+ '                    "name": "testpackage-subpackage"\n'
+ '                }\n'
+ '            ],\n'
+ '            "summary": "A test package",\n'
+ '            "versions": {\n'
+ '                "stable": [\n'
+ '                    "0.1-1",\n'
+ '                    "1.0-1"\n'
+ '                ]\n'
+ '            }\n'
+ '        }\n'
+ '    ],\n'
+ '    "repository_name": "trial"\n'
+ '}')
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.