Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add bots_ignore input #231

Merged
merged 3 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ jobs:

## Inputs

### `bots_ignore`

**Optional** A list of bots to ignore when linting the pull request title. Can be a comma-separated list.

### `comment`

**Optional** Post a comment in the pull request conversation with examples.
Expand Down
4 changes: 4 additions & 0 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ branding:
icon: align-left
color: blue
inputs:
bots_ignore:
required: false
description: A list of bots to ignore when linting the pull request title. Can be a comma-separated list.
default: ''
comment:
required: false
description: Post a comment in the pull request conversation with examples.
Expand Down
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/** @type {import('ts-jest').JestConfigWithTsJest} **/
module.exports = {
collectCoverage: true,
testEnvironment: 'node',
transform: {
'^.+.tsx?$': ['ts-jest', {}],
Expand Down
31 changes: 28 additions & 3 deletions src/__tests__/lint.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
import {getConventionalCommitTypes, lintPullRequest} from '../lint';
import {
getConventionalCommitTypes,
lintPullRequest,
isBotIgnored,
} from '../lint';
import {getInput} from '@actions/core';

jest.mock('@actions/core');

describe('getConvetionalCommitTypes tests', () => {
it('should return types', () => {
test('should return types', () => {
const types = getConventionalCommitTypes();

expect(
Expand Down Expand Up @@ -30,8 +37,26 @@ describe('lintPullRequest tests', () => {
];

tests.forEach(({args, expected}) => {
it(`should pass or fail linting ['${args}', '${expected}']`, async () => {
test(`should pass or fail linting ['${args}', '${expected}']`, async () => {
expect(await lintPullRequest(args)).toBe(expected);
});
});
});

jest.mock('@actions/github', () => ({
context: {
actor: 'test-bot',
},
}));

describe('isBotIgnored tests', () => {
test('should return true if the bot is in the ignore list', () => {
(getInput as jest.Mock).mockReturnValue('test-bot,another-bot');
expect(isBotIgnored()).toBe(true);
});

test('should return false if the bot is not in the ignore list', () => {
(getInput as jest.Mock).mockReturnValue('another-bot');
expect(isBotIgnored()).toBe(false);
});
});
14 changes: 12 additions & 2 deletions src/lint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ import {
getPullRequest,
} from './github';
import * as conventionalCommitTypes from 'conventional-commit-types';
import {getInput} from '@actions/core';
import {getInput, info} from '@actions/core';
import {context} from '@actions/github';

const types = Object.keys(conventionalCommitTypes.types);

export function isBotIgnored() {
const botsIgnore = getInput('bots_ignore').split(',');
return botsIgnore.includes(context.actor);
}

export function getConventionalCommitTypes(): string {
return types
.map(type => {
Expand All @@ -28,8 +34,12 @@ export async function lintPullRequest(title: string) {
}

export async function lint() {
const pr = await getPullRequest();
if (isBotIgnored()) {
info('Bot is ignored. Skipping linting.');
return;
}

const pr = await getPullRequest();
const isPrTitleOk = await lintPullRequest(pr.title);

if (isPrTitleOk) {
Expand Down
Loading