diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2019-07-05 15:00:09 +0300 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2019-07-05 23:53:03 +0300 |
commit | ebaee1379ea105d2f19e43187d58def9f4bae6d8 (patch) | |
tree | 233476202bd22517f756e2472202259961c4f339 | |
parent | 3ae7737f2d825f27f7e6e1bb7ee496ec672a7c8b (diff) |
Extend test to cover json dump
Sort lists (of subpacakages and maintainers), so that ordering in json
output is stable.
-rwxr-xr-x | calm/package.py | 4 | ||||
-rwxr-xr-x | test/test_calm.py | 12 | ||||
-rw-r--r-- | test/testdata/process_arch/packages.json.expected | 440 |
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' + '}') |