github.com/fnagchunpeng/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  }