Skip to content

Commit 686a53e

Browse files
derKubagesellix
andauthored
Updated and tested check-and-get branch (#2)
* bump actions/core and actions/github * join with the get-pr-commits action * fix some tests * add more coverage * update to newer version * build dist file * update linting ruleset * fix linting * add missing token to the test job Co-authored-by: Tobias Gesellchen <[email protected]>
1 parent 06e1cc1 commit 686a53e

File tree

13 files changed

+17572
-20387
lines changed

13 files changed

+17572
-20387
lines changed

.eslintrc.json

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"plugins": ["jest", "@typescript-eslint"],
3-
"extends": ["plugin:github/es6"],
3+
"extends": ["plugin:github/recommended"],
44
"parser": "@typescript-eslint/parser",
55
"parserOptions": {
66
"ecmaVersion": 9,
@@ -11,44 +11,10 @@
1111
"eslint-comments/no-use": "off",
1212
"import/no-namespace": "off",
1313
"no-unused-vars": "off",
14-
"@typescript-eslint/no-unused-vars": "error",
15-
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
16-
"@typescript-eslint/no-require-imports": "error",
17-
"@typescript-eslint/array-type": "error",
18-
"@typescript-eslint/await-thenable": "error",
19-
"@typescript-eslint/ban-ts-ignore": "error",
2014
"camelcase": "off",
21-
"@typescript-eslint/camelcase": "error",
22-
"@typescript-eslint/class-name-casing": "error",
23-
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
24-
"@typescript-eslint/func-call-spacing": ["error", "never"],
25-
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
26-
"@typescript-eslint/no-array-constructor": "error",
27-
"@typescript-eslint/no-empty-interface": "error",
28-
"@typescript-eslint/no-explicit-any": "error",
29-
"@typescript-eslint/no-extraneous-class": "error",
30-
"@typescript-eslint/no-for-in-array": "error",
31-
"@typescript-eslint/no-inferrable-types": "error",
32-
"@typescript-eslint/no-misused-new": "error",
33-
"@typescript-eslint/no-namespace": "error",
34-
"@typescript-eslint/no-non-null-assertion": "warn",
35-
"@typescript-eslint/no-object-literal-type-assertion": "error",
36-
"@typescript-eslint/no-unnecessary-qualifier": "error",
37-
"@typescript-eslint/no-unnecessary-type-assertion": "error",
38-
"@typescript-eslint/no-useless-constructor": "error",
39-
"@typescript-eslint/no-var-requires": "error",
40-
"@typescript-eslint/prefer-for-of": "warn",
41-
"@typescript-eslint/prefer-function-type": "warn",
42-
"@typescript-eslint/prefer-includes": "error",
43-
"@typescript-eslint/prefer-interface": "error",
44-
"@typescript-eslint/prefer-string-starts-ends-with": "error",
45-
"@typescript-eslint/promise-function-async": "error",
46-
"@typescript-eslint/require-array-sort-compare": "error",
47-
"@typescript-eslint/restrict-plus-operands": "error",
48-
"semi": "off",
49-
"@typescript-eslint/semi": ["error", "never"],
50-
"@typescript-eslint/type-annotation-spacing": "error",
51-
"@typescript-eslint/unbound-method": "error"
15+
"i18n-text/no-en": "off",
16+
"semi": "off"
17+
5218
},
5319
"env": {
5420
"node": true,

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
- uses: actions/checkout@v1
2323
- uses: ./
2424
with:
25+
token: ${{ secrets.GITHUB_TOKEN }}
2526
pattern: '\[(BUGFIX|DOCS|FEATURE|TASK)\] .+$'
2627
error: 'Your first line has to contain a commit type like "[BUGFIX]".'
2728
...

__tests__/commit-message-checker.test.ts

Lines changed: 9 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -26,102 +26,28 @@ let commitMessageChecker: any
2626
describe('commit-message-checker tests', () => {
2727
beforeAll(() => {
2828
// Now import
29-
commitMessageChecker = require('../lib/commit-message-checker')
30-
})
31-
32-
it('requires pattern', async () => {
33-
const checkerArguments: ICheckerArguments = {
34-
pattern: '',
35-
flags: '',
36-
error: '',
37-
messages: []
38-
}
39-
await expect(
40-
commitMessageChecker.checkCommitMessages(checkerArguments)
41-
).rejects.toThrow('PATTERN not defined.')
42-
})
43-
44-
it('requires valid flags', async () => {
45-
const checkerArguments: ICheckerArguments = {
46-
pattern: 'some-pattern',
47-
flags: 'abcdefgh',
48-
error: '',
49-
messages: []
50-
}
51-
await expect(
52-
commitMessageChecker.checkCommitMessages(checkerArguments)
53-
).rejects.toThrow('FLAGS contains invalid characters "abcdefh".')
54-
})
55-
56-
it('requires error message', async () => {
57-
const checkerArguments: ICheckerArguments = {
58-
pattern: 'some-pattern',
59-
flags: '',
60-
error: '',
61-
messages: []
62-
}
63-
await expect(
64-
commitMessageChecker.checkCommitMessages(checkerArguments)
65-
).rejects.toThrow('ERROR not defined.')
66-
})
67-
68-
it('requires messages', async () => {
69-
const checkerArguments: ICheckerArguments = {
70-
pattern: 'some-pattern',
71-
flags: '',
72-
error: 'some-error',
73-
messages: []
74-
}
75-
await expect(
76-
commitMessageChecker.checkCommitMessages(checkerArguments)
77-
).rejects.toThrow('MESSAGES not defined.')
29+
commitMessageChecker = require('../src/commit-message-checker')
7830
})
7931

8032
it('check fails single message', async () => {
8133
const checkerArguments: ICheckerArguments = {
8234
pattern: 'some-pattern',
8335
flags: '',
84-
error: 'some-error',
85-
messages: ['some-message']
36+
error: 'some-error'
8637
}
87-
await expect(
88-
commitMessageChecker.checkCommitMessages(checkerArguments)
89-
).rejects.toThrow('some-error')
90-
})
91-
92-
it('check fails multiple messages', async () => {
93-
const checkerArguments: ICheckerArguments = {
94-
pattern: 'some-pattern',
95-
flags: '',
96-
error: 'some-error',
97-
messages: ['some-message', 'some-pattern']
98-
}
99-
await expect(
100-
commitMessageChecker.checkCommitMessages(checkerArguments)
101-
).rejects.toThrow('some-error')
38+
expect(
39+
commitMessageChecker.checkCommitMessages(checkerArguments, 'some-message')
40+
).toBe('some-error')
10241
})
10342

10443
it('check succeeds on single message', async () => {
10544
const checkerArguments: ICheckerArguments = {
10645
pattern: '.*',
10746
flags: '',
108-
error: 'some-error',
109-
messages: ['some-message']
110-
}
111-
await expect(
112-
commitMessageChecker.checkCommitMessages(checkerArguments)
113-
).resolves.toBeUndefined()
114-
})
115-
116-
it('check succeeds on multiple messages', async () => {
117-
const checkerArguments: ICheckerArguments = {
118-
pattern: '.*',
119-
flags: '',
120-
error: 'some-error',
121-
messages: ['some-message', 'other-message']
47+
error: 'some-error'
12248
}
123-
await expect(
124-
commitMessageChecker.checkCommitMessages(checkerArguments)
125-
).resolves.toBeUndefined()
49+
expect(
50+
commitMessageChecker.checkCommitMessages(checkerArguments, 'some-message')
51+
).toBe('')
12652
})
12753
})

__tests__/input-helper.test.ts

Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ let inputHelper: any
2626

2727
// Mock @actions/core
2828
let inputs = {} as any
29-
const mockCore = jest.genMockFromModule('@actions/core') as any
29+
const mockCore: any = jest.genMockFromModule('@actions/core')
3030
mockCore.getInput = (name: string, options?: InputOptions) => {
3131
const val = inputs[name] || ''
3232
if (options && options.required && !val) {
@@ -36,7 +36,7 @@ mockCore.getInput = (name: string, options?: InputOptions) => {
3636
}
3737

3838
// Mock @actions/github
39-
const mockGitHub = jest.genMockFromModule('@actions/github') as any
39+
const mockGitHub: any = jest.genMockFromModule('@actions/github')
4040
mockGitHub.context = {}
4141

4242
describe('input-helper tests', () => {
@@ -46,7 +46,7 @@ describe('input-helper tests', () => {
4646
jest.setMock('@actions/github', mockGitHub)
4747

4848
// Now import
49-
inputHelper = require('../lib/input-helper')
49+
inputHelper = require('../src/input-helper')
5050
})
5151

5252
beforeEach(() => {
@@ -73,25 +73,6 @@ describe('input-helper tests', () => {
7373
}).toThrow('Input required and not supplied: error')
7474
})
7575

76-
it('requires event', () => {
77-
inputs.pattern = 'some-pattern'
78-
inputs.error = 'some-error'
79-
expect(() => {
80-
const checkerArguments: ICheckerArguments = inputHelper.getInputs()
81-
}).toThrow('Event "undefined" is not supported.')
82-
})
83-
84-
it('requires valid event', () => {
85-
mockGitHub.context = {
86-
eventName: 'some-event'
87-
}
88-
inputs.pattern = 'some-pattern'
89-
inputs.error = 'some-error'
90-
expect(() => {
91-
const checkerArguments: ICheckerArguments = inputHelper.getInputs()
92-
}).toThrow('Event "some-event" is not supported.')
93-
})
94-
9576
it('sets flags', () => {
9677
mockGitHub.context = {
9778
eventName: 'pull_request',
@@ -109,23 +90,6 @@ describe('input-helper tests', () => {
10990
expect(checkerArguments.flags).toBe('abcdefgh')
11091
})
11192

112-
it('requires pull_request payload', () => {
113-
mockGitHub.context = {
114-
eventName: 'pull_request',
115-
payload: {
116-
pull_request: {
117-
title: '',
118-
body: ''
119-
}
120-
}
121-
}
122-
inputs.pattern = 'some-pattern'
123-
inputs.error = 'some-error'
124-
expect(() => {
125-
const checkerArguments: ICheckerArguments = inputHelper.getInputs()
126-
}).toThrow('No pull_request found in the payload.')
127-
})
128-
12993
it('sets correct pull_request title payload', () => {
13094
mockGitHub.context = {
13195
eventName: 'pull_request',
@@ -142,8 +106,6 @@ describe('input-helper tests', () => {
142106
expect(checkerArguments).toBeTruthy()
143107
expect(checkerArguments.pattern).toBe('some-pattern')
144108
expect(checkerArguments.error).toBe('some-error')
145-
expect(checkerArguments.messages).toBeTruthy()
146-
expect(checkerArguments.messages[0]).toBe('some-title')
147109
})
148110

149111
it('sets correct pull_request title and body payload', () => {
@@ -162,34 +124,6 @@ describe('input-helper tests', () => {
162124
expect(checkerArguments).toBeTruthy()
163125
expect(checkerArguments.pattern).toBe('some-pattern')
164126
expect(checkerArguments.error).toBe('some-error')
165-
expect(checkerArguments.messages).toBeTruthy()
166-
expect(checkerArguments.messages[0]).toBe('some-title\n\nsome-body')
167-
})
168-
169-
it('requires push payload', () => {
170-
mockGitHub.context = {
171-
eventName: 'push',
172-
payload: {}
173-
}
174-
inputs.pattern = 'some-pattern'
175-
inputs.error = 'some-error'
176-
expect(() => {
177-
const checkerArguments: ICheckerArguments = inputHelper.getInputs()
178-
}).toThrow('No commits found in the payload.')
179-
})
180-
181-
it('requires push payload commits', () => {
182-
mockGitHub.context = {
183-
eventName: 'push',
184-
payload: {
185-
commits: {}
186-
}
187-
}
188-
inputs.pattern = 'some-pattern'
189-
inputs.error = 'some-error'
190-
expect(() => {
191-
const checkerArguments: ICheckerArguments = inputHelper.getInputs()
192-
}).toThrow('No commits found in the payload.')
193127
})
194128

195129
it('sets correct single push payload', () => {
@@ -209,8 +143,6 @@ describe('input-helper tests', () => {
209143
expect(checkerArguments).toBeTruthy()
210144
expect(checkerArguments.pattern).toBe('some-pattern')
211145
expect(checkerArguments.error).toBe('some-error')
212-
expect(checkerArguments.messages).toBeTruthy()
213-
expect(checkerArguments.messages[0]).toBe('some-message')
214146
})
215147

216148
it('sets correct multiple push payload', () => {
@@ -233,8 +165,76 @@ describe('input-helper tests', () => {
233165
expect(checkerArguments).toBeTruthy()
234166
expect(checkerArguments.pattern).toBe('some-pattern')
235167
expect(checkerArguments.error).toBe('some-error')
236-
expect(checkerArguments.messages).toBeTruthy()
237-
expect(checkerArguments.messages[0]).toBe('some-message')
238-
expect(checkerArguments.messages[1]).toBe('other-message')
168+
})
169+
170+
it('requires pattern', async () => {
171+
const checkerArguments: ICheckerArguments = {
172+
pattern: '',
173+
flags: '',
174+
error: ''
175+
}
176+
177+
expect(() => {
178+
inputHelper.checkArgs(checkerArguments)
179+
}).toThrow('PATTERN not defined.')
180+
})
181+
182+
it('requires valid flags', async () => {
183+
const checkerArguments: ICheckerArguments = {
184+
pattern: 'some-pattern',
185+
flags: 'abcdefgh',
186+
error: ''
187+
}
188+
expect(() => {
189+
inputHelper.checkArgs(checkerArguments)
190+
}).toThrow('FLAGS contains invalid characters "abcdefh".')
191+
})
192+
193+
it('requires valid error message', async () => {
194+
const checkerArguments: ICheckerArguments = {
195+
pattern: 'some-pattern',
196+
flags: 'g',
197+
error: ''
198+
}
199+
expect(() => {
200+
inputHelper.checkArgs(checkerArguments)
201+
}).toThrow('ERROR not defined.')
202+
})
203+
204+
it('should throw error message on genOutput', async () => {
205+
expect(() => {
206+
inputHelper.genOutput()
207+
}).toThrow("Cannot read properties of undefined (reading 'map')")
208+
})
209+
210+
it('should return error message on genOutput', async () => {
211+
const attributes = {
212+
commitInfos: [
213+
{
214+
sha: 'aaaaaaa1111',
215+
message: 'message1'
216+
},
217+
{
218+
sha: 'bbbbbbb2222',
219+
message: 'message2'
220+
}
221+
],
222+
preErrorMsg: 'i am a preErrorMessage',
223+
postErrorMSG: 'i am a posterrormessage'
224+
}
225+
const expected: any = inputHelper.genOutput(
226+
attributes.commitInfos,
227+
attributes.preErrorMsg,
228+
attributes.postErrorMSG
229+
)
230+
231+
expect(expected).toMatchInlineSnapshot(`
232+
"i am a preErrorMessage
233+
234+
aaaaaaa1111 message1
235+
bbbbbbb2222 message2
236+
237+
i am a posterrormessage"
238+
`)
239239
})
240240
})

0 commit comments

Comments
 (0)