File tree Expand file tree Collapse file tree 4 files changed +81
-0
lines changed
Expand file tree Collapse file tree 4 files changed +81
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Core ;
6+
7+ use Attribute ;
8+
9+ #[Attribute(Attribute::TARGET_CLASS )]
10+ final class DoNotDiscover
11+ {
12+ }
Original file line number Diff line number Diff line change 1212use Tempest \Container \Container ;
1313use Tempest \Core \DiscoversPath ;
1414use Tempest \Core \Discovery ;
15+ use Tempest \Core \DoNotDiscover ;
1516use Tempest \Core \Kernel ;
1617use Tempest \Reflection \ClassReflector ;
1718use Throwable ;
@@ -94,6 +95,10 @@ public function __invoke(): void
9495 }
9596 }
9697
98+ if ($ input instanceof ClassReflector && $ input ->hasAttribute (DoNotDiscover::class)) {
99+ continue ;
100+ }
101+
97102 if ($ input instanceof ClassReflector) {
98103 $ discovery ->discover ($ input );
99104 } elseif ($ discovery instanceof DiscoversPath) {
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tests \Tempest \Fixtures \Discovery ;
6+
7+ use Tempest \Core \DoNotDiscover ;
8+ use Tempest \Database \Migration ;
9+ use Tempest \Database \QueryStatement ;
10+
11+ #[DoNotDiscover]
12+ final class HiddenMigration implements Migration
13+ {
14+ public function getName (): string
15+ {
16+ return 'hidden-migration ' ;
17+ }
18+
19+ public function up (): ?QueryStatement
20+ {
21+ return null ;
22+ }
23+
24+ public function down (): ?QueryStatement
25+ {
26+ return null ;
27+ }
28+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tests \Tempest \Integration \Core ;
6+
7+ use function PHPUnit \Framework \assertNotContains ;
8+ use Tempest \Core \Kernel \LoadDiscoveryClasses ;
9+ use Tempest \Database \DatabaseConfig ;
10+ use Tempest \Database \MigrationDiscovery ;
11+ use function Tempest \get ;
12+ use Tests \Tempest \Fixtures \Discovery \HiddenMigration ;
13+ use Tests \Tempest \Integration \FrameworkIntegrationTestCase ;
14+
15+ /**
16+ * @internal
17+ */
18+ final class LoadDiscoveryClassesTest extends FrameworkIntegrationTestCase
19+ {
20+ public function test_hidden_from_discovery (): void
21+ {
22+ $ this ->kernel ->discoveryClasses = [
23+ MigrationDiscovery::class,
24+ ];
25+
26+ $ this ->kernel ->discoveryLocations = [
27+ realpath (__DIR__ .'../../Fixtures/Discovery ' ),
28+ ];
29+
30+ (new LoadDiscoveryClasses ($ this ->kernel , $ this ->container ));
31+
32+ $ migrations = get (DatabaseConfig::class)->getMigrations ();
33+
34+ assertNotContains (HiddenMigration::class, $ migrations );
35+ }
36+ }
You can’t perform that action at this time.
0 commit comments