Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[BUG] inc affects the inputed SemVer object. #425

@louis-bompart

Description

@louis-bompart

What / Why

inc when called with an instance of SemVer will affect the provided SemVer object (if no opts are given, see Steps to Reproduce). This leads to unexpected behaviour for a function that could be expected to be pure.

When

  • n/a

Where

  • n/a

How

Current Behavior

inc will do the operation on the SemVer object provided in parameters, except if semver is created with loose or includePrereleaseSemVer.

Steps to Reproduce

const { SemVer, inc } = require("semver");
const { equal } = require("assert");

const initalStrVer = "1.0.0";
const initialSemver = new SemVer(initalStrVer);
const looseSemver = new SemVer(initalStrVer, { loose: true });
const includePrereleaseSemVer = new SemVer(initalStrVer, {
  includePrerelease: true,
});

inc(initialSemver, "minor");
inc(looseSemver, "minor");
inc(includePrereleaseSemVer, "minor");
inc(initalStrVer, "minor");

equal(initalStrVer, looseSemver.version); // ✔️  Pass
equal(initalStrVer, includePrereleaseSemVer.version); // ✔️ Pass
equal(initalStrVer, initialSemver.version); // ❌ AssertionError [ERR_ASSERTION]: '1.0.0' == '1.1.0'

Expected Behavior

inc should never modify the provided SemVer object.

Who

  • n/a

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bugthing that needs fixing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions