diff --git a/src/python/jw/pkg/lib/version/Dependency.py b/src/python/jw/pkg/lib/version/Dependency.py index 8ed8ee3b..dbf9d12e 100644 --- a/src/python/jw/pkg/lib/version/Dependency.py +++ b/src/python/jw/pkg/lib/version/Dependency.py @@ -45,11 +45,6 @@ class Dependency: # export case 3: if not parts[0] or not parts[2]: self.__raise(f'Invalid dependency spec "{self.__spec}"') - if parts[2] == 'REVISION': - self.__raise( - f'Spec "{self.__spec}": a bare REVISION renders as a ' - 'bare number, which is likely not what the user intended' - ) return parts[0], Boundary( op=parts[1], version=Version(parts[0], parts[2], self.__lookup_version), diff --git a/test/unit/python/jw/pkg/lib/version/test.py b/test/unit/python/jw/pkg/lib/version/test.py index 91783ae3..84be31d9 100644 --- a/test/unit/python/jw/pkg/lib/version/test.py +++ b/test/unit/python/jw/pkg/lib/version/test.py @@ -1,3 +1,6 @@ +import io + +from jw.pkg.lib.log import add_capture_stream, rm_capture_stream from jw.pkg.lib.version import Component, Dependency, Syntax, Version class FakeApp: @@ -79,13 +82,17 @@ assert d.constraint_str(untemplated=False, include_revision=False) == \ # untemplated=False keeps the specifiers as written d = Dependency('foo = VERSION', app.get_version) assert d.constraint_str(untemplated = False) == 'foo = VERSION' -# A bare REVISION is rejected on the grounds that is assumed that -# the user wanted VERSION instead -try: - Dependency('foo = REVISION', app.get_version).constraint_str() - assert False, 'Should have raised' -except Dependency.Error: - pass +# REVISION resolves to the revision part +d = Dependency('foo = REVISION', app.get_version) +assert d.constraint_str() == 'foo = 45' +assert d.constraint_str(untemplated = False) == 'foo = REVISION' +# A bare REVISION warns: RPM reads a bare number as a version +buf = io.StringIO() +sd = add_capture_stream(buf) +d = Dependency('foo = REVISION', app.get_version) +assert d.constraint_str() == 'foo = 45' +assert 'not a release constraint' in buf.getvalue() +rm_capture_stream(sd) # The lookup uses the base name, not the subpackage name d = Dependency('foo-devel = VERSION', app.get_version)