github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/analyzers/golang/analyze_test.go (about)

     1  package golang_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/fossas/fossa-cli/analyzers/golang"
     9  	"github.com/fossas/fossa-cli/graph"
    10  	"github.com/fossas/fossa-cli/module"
    11  	"github.com/fossas/fossa-cli/pkg"
    12  )
    13  
    14  // TestProjectNotInDeps ensures that the main Go project is not also listed as
    15  // a transitive dependency.
    16  func TestProjectNotInDeps(t *testing.T) {
    17  	// TODO: use a different build target? Use a fixture?
    18  	buildTarget := "github.com/fossas/fossa-cli/cmd/fossa"
    19  	analyzer, err := golang.New(module.Module{Name: "test", Type: pkg.Go, BuildTarget: buildTarget})
    20  	assert.NoError(t, err)
    21  
    22  	main, err := analyzer.Go.ListOne(buildTarget, nil)
    23  	assert.NoError(t, err)
    24  
    25  	deps, err := analyzer.Analyze()
    26  	assert.NoError(t, err)
    27  
    28  	for _, dep := range deps.Transitive {
    29  		assert.NotEqual(t, main.ImportPath, dep.ID.Name)
    30  	}
    31  }
    32  
    33  func TestPackageNoDeps(t *testing.T) {
    34  	testModule := module.Module{}
    35  	testModule.BuildTarget = "github.com/fossas/fossa-cli/analyzers/golang/testdata/nodeps"
    36  
    37  	analyzer, err := golang.New(testModule)
    38  	assert.NoError(t, err)
    39  
    40  	testGraph, err := analyzer.Analyze()
    41  	assert.NoError(t, err)
    42  	assert.Equal(t, testGraph, graph.Deps{})
    43  }
    44  
    45  var customtag = pkg.ID{
    46  	Type:     pkg.Go,
    47  	Name:     "imports/customtag",
    48  	Revision: "v3.0.0",
    49  }
    50  
    51  var combo = pkg.ID{
    52  	Type:     pkg.Go,
    53  	Name:     "imports/combo",
    54  	Revision: "12345",
    55  }
    56  
    57  func TestProjectWithoutBuildTags(t *testing.T) {
    58  	testModule := module.Module{}
    59  	testModule.BuildTarget = "github.com/fossas/fossa-cli/analyzers/golang/testdata/demotags"
    60  
    61  	analyzer, err := golang.New(testModule)
    62  	assert.NoError(t, err)
    63  	deps, err := analyzer.Analyze()
    64  	assert.NoError(t, err)
    65  	assert.NotContains(t, deps.Transitive, combo)
    66  	assert.NotContains(t, deps.Transitive, customtag)
    67  }
    68  
    69  func TestProjectWithBuildTags(t *testing.T) {
    70  	testModule := module.Module{}
    71  	testModule.Options = make(map[string]interface{})
    72  	testModule.Options["tags"] = []string{"customtag"}
    73  	testModule.BuildTarget = "github.com/fossas/fossa-cli/analyzers/golang/testdata/demotags"
    74  
    75  	analyzer, err := golang.New(testModule)
    76  	assert.NoError(t, err)
    77  	deps, err := analyzer.Analyze()
    78  	assert.NoError(t, err)
    79  	assert.Contains(t, deps.Transitive, customtag)
    80  	assert.NotContains(t, deps.Transitive, combo)
    81  }
    82  
    83  func TestProjectWithMultipleBuildTags(t *testing.T) {
    84  	testModule := module.Module{}
    85  	testModule.Options = make(map[string]interface{})
    86  	testModule.Options["tags"] = []string{"combo1 combo2"}
    87  	testModule.BuildTarget = "github.com/fossas/fossa-cli/analyzers/golang/testdata/demotags"
    88  
    89  	analyzer, err := golang.New(testModule)
    90  	assert.NoError(t, err)
    91  	deps, err := analyzer.Analyze()
    92  	assert.NoError(t, err)
    93  	assert.Contains(t, deps.Transitive, combo)
    94  	assert.NotContains(t, deps.Transitive, customtag)
    95  }