diff --git a/__tests__/index.test.js b/__tests__/index.test.js
index c6f7f94..2a3e2ef 100644
--- a/__tests__/index.test.js
+++ b/__tests__/index.test.js
@@ -128,6 +128,84 @@ describe('Azure DevOps Commit Validator', () => {
// Restore context
mockContext.payload.pull_request = originalPR;
});
+
+ it('should fail if both check-commits and check-pull-request are false', async () => {
+ mockGetInput.mockImplementation(name => {
+ if (name === 'check-commits') return 'false';
+ if (name === 'check-pull-request') return 'false';
+ if (name === 'github-token') return 'github-token';
+ return 'false';
+ });
+
+ await run();
+
+ expect(mockSetFailed).toHaveBeenCalledWith(
+ "At least one of 'check-commits' or 'check-pull-request' must be set to true. Both are currently set to false."
+ );
+ });
+
+ it('should pass when only check-commits is enabled', async () => {
+ mockGetInput.mockImplementation(name => {
+ if (name === 'check-commits') return 'true';
+ if (name === 'check-pull-request') return 'false';
+ if (name === 'github-token') return 'github-token';
+ if (name === 'fail-if-missing-workitem-commit-link') return 'false';
+ return 'false';
+ });
+
+ mockOctokit.rest.pulls.listCommits.mockResolvedValue({
+ data: []
+ });
+
+ await run();
+
+ expect(mockSetFailed).not.toHaveBeenCalled();
+ });
+
+ it('should pass when only check-pull-request is enabled', async () => {
+ mockGetInput.mockImplementation(name => {
+ if (name === 'check-commits') return 'false';
+ if (name === 'check-pull-request') return 'true';
+ if (name === 'github-token') return 'github-token';
+ return 'false';
+ });
+
+ mockOctokit.rest.pulls.get.mockResolvedValue({
+ data: {
+ title: 'Test PR AB#123',
+ body: 'Test body'
+ }
+ });
+
+ await run();
+
+ expect(mockSetFailed).not.toHaveBeenCalled();
+ });
+
+ it('should pass when both checks are enabled', async () => {
+ mockGetInput.mockImplementation(name => {
+ if (name === 'check-commits') return 'true';
+ if (name === 'check-pull-request') return 'true';
+ if (name === 'github-token') return 'github-token';
+ if (name === 'fail-if-missing-workitem-commit-link') return 'false';
+ return 'false';
+ });
+
+ mockOctokit.rest.pulls.listCommits.mockResolvedValue({
+ data: []
+ });
+
+ mockOctokit.rest.pulls.get.mockResolvedValue({
+ data: {
+ title: 'Test PR AB#123',
+ body: 'Test body'
+ }
+ });
+
+ await run();
+
+ expect(mockSetFailed).not.toHaveBeenCalled();
+ });
});
describe('Commit validation', () => {
diff --git a/badges/coverage.svg b/badges/coverage.svg
index c0e9f8b..dbfed95 100644
--- a/badges/coverage.svg
+++ b/badges/coverage.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index ebbd9ec..27c6181 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "azure-devops-work-item-link-enforcer-and-linker",
- "version": "3.0.5",
+ "version": "3.0.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "azure-devops-work-item-link-enforcer-and-linker",
- "version": "3.0.5",
+ "version": "3.0.6",
"license": "MIT",
"dependencies": {
"@actions/core": "^2.0.1",
diff --git a/package.json b/package.json
index 549ac1d..a8cd0cd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "azure-devops-work-item-link-enforcer-and-linker",
- "version": "3.0.5",
+ "version": "3.0.6",
"private": true,
"type": "module",
"description": "GitHub Action to enforce that each commit in a pull request be linked to an Azure DevOps work item and automatically link the pull request to each work item ",
diff --git a/src/index.js b/src/index.js
index 3e2b123..a132432 100644
--- a/src/index.js
+++ b/src/index.js
@@ -39,6 +39,14 @@ export async function run() {
const commentOnFailure = core.getInput('comment-on-failure') === 'true';
const validateWorkItemExistsFlag = core.getInput('validate-work-item-exists') === 'true';
+ // Validate that at least one check is enabled
+ if (!checkPullRequest && !checkCommits) {
+ core.setFailed(
+ `At least one of 'check-commits' or 'check-pull-request' must be set to true. Both are currently set to false.`
+ );
+ return;
+ }
+
// Get context
const context = github.context;
const pullNumber = context.payload.pull_request?.number;