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