Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/cygwin-apps/calm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2019-07-05 15:00:09 +0300
committerJon Turney <jon.turney@dronecode.org.uk>2019-07-05 23:53:03 +0300
commitebaee1379ea105d2f19e43187d58def9f4bae6d8 (patch)
tree233476202bd22517f756e2472202259961c4f339
parent3ae7737f2d825f27f7e6e1bb7ee496ec672a7c8b (diff)
Extend test to cover json dump
Sort lists (of subpacakages and maintainers), so that ordering in json output is stable.
-rwxr-xr-xcalm/package.py4
-rwxr-xr-xtest/test_calm.py12
-rw-r--r--test/testdata/process_arch/packages.json.expected440
3 files changed, 453 insertions, 3 deletions
diff --git a/calm/package.py b/calm/package.py
index 7a3b87e..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[po.orig_name] and ('ORPHANED' not in pkg_maintainers[po.orig_name]):
- d['maintainers'] = 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'
+ '}')