-
Notifications
You must be signed in to change notification settings - Fork 74
/
load-release-rules.test.js
70 lines (56 loc) · 2.62 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.js';
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 requierable module', async t => {
const releaseRules = await loadReleaseRules({releaseRules: './test/fixtures/release-rules.js'}, {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 requierable module that is not an Array or a String', async t => {
await t.throwsAsync(() => loadReleaseRules({releaseRules: './test/fixtures/release-rules-invalid.js'}, {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/,
});
});