From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96135 invoked by alias); 5 Jul 2019 20:56:08 -0000 Mailing-List: contact cygwin-apps-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-apps-cvs-owner@sourceware.org Received: (qmail 96098 invoked by uid 9795); 5 Jul 2019 20:56:08 -0000 Date: Fri, 05 Jul 2019 20:56:00 -0000 Message-ID: <20190705205608.96086.qmail@sourceware.org> From: jturney@sourceware.org To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20190530-50-gebaee13 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a058fec805e1c0272509be3e3eea5b372f2d36fd X-Git-Newrev: ebaee1379ea105d2f19e43187d58def9f4bae6d8 X-SW-Source: 2019-q3/txt/msg00004.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=ebaee1379ea105d2f19e43187d58def9f4bae6d8 commit ebaee1379ea105d2f19e43187d58def9f4bae6d8 Author: Jon Turney 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 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' + '}')