github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/paket/paket_test.go (about) 1 package paket_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/fossas/fossa-cli/buildtools/paket" 8 "github.com/fossas/fossa-cli/pkg" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestPaketDependencyGraph(t *testing.T) { 13 graph, err := paket.DependencyGraph("testdata/paket.lock") 14 assert.NoError(t, err) 15 assert.NotEmpty(t, graph) 16 assertImport(t, graph.Direct, "Dep.One", "1.0.0", pkg.NuGet) 17 assertImport(t, graph.Direct, "Dep.Two", "2.0.0", pkg.NuGet) 18 assertImport(t, graph.Direct, "Dep.Three", "3.0.0", pkg.NuGet) 19 assertImport(t, graph.Direct, "Dep.Four", "4.0.0", pkg.NuGet) 20 assertImport(t, graph.Direct, "Dep.Five", "5.0.0", pkg.NuGet) 21 assertImport(t, graph.Direct, "Dep.Six", "6.0.0", pkg.NuGet) 22 assertImport(t, graph.Direct, "user/repo/src/app/file", "0987654321", pkg.Git) 23 assertImport(t, graph.Direct, "www/website/src/file", "123456789", pkg.Git) 24 assertImport(t, graph.Direct, "user/otherrepo/src/secondfile", "5678901234", pkg.Git) 25 26 dependencyOne, err := findPackage(graph.Transitive, "Dep.One") 27 assert.NoError(t, err) 28 assert.Empty(t, dependencyOne.Imports) 29 30 dependencyTwo, err := findPackage(graph.Transitive, "Dep.Two") 31 assert.NoError(t, err) 32 assertImport(t, dependencyTwo.Imports, "Dep.Three", "3.0.0", pkg.NuGet) 33 34 dependencyThree, err := findPackage(graph.Transitive, "Dep.Three") 35 assert.NoError(t, err) 36 assertImport(t, dependencyThree.Imports, "Dep.Four", "4.0.0", pkg.NuGet) 37 38 dependencyFour, err := findPackage(graph.Transitive, "Dep.Four") 39 assert.NoError(t, err) 40 assert.Empty(t, dependencyFour.Imports) 41 42 dependencyFive, err := findPackage(graph.Transitive, "Dep.Five") 43 assert.NoError(t, err) 44 assertImport(t, dependencyFive.Imports, "Dep.Six", "6.0.0", pkg.NuGet) 45 46 dependencySix, err := findPackage(graph.Transitive, "Dep.Six") 47 assert.NoError(t, err) 48 assert.Empty(t, dependencySix.Imports) 49 50 dependencyGitHub, err := findPackage(graph.Transitive, "user/repo/src/app/file") 51 assert.NoError(t, err) 52 assert.Empty(t, dependencyGitHub.Imports) 53 54 dependencyHTTP, err := findPackage(graph.Transitive, "www/website/src/file") 55 assert.NoError(t, err) 56 assert.Empty(t, dependencyHTTP.Imports) 57 58 dependencyGit, err := findPackage(graph.Transitive, "user/otherrepo/src/secondfile") 59 assert.NoError(t, err) 60 assert.Empty(t, dependencyGit.Imports) 61 } 62 63 func findPackage(packages map[pkg.ID]pkg.Package, name string) (pkg.Package, error) { 64 for id := range packages { 65 if id.Name == name { 66 return packages[id], nil 67 } 68 } 69 return pkg.Package{}, fmt.Errorf("Package %s not found", name) 70 } 71 72 func assertImport(t *testing.T, imports pkg.Imports, name, revision string, packageType pkg.Type) { 73 for _, importedProj := range imports { 74 if importedProj.Resolved.Name == name { 75 if importedProj.Resolved.Revision == revision { 76 if importedProj.Resolved.Type == packageType { 77 return 78 } 79 } 80 } 81 } 82 assert.Fail(t, "missing "+name) 83 }