github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/chaincode/platforms/golang/list_test.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package golang 8 9 import ( 10 "io/ioutil" 11 "os" 12 "path/filepath" 13 "runtime" 14 "testing" 15 16 "github.com/stretchr/testify/require" 17 ) 18 19 func Test_gopathDependencyPackageInfo(t *testing.T) { 20 t.Run("TestPeer", func(t *testing.T) { 21 deps, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "github.com/hechain20/hechain/cmd/peer") 22 require.NoError(t, err, "failed to get dependencyPackageInfo") 23 24 var found bool 25 for _, pi := range deps { 26 if pi.ImportPath == "github.com/hechain20/hechain/cmd/peer" { 27 found = true 28 break 29 } 30 } 31 require.True(t, found, "expected to find the peer package") 32 }) 33 34 t.Run("TestIncomplete", func(t *testing.T) { 35 _, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "github.com/hechain20/hechain/core/chaincode/platforms/golang/testdata/src/chaincodes/BadImport") 36 require.EqualError(t, err, "failed to calculate dependencies: incomplete package: bogus/package") 37 }) 38 39 t.Run("TestFromGoroot", func(t *testing.T) { 40 deps, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "os") 41 require.NoError(t, err) 42 require.Empty(t, deps) 43 }) 44 45 t.Run("TestFailure", func(t *testing.T) { 46 _, err := gopathDependencyPackageInfo(runtime.GOOS, runtime.GOARCH, "./doesnotexist") 47 require.EqualError(t, err, "listing deps for package ./doesnotexist failed: exit status 1") 48 }) 49 } 50 51 func TestPackageInfoFiles(t *testing.T) { 52 packageInfo := &PackageInfo{ 53 GoFiles: []string{"file1.go", "file2.go"}, 54 CFiles: []string{"file1.c", "file2.c"}, 55 CgoFiles: []string{"file_cgo1.go", "file_cgo2.go"}, 56 HFiles: []string{"file1.h", "file2.h"}, 57 SFiles: []string{"file1.s", "file2.s"}, 58 IgnoredGoFiles: []string{"file1_ignored.go", "file2_ignored.go"}, 59 } 60 expected := []string{ 61 "file1.go", "file2.go", 62 "file1.c", "file2.c", 63 "file_cgo1.go", "file_cgo2.go", 64 "file1.h", "file2.h", 65 "file1.s", "file2.s", 66 "file1_ignored.go", "file2_ignored.go", 67 } 68 require.Equal(t, expected, packageInfo.Files()) 69 } 70 71 func Test_listModuleInfo(t *testing.T) { 72 cwd, err := os.Getwd() 73 require.NoError(t, err, "failed to get working directory") 74 defer func() { 75 err := os.Chdir(cwd) 76 require.NoError(t, err) 77 }() 78 79 err = os.Chdir("testdata/ccmodule") 80 require.NoError(t, err, "failed to change to module directory") 81 82 moduleDir, err := os.Getwd() 83 require.NoError(t, err, "failed to get module working directory") 84 85 mi, err := listModuleInfo("GOPROXY=https://proxy.golang.org") 86 require.NoError(t, err, "failed to get module info") 87 88 expected := &ModuleInfo{ 89 ModulePath: "ccmodule", 90 ImportPath: "ccmodule", 91 Dir: moduleDir, 92 GoMod: filepath.Join(moduleDir, "go.mod"), 93 } 94 require.Equal(t, expected, mi) 95 96 err = os.Chdir("nested") 97 require.NoError(t, err, "failed to change to module directory") 98 99 mi, err = listModuleInfo("GOPROXY=https://proxy.golang.org") 100 require.NoError(t, err, "failed to get module info") 101 102 expected = &ModuleInfo{ 103 ModulePath: "ccmodule", 104 ImportPath: "ccmodule/nested", 105 Dir: moduleDir, 106 GoMod: filepath.Join(moduleDir, "go.mod"), 107 } 108 require.Equal(t, expected, mi) 109 } 110 111 func Test_listModuleInfoFailure(t *testing.T) { 112 tempDir, err := ioutil.TempDir("", "module") 113 require.NoError(t, err, "failed to create temporary directory") 114 115 cwd, err := os.Getwd() 116 require.NoError(t, err, "failed to get working directory") 117 defer func() { 118 err := os.Chdir(cwd) 119 require.NoError(t, err) 120 }() 121 err = os.Chdir(tempDir) 122 require.NoError(t, err, "failed to change to temporary directory") 123 124 _, err = listModuleInfo() 125 require.ErrorContains(t, err, "'go list' failed with: go: ") 126 require.ErrorContains(t, err, "see 'go help modules': exit status 1") 127 }