From cc3244b1f64d8b3e8ad9afa62ee8710a931bbbf7 Mon Sep 17 00:00:00 2001 From: Vonny Jap Date: Fri, 31 May 2024 09:43:36 -0700 Subject: [PATCH] feat(3066): relax the stage trigger to allow join (#566) --- config/regex.js | 4 ++-- test/config/regex.test.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config/regex.js b/config/regex.js index 57fef6d7..4954014e 100644 --- a/config/regex.js +++ b/config/regex.js @@ -51,8 +51,8 @@ module.exports = { INTERNAL_TRIGGER: /^~([\w-]+)$/, // Stages can only be named with A-Z,a-z,0-9,-,_ STAGE_NAME: /^[\w-]+$/, - // Stage trigger like ~stage@deploy or ~stage@stageName:jobName - STAGE_TRIGGER: /^~stage@([\w-]+)(?::([\w-]+))?$/, + // Stage trigger like ~stage@deploy or ~stage@stageName:jobName or stage@deploy or stage@stageName:jobName + STAGE_TRIGGER: /^~?stage@([\w-]+)(?::([\w-]+))?$/, // Don't combine EXTERNAL_TRIGGER and EXTERNAL_TRIGGER_AND for backward compatibility // BlockBy does not support EXTERNAL_TRIGGER_AND // External trigger like ~sd@123:component (OR case) diff --git a/test/config/regex.test.js b/test/config/regex.test.js index ade0ec9e..120b4ee5 100644 --- a/test/config/regex.test.js +++ b/test/config/regex.test.js @@ -461,4 +461,21 @@ describe('config regex', () => { assert.isFalse(config.regex.SCM_URI.test('bitbucket.org:{123}')); }); }); + + describe('stageTrigger', () => { + const stageTriggerRegex = config.regex.STAGE_TRIGGER; + + it('matches valid stage triggers', () => { + assert.isTrue(stageTriggerRegex.test('stage@build')); + assert.isTrue(stageTriggerRegex.test('stage@build:setup')); + assert.isTrue(stageTriggerRegex.test('~stage@test')); + assert.isTrue(stageTriggerRegex.test('~stage@test:tearDown')); + }); + + it('does not match invalid stage triggers', () => { + assert.isFalse(stageTriggerRegex.test('stage:')); + assert.isFalse(stageTriggerRegex.test('stage:build:test')); + assert.isFalse(stageTriggerRegex.test('build')); + }); + }); });