File tree Expand file tree Collapse file tree 6 files changed +56
-0
lines changed Expand file tree Collapse file tree 6 files changed +56
-0
lines changed Original file line number Diff line number Diff line change @@ -243,6 +243,7 @@ public function getClassDescriptions(): array
243
243
public function clearParsedClassDescriptions (): void
244
244
{
245
245
$ this ->classDescriptions = [];
246
+ $ this ->classDescriptionBuilder ->clear ();
246
247
}
247
248
248
249
public function leaveNode (Node $ node ): void
Original file line number Diff line number Diff line change @@ -146,6 +146,13 @@ public function test_you_can_ignore_the_default_baseline(): void
146
146
$ this ->assertCheckHasErrors ($ cmdTester );
147
147
}
148
148
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
+
149
156
public function test_baseline_line_numbers_can_be_ignored (): void
150
157
{
151
158
$ 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
+ {
9
+ public static function define (): void
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 \NotDependsOnTheseNamespaces ;
7
+ use Arkitect \Expression \ForClasses \ResideInOneOfTheseNamespaces ;
8
+ use Arkitect \Rules \Rule ;
9
+
10
+ return static function (Config $ config ): void {
11
+ $ dependenciesLeakClassSet = ClassSet::fromDir (__DIR__ .'/DependenciesLeak ' );
12
+
13
+ $ rule_1 = Rule::allClasses ()
14
+ ->that (new ResideInOneOfTheseNamespaces ('App\DependenciesLeak\SecondModule ' ))
15
+ ->should (new NotDependsOnTheseNamespaces ('App\DependenciesLeak\FirstModule ' ))
16
+ ->because ('modules should be independent ' );
17
+
18
+ $ config
19
+ ->add ($ dependenciesLeakClassSet , ...[$ rule_1 ]);
20
+ };
You can’t perform that action at this time.
0 commit comments