github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/golang/parse_go_mod_test.go (about) 1 package golang 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/file" 7 "github.com/anchore/syft/syft/pkg" 8 "github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest" 9 ) 10 11 func TestParseGoMod(t *testing.T) { 12 tests := []struct { 13 fixture string 14 expected []pkg.Package 15 }{ 16 { 17 fixture: "test-fixtures/one-package", 18 expected: []pkg.Package{ 19 { 20 Name: "github.com/bmatcuk/doublestar", 21 Version: "v1.3.1", 22 PURL: "pkg:golang/github.com/bmatcuk/doublestar@v1.3.1", 23 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/one-package")), 24 Language: pkg.Go, 25 Type: pkg.GoModulePkg, 26 MetadataType: pkg.GolangModMetadataType, 27 Metadata: pkg.GolangModMetadata{}, 28 }, 29 }, 30 }, 31 { 32 33 fixture: "test-fixtures/many-packages", 34 expected: []pkg.Package{ 35 { 36 Name: "github.com/anchore/go-testutils", 37 Version: "v0.0.0-20200624184116-66aa578126db", 38 PURL: "pkg:golang/github.com/anchore/go-testutils@v0.0.0-20200624184116-66aa578126db", 39 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/many-packages")), 40 Language: pkg.Go, 41 Type: pkg.GoModulePkg, 42 MetadataType: pkg.GolangModMetadataType, 43 Metadata: pkg.GolangModMetadata{}, 44 }, 45 { 46 Name: "github.com/anchore/go-version", 47 Version: "v1.2.2-0.20200701162849-18adb9c92b9b", 48 PURL: "pkg:golang/github.com/anchore/go-version@v1.2.2-0.20200701162849-18adb9c92b9b", 49 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/many-packages")), 50 Language: pkg.Go, 51 Type: pkg.GoModulePkg, 52 MetadataType: pkg.GolangModMetadataType, 53 Metadata: pkg.GolangModMetadata{}, 54 }, 55 { 56 Name: "github.com/anchore/stereoscope", 57 Version: "v0.0.0-20200706164556-7cf39d7f4639", 58 PURL: "pkg:golang/github.com/anchore/stereoscope@v0.0.0-20200706164556-7cf39d7f4639", 59 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/many-packages")), 60 Language: pkg.Go, 61 Type: pkg.GoModulePkg, 62 MetadataType: pkg.GolangModMetadataType, 63 Metadata: pkg.GolangModMetadata{}, 64 }, 65 { 66 Name: "github.com/bmatcuk/doublestar", 67 Version: "v8.8.8", 68 PURL: "pkg:golang/github.com/bmatcuk/doublestar@v8.8.8", 69 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/many-packages")), 70 Language: pkg.Go, 71 Type: pkg.GoModulePkg, 72 MetadataType: pkg.GolangModMetadataType, 73 Metadata: pkg.GolangModMetadata{}, 74 }, 75 { 76 Name: "github.com/go-test/deep", 77 Version: "v1.0.6", 78 PURL: "pkg:golang/github.com/go-test/deep@v1.0.6", 79 Locations: file.NewLocationSet(file.NewLocation("test-fixtures/many-packages")), 80 Language: pkg.Go, 81 Type: pkg.GoModulePkg, 82 MetadataType: pkg.GolangModMetadataType, 83 Metadata: pkg.GolangModMetadata{}, 84 }, 85 }, 86 }, 87 } 88 89 for _, test := range tests { 90 t.Run(test.fixture, func(t *testing.T) { 91 c := goModCataloger{} 92 pkgtest.NewCatalogTester(). 93 FromFile(t, test.fixture). 94 Expects(test.expected, nil). 95 TestParser(t, c.parseGoModFile) 96 }) 97 } 98 } 99 100 func Test_GoSumHashes(t *testing.T) { 101 tests := []struct { 102 fixture string 103 expected []pkg.Package 104 }{ 105 { 106 fixture: "test-fixtures/go-sum-hashes", 107 expected: []pkg.Package{ 108 { 109 Name: "github.com/CycloneDX/cyclonedx-go", 110 Version: "v0.6.0", 111 PURL: "pkg:golang/github.com/CycloneDX/cyclonedx-go@v0.6.0", 112 Locations: file.NewLocationSet(file.NewLocation("go.mod")), 113 FoundBy: "go-mod-file-cataloger", 114 Language: pkg.Go, 115 Type: pkg.GoModulePkg, 116 MetadataType: pkg.GolangModMetadataType, 117 Metadata: pkg.GolangModMetadata{}, 118 }, 119 { 120 Name: "github.com/acarl005/stripansi", 121 Version: "v0.0.0-20180116102854-5a71ef0e047d", 122 PURL: "pkg:golang/github.com/acarl005/stripansi@v0.0.0-20180116102854-5a71ef0e047d", 123 Locations: file.NewLocationSet(file.NewLocation("go.mod")), 124 FoundBy: "go-mod-file-cataloger", 125 Language: pkg.Go, 126 Type: pkg.GoModulePkg, 127 MetadataType: pkg.GolangModMetadataType, 128 Metadata: pkg.GolangModMetadata{ 129 H1Digest: "h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=", 130 }, 131 }, 132 { 133 Name: "github.com/mgutz/ansi", 134 Version: "v0.0.0-20200706080929-d51e80ef957d", 135 PURL: "pkg:golang/github.com/mgutz/ansi@v0.0.0-20200706080929-d51e80ef957d", 136 Locations: file.NewLocationSet(file.NewLocation("go.mod")), 137 FoundBy: "go-mod-file-cataloger", 138 Language: pkg.Go, 139 Type: pkg.GoModulePkg, 140 MetadataType: pkg.GolangModMetadataType, 141 Metadata: pkg.GolangModMetadata{ 142 H1Digest: "h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=", 143 }, 144 }, 145 }, 146 }, 147 } 148 149 for _, test := range tests { 150 t.Run(test.fixture, func(t *testing.T) { 151 pkgtest.NewCatalogTester(). 152 FromDirectory(t, test.fixture). 153 Expects(test.expected, nil). 154 TestCataloger(t, NewGoModFileCataloger(GoCatalogerOpts{})) 155 }) 156 } 157 }