refactor: replace DeploymentSkipPatterns validator with VCS_DEPLOYMENT_SKIP_PATTERNS constant

This commit is contained in:
harsh mahajan
2026-05-14 17:59:34 +05:30
parent 3cc600d29a
commit b5f0ebb37b
4 changed files with 7 additions and 75 deletions
+5
View File
@@ -514,3 +514,8 @@ const CSV_ALLOWED_DATABASE_TYPES = [
DATABASE_TYPE_TABLESDB,
DATABASE_TYPE_VECTORSDB
];
// VCS deployment skip patterns
const VCS_DEPLOYMENT_SKIP_PATTERNS = [
'[skip ci]',
];
@@ -8,8 +8,8 @@ use Appwrite\Event\Publisher\Build as BuildPublisher;
use Appwrite\Extend\Exception;
use Appwrite\Filter\BranchDomain as BranchDomainFilter;
use Appwrite\Vcs\Comment;
use Appwrite\Vcs\Validator\DeploymentSkipPatterns;
use Utopia\Config\Config;
use Utopia\Validator\Contains;
use Utopia\Console;
use Utopia\Database\Database;
use Utopia\Database\Document;
@@ -96,7 +96,7 @@ trait Deployment
$resource = $authorization->skip(fn () => $dbForProject->getDocument($resourceCollection, $resourceId));
$resourceInternalId = $resource->getSequence();
$commitSkip = new DeploymentSkipPatterns();
$commitSkip = new Contains(VCS_DEPLOYMENT_SKIP_PATTERNS);
if ($commitSkip->isValid($providerCommitMessage)) {
Span::add("{$logBase}.build.skipped.reason", 'commitMessage');
Span::add("{$logBase}.build.skipped", 'true');
@@ -1,17 +0,0 @@
<?php
namespace Appwrite\Vcs\Validator;
use Utopia\Validator\Contains;
class DeploymentSkipPatterns extends Contains
{
private const PATTERNS = [
'[skip ci]',
];
public function __construct()
{
parent::__construct(self::PATTERNS);
}
}
@@ -1,56 +0,0 @@
<?php
namespace Tests\Unit\Vcs\Validator;
use Appwrite\Vcs\Validator\DeploymentSkipPatterns;
use PHPUnit\Framework\TestCase;
class DeploymentSkipPatternsTest extends TestCase
{
private DeploymentSkipPatterns $validator;
protected function setUp(): void
{
$this->validator = new DeploymentSkipPatterns();
}
public function testKnownSkipDirectivesSkip(): void
{
$this->assertTrue($this->validator->isValid('[skip ci] update changelog'));
}
public function testKnownSkipDirectivesAreCaseInsensitive(): void
{
$this->assertTrue($this->validator->isValid('[SKIP CI] update changelog'));
}
public function testMessageWithoutKnownDirectiveProceeds(): void
{
$this->assertFalse($this->validator->isValid('fix: real bug fix'));
$this->assertFalse($this->validator->isValid('feat: add new feature'));
$this->assertFalse($this->validator->isValid('skip deploy without brackets'));
$this->assertFalse($this->validator->isValid('deploy this please'));
$this->assertFalse($this->validator->isValid('skip-checks:true'));
}
public function testDirectiveCanAppearAnywhere(): void
{
$this->assertTrue($this->validator->isValid('docs: update readme [skip ci]'));
$this->assertTrue($this->validator->isValid('docs: update readme[skip ci]'));
$this->assertTrue($this->validator->isValid('prefix[skip ci]suffix'));
$this->assertFalse($this->validator->isValid('refactor: skip ci cache seeding'));
}
public function testMultilineCommitMessageSkips(): void
{
$message = "feat: add new stuff\n\nMore detail here.\n\n[skip ci]";
$this->assertTrue($this->validator->isValid($message));
}
public function testNonStringCommitMessageProceeds(): void
{
$this->assertFalse($this->validator->isValid(null));
$this->assertFalse($this->validator->isValid([]));
}
}