github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/cargo/cargo_test.go (about)

     1  package cargo_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/fossas/fossa-cli/buildtools/cargo"
     9  	"github.com/fossas/fossa-cli/testing/helpers"
    10  )
    11  
    12  // Test that we can analyze a Cargo.lock and that direct deps are found in Cargo.toml files.
    13  func TestLockfileWithManifest(t *testing.T) {
    14  	graph, err := cargo.LockfileDependencies("Cargo.lock", "testdata")
    15  	assert.NoError(t, err)
    16  	assert.Len(t, graph.Direct, 2)
    17  	assert.Len(t, graph.Transitive, 5)
    18  
    19  	helpers.AssertPackageImport(t, graph.Direct, "one", "1.0.0")
    20  	helpers.AssertPackageImport(t, graph.Direct, "two", "2.0.0")
    21  
    22  	one := helpers.PackageInTransitiveGraph(graph.Transitive, "one", "1.0.0")
    23  	assert.Len(t, one.Imports, 1)
    24  	helpers.AssertPackageImport(t, one.Imports, "three", "3.0.0")
    25  
    26  	two := helpers.PackageInTransitiveGraph(graph.Transitive, "two", "2.0.0")
    27  	assert.Len(t, two.Imports, 2)
    28  	helpers.AssertPackageImport(t, two.Imports, "three", "3.0.0")
    29  	helpers.AssertPackageImport(t, two.Imports, "five", "5.0.0")
    30  
    31  	three := helpers.PackageInTransitiveGraph(graph.Transitive, "three", "3.0.0")
    32  	assert.Len(t, three.Imports, 1)
    33  	helpers.AssertPackageImport(t, three.Imports, "four", "4.0.0")
    34  
    35  	four := helpers.PackageInTransitiveGraph(graph.Transitive, "four", "4.0.0")
    36  	assert.Len(t, four.Imports, 0)
    37  
    38  	five := helpers.PackageInTransitiveGraph(graph.Transitive, "five", "5.0.0")
    39  	assert.Len(t, five.Imports, 0)
    40  }
    41  
    42  func TestLockfileNoManifest(t *testing.T) {
    43  	graph, err := cargo.LockfileDependencies("Cargo.lock", "testdata/no-manifests")
    44  	assert.NoError(t, err)
    45  	assert.Len(t, graph.Direct, 0)
    46  	assert.Len(t, graph.Transitive, 1)
    47  
    48  	one := helpers.PackageInTransitiveGraph(graph.Transitive, "one", "1.0.0")
    49  	assert.Len(t, one.Imports, 0)
    50  }
    51  
    52  func TestMissingManifest(t *testing.T) {
    53  	graph, err := cargo.LockfileDependencies("Cargo.lock", "testdata/missing-manifest")
    54  	assert.NoError(t, err)
    55  	assert.Len(t, graph.Direct, 0)
    56  	assert.Len(t, graph.Transitive, 1)
    57  
    58  	one := helpers.PackageInTransitiveGraph(graph.Transitive, "one", "1.0.0")
    59  	assert.Len(t, one.Imports, 0)
    60  }