public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
From: jturney@sourceware.org
To: cygwin-apps-cvs@sourceware.org
Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20190530-50-gebaee13
Date: Fri, 05 Jul 2019 20:56:00 -0000	[thread overview]
Message-ID: <20190705205608.96086.qmail@sourceware.org> (raw)




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

commit ebaee1379ea105d2f19e43187d58def9f4bae6d8
Author: Jon Turney <jon.turney@dronecode.org.uk>
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 <jon.turney@dronecode.org.uk>
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'
+ '}')


                 reply	other threads:[~2019-07-05 20:56 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190705205608.96086.qmail@sourceware.org \
    --to=jturney@sourceware.org \
    --cc=cygwin-apps-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).