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-11-02 17:06:47 +0300
committerJon Turney <jon.turney@dronecode.org.uk>2016-11-02 17:27:48 +0300
commit062aa6f6fa6f3e4859c940243b5c15b4db16c989 (patch)
treed836431e7a6c5865ff53c0d5003c98a81803383d
parentb961780b6c3d5b28ca97a3581050c993ed57bf46 (diff)
Fix merging of stability level hints
Absent stability level hints are now explicitly noted, so they can be handled more correctly when merging a package.
-rwxr-xr-xcalm/package.py18
-rw-r--r--test/testdata/uploads/pkglist.expected6
2 files changed, 18 insertions, 6 deletions
diff --git a/calm/package.py b/calm/package.py
index 3d566aa..7861d2d 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -193,6 +193,13 @@ def read_package(packages, basedir, dirpath, files, strict=False):
if level in hints:
override_hints[level] = hints[level]
+ # explicitly note any absent stability level hints
+ for level in ['test', 'curr', 'prev']:
+ if level not in override_hints:
+ override_hints[level] = None
+
+ # after we have migrated them to override hints, remove stability
+ # level hints from legacy hints
for level in ['test', 'curr', 'prev']:
if level in hints:
del hints[level]
@@ -433,8 +440,12 @@ def validate_packages(args, packages):
levels = ['test', 'curr', 'prev']
for l in levels:
if l in packages[p].override_hints:
- # check that version exists
+ # check that if a version was specified, it exists
v = packages[p].override_hints[l]
+
+ if v is None:
+ continue
+
if v not in packages[p].vermap:
logging.error("package '%s' stability '%s' selects non-existent version '%s'" % (p, l, v))
error = True
@@ -457,7 +468,7 @@ def validate_packages(args, packages):
l = levels[0]
# if current stability level has an override
- if l in packages[p].override_hints:
+ if (l in packages[p].override_hints) and (packages[p].override_hints[l] is not None):
# if we haven't reached that version yet
if v != packages[p].override_hints[l]:
break
@@ -486,7 +497,8 @@ def validate_packages(args, packages):
# stability level was overriden to a lower version
for l in levels:
if l in packages[p].override_hints:
- packages[p].stability[l] = packages[p].override_hints[l]
+ if packages[p].override_hints[l] is not None:
+ packages[p].stability[l] = packages[p].override_hints[l]
# the package must have some versions
if not packages[p].stability:
diff --git a/test/testdata/uploads/pkglist.expected b/test/testdata/uploads/pkglist.expected
index f36b2a4..0e4c587 100644
--- a/test/testdata/uploads/pkglist.expected
+++ b/test/testdata/uploads/pkglist.expected
@@ -6,11 +6,11 @@
'Like it’s you’re Markup Language™ Nokogiri’s tool―that '
'Bézier."',
'category': 'Devel',
- 'requires': 'cygwin'}}, {}, False),
+ 'requires': 'cygwin'}}, {'curr': None, 'prev': None, 'test': None}, False),
'testpackage-subpackage': Package('x86/release/testpackage/testpackage-subpackage', {'testpackage-subpackage-1.0-1.tar.bz2': Tar('aff488008bee3486e25b539fe6ccd1397bd3c5c0ba2ee2cf34af279554baa195af7493ee51d6f8510735c9a2ea54436d776a71e768165716762aec286abbbf83', 195, False)}, {'1.0-1': {'sdesc': '"A test subpackage"',
'ldesc': '"A test subpackage"',
'category': 'Devel',
- 'external-source': 'testpackage'}}, {}, False),
+ 'external-source': 'testpackage'}}, {'curr': None, 'prev': None, 'test': None}, False),
'testpackage2-subpackage': Package('x86/release/testpackage2/testpackage2-subpackage', {'testpackage2-subpackage-1.0-1.tar.bz2': Tar('6de201dfed1d45412509c65deb34690dc2d09c6aafccfe491fd2f440f92842b9c755b61dc7bcdd4cc0c9f18cf46c2b3a1241e99c4c2a33fff5555e7b2f0b6348', 14, True)}, {'1.0-1': {'sdesc': '"A test subpackage 2"',
'ldesc': '"A test subpackage 2"',
- 'category': 'Devel'}}, {}, False)}
+ 'category': 'Devel'}}, {'curr': None, 'prev': None, 'test': None}, False)}