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 }