@@ -16,21 +16,23 @@ package parser
1616
1717import (
1818 "encoding/json"
19- "fmt"
2019 "go/ast"
2120 "go/parser"
2221 "go/token"
2322 "os"
24- "path/filepath"
2523 "testing"
2624
25+ "github.com/cloudwego/abcoder/lang/testutils"
2726 . "github.com/cloudwego/abcoder/lang/uniast"
2827)
2928
29+ const localSessURL = "github.com/cloudwego/localsession"
30+
3031func Test_goParser_ParseRepo (t * testing.T ) {
3132 type fields struct {
3233 modName string
3334 homePageDir string
35+ id Identity
3436 }
3537 tests := []struct {
3638 name string
@@ -39,40 +41,31 @@ func Test_goParser_ParseRepo(t *testing.T) {
3941 {
4042 name : "test" ,
4143 fields : fields {
42- modName : "github.com/cloudwego/localsession" ,
43- homePageDir : "../../../tmp/localsession" ,
44+ modName : localSessURL ,
45+ homePageDir : "localsession" ,
46+ id : NewIdentity (localSessURL , localSessURL + "/backup" , "RecoverCtxOnDemands" ),
4447 },
4548 },
4649 }
4750 for _ , tt := range tests {
4851 t .Run (tt .name , func (t * testing.T ) {
49- abs , _ := filepath .Abs (tt .fields .homePageDir )
50- println (abs )
51- p := newGoParser (tt .fields .modName , tt .fields .homePageDir , Options {
52+ repoDir , err := testutils .GitCloneFast (tt .fields .modName , tt .fields .homePageDir , "main" )
53+ if err != nil {
54+ t .Fatalf ("failed to clone repo %s" , err )
55+ }
56+ p := newGoParser (tt .fields .modName , repoDir , Options {
5257 ReferCodeDepth : 1 ,
5358 NeedTest : true ,
5459 })
5560 r , err := p .ParseRepo ()
5661 if err != nil {
57- t .Fatal ( err )
62+ t .Fatalf ( "failed to parse repo %s" , err )
5863 }
5964 r .BuildGraph ()
60- // spew.Dump(p)
61- pj , err := json .MarshalIndent (r , "" , " " )
65+ _ , err = p .getNode (tt .fields .id )
6266 if err != nil {
63- t .Fatal ( err )
67+ t .Fatalf ( "failed to get node %s" , err )
6468 }
65- _ = pj
66- _ = os .WriteFile ("ast.json" , pj , 0644 )
67- n , err := p .getNode (NewIdentity ("github.com/cloudwego/localsession" , "github.com/cloudwego/localsession/backup" , "RecoverCtxOnDemands" ))
68- if err != nil {
69- t .Fatal (err )
70- }
71- jf , err := json .MarshalIndent (n , "" , " " )
72- if err != nil {
73- t .Fatalf ("json.Marshal() error = %v" , err )
74- }
75- os .WriteFile ("node.json" , jf , 0644 )
7669 })
7770 }
7871}
@@ -93,7 +86,7 @@ func Test_goParser_ParseDirs(t *testing.T) {
9386 {
9487 name : "test" ,
9588 args : args {
96- homePageDir : "../../../testdata/golang" ,
89+ homePageDir : testutils . FirstTest ( "go" ) ,
9790 modName : "a.b/c" ,
9891 pkg : "a.b/c/cmd" ,
9992 opts : Options {
@@ -137,7 +130,6 @@ type Struct struct {
137130 t .Fatal (err )
138131 }
139132 ast .Inspect (node , func (n ast.Node ) bool {
140- fmt .Printf ("%#v\n " , n )
141133 if sel , ok := n .(* ast.SelectorExpr ); ok {
142134 println ("selector:" , string (GetRawContent (fset , []byte (src ), sel , false )))
143135 }
@@ -157,6 +149,10 @@ func Test_goParser_ParseNode(t *testing.T) {
157149 pkgPath string
158150 name string
159151 }
152+ localSessionDir , err := testutils .GitCloneFast (localSessURL , "localsession" , "main" )
153+ if err != nil {
154+ t .Fatalf ("failed to clone repo %s" , err )
155+ }
160156 tests := []struct {
161157 name string
162158 fields fields
@@ -167,7 +163,7 @@ func Test_goParser_ParseNode(t *testing.T) {
167163 name : "test" ,
168164 fields : fields {
169165 modName : "github.com/cloudwego/localsession" ,
170- homePageDir : "../../../tmp/localsession" ,
166+ homePageDir : localSessionDir ,
171167 },
172168 args : args {
173169 pkgPath : "github.com/modern-go/gls" ,
0 commit comments