Skip to main content
Glama
index.test.ts5.62 kB
import { enterPre, exitPre, readPreState } from "./index"; import * as fs from "fs-extra"; import path from "path"; import { PreEnterButInPreModeError, PreExitButNotInPreModeError, } from "@changesets/errors"; import { testdir } from "@changesets/test-utils"; describe("enterPre", () => { it("should enter", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), }); await enterPre(cwd, "next"); expect(await fs.readJson(path.join(cwd, ".changeset", "pre.json"))) .toMatchInlineSnapshot(` { "changesets": [], "initialVersions": { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, "mode": "pre", "tag": "next", } `); }); it("should throw if already in pre", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), ".changeset/pre.json": JSON.stringify({ changesets: [], initialVersions: { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, mode: "pre", tag: "next", }), }); await expect(enterPre(cwd, "some-tag")).rejects.toBeInstanceOf( PreEnterButInPreModeError ); }); it("should enter if already exited pre mode", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), ".changeset/pre.json": JSON.stringify({ changesets: ["slimy-dingos-whisper"], initialVersions: { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, mode: "exit", tag: "beta", }), }); await enterPre(cwd, "next"); expect(await fs.readJson(path.join(cwd, ".changeset", "pre.json"))) .toMatchInlineSnapshot(` { "changesets": [ "slimy-dingos-whisper", ], "initialVersions": { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, "mode": "pre", "tag": "next", } `); }); }); describe("exitPre", () => { it("should exit", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), ".changeset/pre.json": JSON.stringify({ changesets: [], initialVersions: { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, mode: "pre", tag: "next", }), }); await exitPre(cwd); expect(await fs.readJson(path.join(cwd, ".changeset", "pre.json"))) .toMatchInlineSnapshot(` { "changesets": [], "initialVersions": { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, "mode": "exit", "tag": "next", } `); }); it("should throw if not in pre", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), ".changeset/config.json": JSON.stringify({}), }); await expect(exitPre(cwd)).rejects.toBeInstanceOf( PreExitButNotInPreModeError ); }); }); test("readPreState reads the pre state", async () => { const cwd = await testdir({ "package.json": JSON.stringify({ private: true, workspaces: ["packages/*"], }), "packages/pkg-a/package.json": JSON.stringify({ name: "pkg-a", version: "1.0.0", dependencies: { "pkg-b": "1.0.0", }, }), "packages/pkg-b/package.json": JSON.stringify({ name: "pkg-b", version: "1.0.0", }), ".changeset/pre.json": JSON.stringify({ changesets: [], initialVersions: { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, mode: "pre", tag: "next", }), }); expect(await readPreState(cwd)).toMatchInlineSnapshot(` { "changesets": [], "initialVersions": { "pkg-a": "1.0.0", "pkg-b": "1.0.0", }, "mode": "pre", "tag": "next", } `); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ajaystream/hubspot-mcp-custom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server