Skip to content

[BUG] subset() incorrectly returns false for prerelease versions that should be subsets #757

Open
@rrosenshain-sc

Description

@rrosenshain-sc

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Description

semver.subset(subRange, superRange) is expected to return true when every version in subRange is also contained in superRange. However, when dealing with prerelease versions, semver.subset() appears to incorrectly return false even when the subrange is fully contained in the superrange.

Steps to Reproduce

const semver = require('semver');

console.log(semver.subset('^10.2.0-beta.2', '^10.2.0-beta.1')); // Expected: true, Actual: false

Expected Behavior

Expected Behavior

The first test (semver.subset('^10.2.0-beta.2', '^10.2.0-beta.1')) should return true because:
• ^10.2.0-beta.2 includes 10.2.0-beta.2, 10.2.0-beta.3, 10.2.0-beta.4, etc.
• ^10.2.0-beta.1 includes everything in ^10.2.0-beta.2, plus 10.2.0-beta.1.
• Since every version in ^10.2.0-beta.2 is also in ^10.2.0-beta.1, semver.subset() should return true.

Actual Behavior
Instead of returning true, semver.subset('^10.2.0-beta.2', '^10.2.0-beta.1') returns false.

Steps To Reproduce

No response

Environment

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bugthing that needs fixingNeeds Triageneeds an initial review

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions