testLockEntriesAreInTheirRanges

tcmts.cli.codebase.test.testLockEntriesAreInTheirRanges · #jht2a6ba · term

Lock entries from elsewhere: one whose version isn't in its range isn't taken, and a library's (keepLocks) don't move a version this codebase has locked, as a collaborator's newer one does.

import { Codebase } from "#codebase/tcmts/cli/codebase";
import { tempDir } from "#codebase/tcmts/cli/test/e2e/harness";
import assert from "node:assert/strict";

export const testLockEntriesAreInTheirRanges = () => {
  const session = process.env.TCM_BRANCH;
  delete process.env.TCM_BRANCH;
  try {
    const cb = Codebase.init(tempDir("lock entries"));
    cb.store.lockVersion("left-pad", "^1.0.0", "1.1.0");
    cb.adoptPackages([{ name: "evil", range: "^1.0.0", version: "9.9.9" }]);
    assert.equal(cb.store.lockedVersion("evil", "^1.0.0"), undefined);
    cb.adoptPackages([{ name: "left-pad", range: "^1.0.0", version: "1.3.0" }], {
      keepLocks: true,
    });
    assert.equal(cb.store.lockedVersion("left-pad", "^1.0.0"), "1.1.0");
    cb.adoptPackages([{ name: "left-pad", range: "^1.0.0", version: "1.3.0" }]);
    assert.equal(cb.store.lockedVersion("left-pad", "^1.0.0"), "1.3.0");
  } finally {
    if (session !== undefined) process.env.TCM_BRANCH = session;
  }
}

uses