-
Notifications
You must be signed in to change notification settings - Fork 495
/
run.test.ts
128 lines (119 loc) 路 4.22 KB
/
run.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { error } from "@changesets/logger";
import { testdir } from "@changesets/test-utils";
import { run } from "./run";
jest.mock("@changesets/logger");
jest.mock("./commands/version");
describe("cli", () => {
describe("version", () => {
it("should validate package name passed in from --ignore flag", 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",
}),
".changeset/config.json": JSON.stringify({}),
});
try {
await run(["version"], { ignore: "pkg-c" }, cwd);
} catch (e) {
// ignore errors. We just want to validate the error message
}
const loggerErrorCalls = (error as any).mock.calls;
expect(loggerErrorCalls.length).toEqual(1);
expect(loggerErrorCalls[0][0]).toEqual(
`The package "pkg-c" is passed to the \`--ignore\` option but it is not found in the project. You may have misspelled the package name.`
);
});
it("should throw if dependents of ignored packages are not explicitly listed in the ignore array", 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({}),
});
try {
await run(["version"], { ignore: ["pkg-b"] }, cwd);
} catch (e) {
// ignore the error. We just want to validate the error message
}
const loggerErrorCalls = (error as any).mock.calls;
expect(loggerErrorCalls.length).toEqual(1);
expect(loggerErrorCalls[0][0]).toEqual(
`The package "pkg-a" depends on the ignored package "pkg-b", but "pkg-a" is not being ignored. Please pass "pkg-a" to the \`--ignore\` flag.`
);
});
it("should throw if `--ignore` flag is used while ignore array is also defined in the config file ", 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({
ignore: ["pkg-a"],
}),
});
try {
await run(["version"], { ignore: "pkg-b" }, cwd);
} catch (e) {
// ignore errors. We just want to validate the error message
}
const loggerErrorCalls = (error as any).mock.calls;
expect(loggerErrorCalls.length).toEqual(1);
expect(loggerErrorCalls[0][0]).toEqual(
`It looks like you are trying to use the \`--ignore\` option while ignore is defined in the config file. This is currently not allowed, you can only use one of them at a time.`
);
});
});
describe("pre", () => {
it("should throw an error if tag not passed in", 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",
}),
".changeset/config.json": JSON.stringify({}),
});
try {
await run(["pre", "enter"], {}, cwd);
} catch (e) {
// ignore the error. We just want to validate the error message
}
const loggerErrorCalls = (error as any).mock.calls;
expect(loggerErrorCalls.length).toEqual(1);
expect(loggerErrorCalls[0][0]).toEqual(
`A tag must be passed when using prerelease enter`
);
});
});
});