diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2016-04-22 13:00:54 +0300 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2016-04-22 13:12:23 +0300 |
commit | e99da1e9855e4398c31afb36cb501ef55c9c25b0 (patch) | |
tree | 14668f69f8acc4f27abe61fe3b120b52c4b0b140 | |
parent | 50d26eb220847bc845893ce5a4a760ac6ff5ee02 (diff) |
Return a named tuple from uploads.scan()
Rather than an unwieldy 6-tuple, return a named tuple from uploads.scan()
-rwxr-xr-x | calm.py | 24 | ||||
-rwxr-xr-x | tests.py | 12 | ||||
-rw-r--r-- | uploads.py | 7 |
3 files changed, 23 insertions, 20 deletions
@@ -98,43 +98,43 @@ def process_arch(args): # also send a mail to each maintainer about their packages with mail_logs(args.email, toaddrs=m.email, subject='%s for %s [%s]' % (subject, name, details), thresholdLevel=logging.INFO) as maint_email: - (error, mpackages, to_relarea, to_vault, remove_always, remove_success) = uploads.scan(m, all_packages, args) + scan_result = uploads.scan(m, all_packages, args) - uploads.remove(args, remove_always) + uploads.remove(args, scan_result.remove_always) - if error: + if scan_result.error: logging.error("error while reading uploaded packages for %s" % (name)) continue # if there are no uploaded packages for this maintainer, we # don't have anything to do - if not mpackages: + if not scan_result.packages: logging.debug("nothing to do for maintainer %s" % (name)) continue # queue for source package validator - queue.add(args, to_relarea, os.path.join(m.homedir(), args.arch)) + queue.add(args, scan_result.to_relarea, os.path.join(m.homedir(), args.arch)) # merge package set - merged_packages = package.merge(packages, mpackages) + merged_packages = package.merge(packages, scan_result.packages) # remove file which are to be removed # # XXX: this doesn't properly account for removing setup.hint # files - for p in to_vault: - for f in to_vault[p]: + for p in scan_result.to_vault: + for f in scan_result.to_vault[p]: package.delete(merged_packages, p, f) # validate the package set if package.validate_packages(args, merged_packages): # process the move list - uploads.move_to_vault(args, to_vault) - uploads.remove(args, remove_success) - uploads.move_to_relarea(m, args, to_relarea) + uploads.move_to_vault(args, scan_result.to_vault) + uploads.remove(args, scan_result.remove_success) + uploads.move_to_relarea(m, args, scan_result.to_relarea) # use merged package list packages = merged_packages - logging.debug("added %d packages from maintainer %s" % (len(mpackages), name)) + logging.debug("added %d packages from maintainer %s" % (len(scan_result.packages), name)) else: # otherwise we discard move list and merged_packages logging.error("error while merging uploaded packages for %s" % (name)) @@ -200,13 +200,13 @@ class TestMain(unittest.TestCase): for (f, t) in ready_fns: os.system('touch %s "%s"' % (t, f)) - (error, packages, to_relarea, to_vault, remove_always, remove_success) = uploads.scan(m, pkglist + ['not-on-maintainer-list'], args) + scan_result = uploads.scan(m, pkglist + ['not-on-maintainer-list'], args) - self.assertEqual(error, False) - compare_with_expected_file(self, 'testdata/uploads', to_relarea, 'move') - self.assertCountEqual(remove_always, [f for (f, t) in ready_fns]) - self.assertEqual(remove_success, ['testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1.tar.bz2']) - compare_with_expected_file(self, 'testdata/uploads', packages, 'pkglist') + self.assertEqual(scan_result.error, False) + compare_with_expected_file(self, 'testdata/uploads', scan_result.to_relarea, 'move') + self.assertCountEqual(scan_result.remove_always, [f for (f, t) in ready_fns]) + self.assertEqual(scan_result.remove_success, ['testdata/homes/Blooey McFooey/x86/release/testpackage/-testpackage-0.1-1.tar.bz2']) + compare_with_expected_file(self, 'testdata/uploads', scan_result.packages, 'pkglist') def test_package_set(self): self.maxDiff = None @@ -25,7 +25,7 @@ # upload directory processing # -from collections import defaultdict +from collections import defaultdict, namedtuple import filecmp import os import logging @@ -38,6 +38,9 @@ import package # reminders will be issued daily REMINDER_INTERVAL = 60*60*24 +# a named tuple type to hold the result of scan +ScanResult = namedtuple('ScanResult', 'error,packages,to_relarea,to_vault,remove_always,remove_success') + # # @@ -190,7 +193,7 @@ def scan(m, all_packages, args): except FileNotFoundError: pass - return (error, packages, move, vault, remove, remove_success) + return ScanResult(error, packages, move, vault, remove, remove_success) # |