8000 [FrameworkBundle] Add `--exclude` option to the `cache:pool:clear` co… · symfony/symfony@fa93e0c · GitHub
[go: up one dir, main page]

Skip to content

Commit fa93e0c

Browse files
committed
[FrameworkBundle] Add --exclude option to the cache:pool:clear command
1 parent f0959b4 commit fa93e0c

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ CHANGELOG
1212
* Add `DomCrawlerAssertionsTrait::assertAnySelectorTextNotContains(string $selector, string $text)`
1313
* Deprecate `EnableLoggerDebugModePass`, use argument `$debug` of HttpKernel's `Logger` instead
1414
* Deprecate `AddDebugLogProcessorPass::configureLogger()`, use HttpKernel's `DebugLoggerConfigurator` instead
15+
* Add `--exclude` option to the `cache:pool:clear` command
1516

1617
6.3
1718
---

src/Symfony/Bundle/FrameworkBundle/Command/CachePoolClearCommand.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ protected function configure(): void
5353
new InputArgument('pools', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'A list of cache pools or cache pool clearers'),
5454
])
5555
->addOption('all', null, InputOption::VALUE_NONE, 'Clear all cache pools')
56+
->addOption('exclude', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'A list of cache pools or cache pool clearers to exclude')
5657
->setHelp(<<<'EOF'
5758
The <info>%command.name%</info> command clears the given cache pools or cache pool clearers.
5859
@@ -70,17 +71,23 @@ protected function execute(InputInterface $input, OutputInterface $output): int
7071
$clearers = [];
7172

7273
$poolNames = $input->getArgument('pools');
74+
$excludedPoolNames = $input->getOption('exclude');
7375
if ($input->getOption('all')) {
7476
if (!$this->poolNames) {
7577
throw new InvalidArgumentException('Could not clear all cache pools, try specifying a specific pool or cache clearer.');
7678
}
7779

78-
$io->comment('Clearing all cache pools...');
80+
if (!$excludedPoolNames) {
81+
$io->comment('Clearing all cache pools...');
82+
}
83+
7984
$poolNames = $this->poolNames;
8085
} elseif (!$poolNames) {
8186
throw new InvalidArgumentException('Either specify at least one pool name, or provide the --all option to clear all pools.');
8287
}
8388

89+
$poolNames = array_diff($poolNames, $excludedPoolNames);
90+
8491
foreach ($poolNames as $id) {
8592
if ($this->poolClearer->hasPool($id)) {
8693
$pools[$id] = $id;

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/CachePoolClearCommandTest.php

+11
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,17 @@ public function testClearFailed()
132132
$this->assertStringContainsString('[WARNING] Cache pool "cache.public_pool" could not be cleared.', $tester->getDisplay());
133133
}
134134

135+
public function testExcludedPool()
136+
{
137+
$tester = $this->createCommandTester(['cache.app_clearer']);
138+
$tester->execute(['--all' => true, '--exclude' => ['cache.app_clearer']], ['decorated' => false]);
139+
140+
$tester->assertCommandIsSuccessful('cache:pool:clear exits with 0 in case of success');
141+
$this->assertStringNotContainsString('Clearing all cache pools...', $tester->getDisplay());
142+
$this->assertStringNotContainsString('Calling cache clearer: cache.app_clearer', $tester->getDisplay());
143+
$this->assertStringContainsString('[OK] Cache was successfully cleared.', $tester->getDisplay());
144+
}
145+
135146
private function createCommandTester(array $poolNames = null)
136147
{
137148
$application = new Application(static::$kernel);

0 commit comments

Comments
 (0)
0