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  }