File tree Expand file tree Collapse file tree 5 files changed +58
-0
lines changed
Expand file tree Collapse file tree 5 files changed +58
-0
lines changed Original file line number Diff line number Diff line change @@ -146,6 +146,13 @@ public function test_you_can_ignore_the_default_baseline(): void
146146 $ this ->assertCheckHasErrors ($ cmdTester );
147147 }
148148
149+ public function test_dependencies_should_not_leak_between_files (): void
150+ {
151+ $ cmdTester = $ this ->runCheck (__DIR__ .'/../_fixtures/configDependenciesLeak.php ' );
152+
153+ $ this ->assertCheckHasSuccess ($ cmdTester );
154+ }
155+
149156 public function test_baseline_line_numbers_can_be_ignored (): void
150157 {
151158 $ configFilePath = __DIR__ .'/../_fixtures/configIgnoreBaselineLineNumbers.php ' ;
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace App \DependenciesLeak \FirstModule ;
6+
7+ class Router {
8+ public static function define (): void
9+ {
10+
11+ }
12+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace App \DependenciesLeak \FirstModule ;
6+
7+ Router::define ();
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace App \DependenciesLeak \SecondModule ;
6+
7+ class SomeClass {
8+
9+ }
Original file line number Diff line number Diff line change 1+ <?php
2+ declare (strict_types=1 );
3+
4+ use Arkitect \ClassSet ;
5+ use Arkitect \CLI \Config ;
6+ use Arkitect \Expression \ForClasses \HaveNameMatching ;
7+ use Arkitect \Expression \ForClasses \Implement ;
8+ use Arkitect \Expression \ForClasses \NotDependsOnTheseNamespaces ;
9+ use Arkitect \Expression \ForClasses \NotHaveDependencyOutsideNamespace ;
10+ use Arkitect \Expression \ForClasses \ResideInOneOfTheseNamespaces ;
11+ use Arkitect \Rules \Rule ;
12+
13+ return static function (Config $ config ): void {
14+ $ dependenciesLeakClassSet = ClassSet::fromDir (__DIR__ .'/DependenciesLeak ' );
15+
16+ $ rule_1 = Rule::allClasses ()
17+ ->that (new ResideInOneOfTheseNamespaces ('App\DependenciesLeak\SecondModule ' ))
18+ ->should (new NotDependsOnTheseNamespaces ('App\DependenciesLeak\FirstModule ' ))
19+ ->because ('modules should be independent ' );
20+
21+ $ config
22+ ->add ($ dependenciesLeakClassSet , ...[$ rule_1 ]);
23+ };
You can’t perform that action at this time.
0 commit comments