diff --git a/lib/modules/versioning/hermit/index.spec.ts b/lib/modules/versioning/hermit/index.spec.ts index 75d8fc6ca66c0dd17ab5a3cb45e363d67a65286c..46481606ac631ddb82c9a230f23f495714c6ab69 100644 --- a/lib/modules/versioning/hermit/index.spec.ts +++ b/lib/modules/versioning/hermit/index.spec.ts @@ -81,16 +81,27 @@ describe('modules/versioning/hermit/index', () => { ); test.each` - version | other | expected - ${'@1'} | ${'@1.2'} | ${false} - ${'@1.2'} | ${'@1.2'} | ${true} - ${'@1.2.3'} | ${'@1.2'} | ${false} - ${'@latest'} | ${'@1'} | ${false} - ${'@stable'} | ${'@stable'} | ${true} + version | range | expected + ${'0.6.1'} | ${'>0.6.0 <0.7.0'} | ${true} + ${'0.6.1'} | ${'<0.7.0'} | ${true} + ${'0.6.1'} | ${'<=0.7.0'} | ${true} + ${'0.6.1'} | ${'>=0.6.0'} | ${true} + ${'0.6.1'} | ${'>0.6.0'} | ${true} + ${'0.6.1'} | ${'0.6.x'} | ${true} + ${'0.6.1'} | ${'0.6.*'} | ${true} + ${'0.6.1'} | ${'0.6.0 - 0.6.3'} | ${true} + ${'0.6.1'} | ${'~0.6'} | ${true} + ${'0.6.1'} | ${'0.6.1'} | ${true} + ${'0.0.6'} | ${'^0.0.6'} | ${true} + ${'@1'} | ${'@1.2'} | ${false} + ${'@1.2'} | ${'@1.2'} | ${true} + ${'@1.2.3'} | ${'@1.2'} | ${false} + ${'@latest'} | ${'@1'} | ${false} + ${'@stable'} | ${'@stable'} | ${true} `( - 'matches("$version", "$other") === $expected', - ({ version, other, expected }) => { - expect(versioning.matches(version, other)).toBe(expected); + 'matches("$version", "$range") === $expected', + ({ version, range, expected }) => { + expect(versioning.matches(version, range)).toBe(expected); } ); diff --git a/lib/modules/versioning/hermit/index.ts b/lib/modules/versioning/hermit/index.ts index f78b78f8dc1f76f2978b46b1758e2cb66a6252c3..940f1e5e8da476e0fd0833e64a56c1e205242640 100644 --- a/lib/modules/versioning/hermit/index.ts +++ b/lib/modules/versioning/hermit/index.ts @@ -1,3 +1,4 @@ +import { satisfies } from 'semver'; import { RegExpVersion, RegExpVersioningApi } from '../regex'; import type { VersioningApiConstructor } from '../types'; @@ -173,7 +174,14 @@ export class HermitVersioning extends RegExpVersioningApi { } override matches(version: string, range: string): boolean { - return this.equals(version, range); + if ( + HermitVersioning._isChannel(version) && + HermitVersioning._isChannel(range) + ) { + return this.equals(version, range); + } + + return satisfies(version, range); } }