apiviewgo skips nested modules (#7524)
This commit is contained in:
Родитель
85b98a5d24
Коммит
2936978652
|
@ -4,7 +4,6 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
@ -18,16 +17,7 @@ func TestMain(m *testing.M) {
|
|||
}
|
||||
|
||||
func TestFuncDecl(t *testing.T) {
|
||||
err := CreateAPIView(filepath.Clean("testdata/test_func_decl"), "output")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
file, err := os.ReadFile("./output/test_func_decl.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
p := PackageReview{}
|
||||
err = json.Unmarshal(file, &p)
|
||||
p, err := createReview(filepath.Clean("testdata/test_func_decl"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -46,16 +36,7 @@ func TestFuncDecl(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestInterface(t *testing.T) {
|
||||
err := CreateAPIView(filepath.Clean("testdata/test_interface"), "output")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
file, err := os.ReadFile("./output/test_interface.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
p := PackageReview{}
|
||||
err = json.Unmarshal(file, &p)
|
||||
p, err := createReview(filepath.Clean("testdata/test_interface"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -73,17 +54,23 @@ func TestInterface(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestMultiModule(t *testing.T) {
|
||||
for _, path := range []string{
|
||||
"testdata/test_multi_module",
|
||||
"testdata/test_multi_module/A",
|
||||
"testdata/test_multi_module/A/B",
|
||||
} {
|
||||
t.Run(path, func(t *testing.T) {
|
||||
p, err := createReview(filepath.Clean(path))
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, len(p.Navigation), "review should include only one package")
|
||||
require.Equal(t, filepath.Base(path), p.Navigation[0].Text, "review includes the wrong module")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestStruct(t *testing.T) {
|
||||
err := CreateAPIView(filepath.Clean("testdata/test_struct"), "output")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
file, err := os.ReadFile("./output/test_struct.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
p := PackageReview{}
|
||||
err = json.Unmarshal(file, &p)
|
||||
p, err := createReview(filepath.Clean("testdata/test_struct"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -102,16 +89,7 @@ func TestStruct(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestConst(t *testing.T) {
|
||||
err := CreateAPIView(filepath.Clean("testdata/test_const"), "output")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
file, err := os.ReadFile("./output/test_const.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
p := PackageReview{}
|
||||
err = json.Unmarshal(file, &p)
|
||||
p, err := createReview(filepath.Clean("testdata/test_const"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
@ -85,6 +85,14 @@ func NewModule(dir string) (*Module, error) {
|
|||
if !indexTestdata && strings.Contains(path, "testdata") {
|
||||
return filepath.SkipDir
|
||||
}
|
||||
if path != dir {
|
||||
// This is a subdirectory of the module we're indexing. If it contains
|
||||
// a go.mod, this subdirectory contains a separate module, not a package
|
||||
// of the module we're indexing.
|
||||
if _, err := os.Stat(filepath.Join(path, "go.mod")); err == nil {
|
||||
return filepath.SkipDir
|
||||
}
|
||||
}
|
||||
p, err := NewPkg(path, mf.Module.Mod.Path)
|
||||
if err == nil {
|
||||
m.packages[baseImportPath+p.Name()] = p
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
module test_multi_module/B
|
||||
|
||||
go 1.13
|
|
@ -0,0 +1,6 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
package B
|
||||
|
||||
type BStruct struct {}
|
|
@ -0,0 +1,3 @@
|
|||
module test_multi_module/A
|
||||
|
||||
go 1.13
|
|
@ -0,0 +1,6 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
package A
|
||||
|
||||
type AStruct struct {}
|
|
@ -0,0 +1,3 @@
|
|||
module test_multi_module
|
||||
|
||||
go 1.13
|
|
@ -0,0 +1,6 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
package testmultimodule
|
||||
|
||||
type Struct struct {}
|
Загрузка…
Ссылка в новой задаче