44
55use Okapi \CodeTransformer \Tests \ClassLoaderMockTrait ;
66use Okapi \CodeTransformer \Tests \Stubs \ClassesToTransform ;
7- use Okapi \CodeTransformer \Tests \Stubs \Kernel \CachedKernel ;
7+ use Okapi \CodeTransformer \Tests \Stubs \Kernel \ApplicationKernel ;
88use Okapi \CodeTransformer \Tests \Util ;
99use Okapi \Filesystem \Filesystem ;
10+ use PHPUnit \Framework \Attributes \RunClassInSeparateProcess ;
1011use PHPUnit \Framework \TestCase ;
11- use Throwable ;
1212
1313/**
1414 * This test has to be run after ApplicationTest.
1515 */
16- class CachedApplicationTest extends TestCase
16+ #[RunClassInSeparateProcess]
17+ class B_CachedApplicationTest extends TestCase
1718{
1819 use ClassLoaderMockTrait;
1920
21+ private static string $ classFileContent ;
22+ private static string $ transformerFileContent ;
23+
24+ public static function setUpBeforeClass (): void
25+ {
26+ // Change files
27+
28+ $ classFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/ChangedClass.php ' ;
29+ self ::$ classFileContent = Filesystem::readFile ($ classFilePath );
30+
31+ $ changedFileContent = str_replace (
32+ 'Hello World! ' ,
33+ 'Hello Changed World! ' ,
34+ self ::$ classFileContent ,
35+ );
36+
37+ usleep (500 * 1000 );
38+ Filesystem::writeFile ($ classFilePath , $ changedFileContent );
39+
40+
41+
42+ $ transformerFilePath = __DIR__ . '/../../Stubs/Transformer/ChangedTransformerTransformer.php ' ;
43+ self ::$ transformerFileContent = Filesystem::readFile ($ transformerFilePath );
44+
45+ $ changedFileContent = str_replace (
46+ 'Hello World from Code Transformer! ' ,
47+ 'Hello Changed World from Code Transformer! ' ,
48+ self ::$ transformerFileContent ,
49+ );
50+
51+ usleep (500 * 1000 );
52+ Filesystem::writeFile ($ transformerFilePath , $ changedFileContent );
53+ }
54+
55+ public static function tearDownAfterClass (): void
56+ {
57+ // Restore files
58+
59+ $ classFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/ChangedClass.php ' ;
60+ Filesystem::writeFile ($ classFilePath , self ::$ classFileContent );
61+
62+ $ transformerFilePath = __DIR__ . '/../../Stubs/Transformer/ChangedTransformerTransformer.php ' ;
63+ Filesystem::writeFile ($ transformerFilePath , self ::$ transformerFileContent );
64+ }
65+
2066 public function testKernel (): void
2167 {
22- $ this ->assertFalse (CachedKernel ::isInitialized ());
23- CachedKernel ::init ();
24- $ this ->assertTrue (CachedKernel ::isInitialized ());
68+ $ this ->assertFalse (ApplicationKernel ::isInitialized ());
69+ ApplicationKernel ::init ();
70+ $ this ->assertTrue (ApplicationKernel ::isInitialized ());
2571
2672 $ this ->assertFileExists (Util::CACHE_STATES_FILE );
2773 }
@@ -61,7 +107,7 @@ public function testNoChangesClass(): void
61107 $ stringClass = new $ class ();
62108
63109 $ originalFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/NoChangesClass.php ' ;
64- $ cachedFilePath = Util::CACHE_DIR . '/transformed/tests/Stubs/ClassesToTransform/NoChangesClass.php ' ;
110+ $ cachedFilePath = Util::CACHE_DIR . '/transformed/tests/Stubs/ClassesToTransform/NoChangesClass.php ' ;
65111 $ this ->assertFileExists ($ originalFilePath );
66112 $ this ->assertFileDoesNotExist ($ cachedFilePath );
67113 }
@@ -71,35 +117,29 @@ public function testNoChangesClass(): void
71117 */
72118 public function testChangedClass (): void
73119 {
74- $ originalFilePath = __DIR__ . '/../../Stubs/ClassesToTransform/ChangedClass.php ' ;
75-
76- $ originalFileContent = Filesystem::readFile ($ originalFilePath );
77-
78- $ exception = null ;
79- try {
80- $ changedFileContent = str_replace (
81- 'Hello World! ' ,
82- 'Hello Changed World! ' ,
83- $ originalFileContent ,
84- );
85-
86- Filesystem::writeFile ($ originalFilePath , $ changedFileContent );
87-
88- $ class = ClassesToTransform \ChangedClass::class;
89- $ this ->assertWillBeTransformed ($ class );
120+ $ class = ClassesToTransform \ChangedClass::class;
121+ $ this ->assertWillBeTransformed ($ class );
90122
91- $ changedClass = new $ class ();
92- $ this ->assertSame ('Hello Changed World from Code Transformer! ' , $ changedClass ->test ());
93- } catch (Throwable $ e ) {
94- $ exception = $ e ;
95- }
123+ $ changedClass = new $ class ();
124+ $ this ->assertSame (
125+ 'Hello Changed World from Code Transformer! ' ,
126+ $ changedClass ->test (),
127+ );
128+ }
96129
97- Filesystem::writeFile ($ originalFilePath , $ originalFileContent );
130+ /**
131+ * Cached by {@see ApplicationTest::testChangedTransformer()}
132+ */
133+ public function testChangedTransformer (): void
134+ {
135+ $ class = ClassesToTransform \ChangedTransformer::class;
136+ $ this ->assertWillBeTransformed ($ class );
98137
99- if ($ exception !== null ) {
100- /** @noinspection PhpUnhandledExceptionInspection */
101- throw $ exception ;
102- }
138+ $ classInstance = new $ class ;
139+ $ this ->assertSame (
140+ 'Hello Changed World from Code Transformer! ' ,
141+ $ classInstance ->test (),
142+ );
103143 }
104144
105145 /**
@@ -134,23 +174,4 @@ public function testMultipleTransformers(): void
134174 $ this ->assertSame ('Hello from Code Transformer! ' , $ multipleTransformersClass ->test ());
135175 $ this ->assertSame ("You can't get me! " , $ multipleTransformersClass ->privateProperty );
136176 }
137-
138- /**
139- * Cached by {@see ApplicationTest::testAddedTransformer()}
140- */
141- public function testAddedTransformer (): void
142- {
143- $ class = ClassesToTransform \AddedTransformerClass::class;
144- $ this ->assertWillBeTransformed ($ class );
145-
146- $ addedTransformerClass = new $ class ();
147- $ this ->assertSame ('Hello from Code Transformer! ' , $ addedTransformerClass ->test ());
148- }
149-
150- public function testClearCache (): void
151- {
152- Util::clearCache ();
153-
154- $ this ->expectNotToPerformAssertions ();
155- }
156177}
0 commit comments