forked from semantic-release/commit-analyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathload-release-rules.test.js
70 lines (56 loc) · 2.65 KB
/
load-release-rules.test.js
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
import test from "ava";
import loadReleaseRules from "../lib/load-release-rules.js";
import testReleaseRules from "./fixtures/release-rules.cjs";
const cwd = process.cwd();
test('Accept a "releaseRules" option', async (t) => {
const releaseRules = await loadReleaseRules({ releaseRules: testReleaseRules }, { cwd });
t.deepEqual(releaseRules, testReleaseRules);
});
test('Accept a "releaseRules" option that reference a requireable module', async (t) => {
const releaseRules = await loadReleaseRules({ releaseRules: "./test/fixtures/release-rules.cjs" }, { cwd });
t.deepEqual(releaseRules, testReleaseRules);
});
test('Return undefined if "releaseRules" not set', async (t) => {
const releaseRules = await loadReleaseRules({}, { cwd });
t.is(releaseRules, undefined);
});
test('Preserve release rules set to "false" or "null"', async (t) => {
const releaseRules = await loadReleaseRules(
{
releaseRules: [
{ type: "feat", release: false },
{ type: "fix", release: null },
],
},
{ cwd }
);
t.deepEqual(releaseRules, [
{ type: "feat", release: false },
{ type: "fix", release: null },
]);
});
test('Throw error if "releaseRules" reference invalid commit type', async (t) => {
await t.throwsAsync(loadReleaseRules({ releaseRules: [{ tag: "Update", release: "invalid" }] }, { cwd }), {
message: /Error in commit-analyzer configuration: "invalid" is not a valid release type\. Valid values are:\[?.*]/,
});
});
test('Throw error if a rule in "releaseRules" does not have a release type', async (t) => {
await t.throwsAsync(loadReleaseRules({ releaseRules: [{ tag: "Update" }] }, { cwd }), {
message: /Error in commit-analyzer configuration: rules must be an object with a "release" property/,
});
});
test('Throw error if "releaseRules" is not an Array or a String', async (t) => {
await t.throwsAsync(loadReleaseRules({ releaseRules: {} }, { cwd }), {
message: /Error in commit-analyzer configuration: "releaseRules" must be an array of rules/,
});
});
test('Throw error if "releaseRules" option reference a requirable module that is not an Array or a String', async (t) => {
await t.throwsAsync(loadReleaseRules({ releaseRules: "./test/fixtures/release-rules-invalid.cjs" }, { cwd }), {
message: /Error in commit-analyzer configuration: "releaseRules" must be an array of rules/,
});
});
test('Throw error if "releaseRules" contains an undefined rule', async (t) => {
await t.throwsAsync(loadReleaseRules({ releaseRules: [{ type: "feat", release: "minor" }, undefined] }, { cwd }), {
message: /Error in commit-analyzer configuration: rules must be an object with a "release" property/,
});
});