1- import { relative } from 'path' ;
1+ import { relative } from 'node: path' ;
22import { DocumentLink , Position , Range } from 'vscode' ;
3+ import { PHPUnitXML } from './PHPUnit' ;
34import { phpUnitProject } from './PHPUnit/__tests__/utils' ;
45import { PHPUnitLinkProvider } from './PHPUnitLinkProvider' ;
56
@@ -30,9 +31,16 @@ class TextDocument {
3031
3132describe ( 'PHPUnitLinkProvider' , ( ) => {
3233 const root = phpUnitProject ( '' ) ;
33- const normalizePath = ( file : string ) => relative ( root , file ) . replace ( / \\ / g, '/' ) ;
34+ const phpUnitXML = new PHPUnitXML ( ) . setRoot ( root ) ;
35+ const normalizePath = ( file : string ) => {
36+ return relative ( root , file ) . replace ( / \\ / g, '/' ) ;
37+ } ;
3438
35- const text = `❌ FAILED Calculator (Tests\Calculator) > Sum item method not call
39+ let provider : PHPUnitLinkProvider ;
40+ beforeEach ( ( ) => provider = new PHPUnitLinkProvider ( phpUnitXML ) ) ;
41+
42+ it ( 'get PHPUnit links' , ( ) => {
43+ const document = new TextDocument ( `❌ FAILED Calculator (Tests\Calculator) > Sum item method not call
3644Mockery\Exception\InvalidCountException: Method test(<Any Arguments>) from Mockery_0_App_Item_App_Item should be called
3745 exactly 1 times but called 0 times.
3846
@@ -44,13 +52,7 @@ Mockery\Exception\InvalidCountException: Method test(<Any Arguments>) from Mocke
44526. ${ phpUnitProject ( 'vendor/mockery/mockery/library/Mockery.php' ) } :176
45537. ${ phpUnitProject ( 'vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php' ) } :49
46548. ${ phpUnitProject ( 'vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegration.php' ) } :61
47- 9. ${ phpUnitProject ( 'vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php' ) } :19` ;
48-
49- let provider : PHPUnitLinkProvider ;
50- beforeEach ( ( ) => provider = new PHPUnitLinkProvider ( ) ) ;
51-
52- it ( 'get links' , ( ) => {
53- const document = new TextDocument ( text ) ;
55+ 9. ${ phpUnitProject ( 'vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php' ) } :19` ) ;
5456
5557 const links = ( provider . provideDocumentLinks ( document as any , { } as any ) as DocumentLink [ ] )
5658 . map ( ( link ) => [ normalizePath ( link . target ! . fsPath ) , link . target ! . fragment ] ) ;
@@ -67,4 +69,53 @@ Mockery\Exception\InvalidCountException: Method test(<Any Arguments>) from Mocke
6769 [ 'vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/MockeryPHPUnitIntegrationAssertPostConditions.php' , 'L19' ] ,
6870 ] ) ;
6971 } ) ;
72+
73+ it ( 'get PEST links' , ( ) => {
74+ const document = new TextDocument ( `❌ FAILED tests/Unit/ArchTest.php > preset → strict
75+ Expecting 'src/Calculator.php' to be final.
76+
77+ at src/Calculator.php:7
78+ 3 ▕ namespace App;
79+ 4 ▕
80+ 5 ▕ use Exception;
81+ 6 ▕
82+ ➜ 7 ▕ class Calculator
83+ 8 ▕ {
84+ 9 ▕ public function sum($a, $b)
85+ 10 ▕ {
86+ 11 ▕ return $a + $b;
87+ 12 ▕ }
88+
89+ 1. src/Calculator.php:7
90+ 2. vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php:43
91+ 3. vendor/pestphp/pest-plugin-arch/src/Blueprint.php:137
92+ 4. vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php:40
93+ 5. vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php:156
94+ 6. vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php:140
95+ 7. src/Calculator.php:1
96+ 8. vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php:43
97+ 9. vendor/pestphp/pest-plugin-arch/src/Blueprint.php:137
98+ 10. vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php:40
99+ 11. vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php:156
100+ 12. vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php:140` ) ;
101+
102+ const links = ( provider . provideDocumentLinks ( document as any , { } as any ) as DocumentLink [ ] )
103+ . map ( ( link ) => [ normalizePath ( link . target ! . fsPath ) , link . target ! . fragment ] ) ;
104+
105+ expect ( links ) . toEqual ( [
106+ [ 'src/Calculator.php' , 'L7' ] ,
107+ [ 'src/Calculator.php' , 'L7' ] ,
108+ [ 'vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php' , 'L43' ] ,
109+ [ 'vendor/pestphp/pest-plugin-arch/src/Blueprint.php' , 'L137' ] ,
110+ [ 'vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php' , 'L40' ] ,
111+ [ 'vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php' , 'L156' ] ,
112+ [ 'vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php' , 'L140' ] ,
113+ [ 'src/Calculator.php' , 'L1' ] ,
114+ [ 'vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php' , 'L43' ] ,
115+ [ 'vendor/pestphp/pest-plugin-arch/src/Blueprint.php' , 'L137' ] ,
116+ [ 'vendor/pestphp/pest-plugin-arch/src/Expectations/Targeted.php' , 'L40' ] ,
117+ [ 'vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php' , 'L156' ] ,
118+ [ 'vendor/pestphp/pest-plugin-arch/src/SingleArchExpectation.php' , 'L140' ] ,
119+ ] ) ;
120+ } ) ;
70121} ) ;
0 commit comments