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>2016-04-22 13:00:54 +0300
committerJon Turney <jon.turney@dronecode.org.uk>2016-04-22 13:12:23 +0300
commite99da1e9855e4398c31afb36cb501ef55c9c25b0 (patch)
tree14668f69f8acc4f27abe61fe3b120b52c4b0b140
parent50d26eb220847bc845893ce5a4a760ac6ff5ee02 (diff)
Return a named tuple from uploads.scan()
Rather than an unwieldy 6-tuple, return a named tuple from uploads.scan()
-rwxr-xr-xcalm.py24
-rwxr-xr-xtests.py12
-rw-r--r--uploads.py7
3 files changed, 23 insertions, 20 deletions
diff --git a/calm.py b/calm.py
index 38e8cec..06cae27 100755
--- a/calm.py
+++ b/calm.py
@@ -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))
diff --git a/tests.py b/tests.py
index 3252ac6..714cf1b 100755
--- a/tests.py
+++ b/tests.py
@@ -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
diff --git a/uploads.py b/uploads.py
index f53a67c..6ed4beb 100644
--- a/uploads.py
+++ b/uploads.py
@@ -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)
#