github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/pkg/cataloger/erlang/parse_rebar_lock_test.go (about) 1 package erlang 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/artifact" 7 "github.com/anchore/syft/syft/file" 8 "github.com/anchore/syft/syft/pkg" 9 "github.com/lineaje-labs/syft/syft/pkg/cataloger/internal/pkgtest" 10 ) 11 12 func TestParseRebarLock(t *testing.T) { 13 tests := []struct { 14 fixture string 15 expected []pkg.Package 16 }{ 17 { 18 fixture: "test-fixtures/rebar.lock", 19 expected: []pkg.Package{ 20 { 21 Name: "certifi", 22 Version: "2.9.0", 23 Language: pkg.Erlang, 24 Type: pkg.HexPkg, 25 PURL: "pkg:hex/certifi@2.9.0", 26 Metadata: pkg.ErlangRebarLockEntry{ 27 Name: "certifi", 28 Version: "2.9.0", 29 PkgHash: "6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21", 30 PkgHashExt: "266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641", 31 }, 32 }, 33 { 34 Name: "idna", 35 Version: "6.1.1", 36 Language: pkg.Erlang, 37 Type: pkg.HexPkg, 38 PURL: "pkg:hex/idna@6.1.1", 39 Metadata: pkg.ErlangRebarLockEntry{ 40 Name: "idna", 41 Version: "6.1.1", 42 PkgHash: "8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D", 43 PkgHashExt: "92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA", 44 }, 45 }, 46 { 47 Name: "metrics", 48 Version: "1.0.1", 49 Language: pkg.Erlang, 50 Type: pkg.HexPkg, 51 PURL: "pkg:hex/metrics@1.0.1", 52 Metadata: pkg.ErlangRebarLockEntry{ 53 Name: "metrics", 54 Version: "1.0.1", 55 PkgHash: "25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486", 56 PkgHashExt: "69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16", 57 }, 58 }, 59 { 60 Name: "mimerl", 61 Version: "1.2.0", 62 Language: pkg.Erlang, 63 Type: pkg.HexPkg, 64 PURL: "pkg:hex/mimerl@1.2.0", 65 Metadata: pkg.ErlangRebarLockEntry{ 66 Name: "mimerl", 67 Version: "1.2.0", 68 PkgHash: "67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3", 69 PkgHashExt: "F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323", 70 }, 71 }, 72 { 73 Name: "parse_trans", 74 Version: "3.3.1", 75 Language: pkg.Erlang, 76 Type: pkg.HexPkg, 77 PURL: "pkg:hex/parse_trans@3.3.1", 78 Metadata: pkg.ErlangRebarLockEntry{ 79 Name: "parse_trans", 80 Version: "3.3.1", 81 PkgHash: "16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8", 82 PkgHashExt: "07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B", 83 }, 84 }, 85 { 86 Name: "ssl_verify_fun", 87 Version: "1.1.6", 88 Language: pkg.Erlang, 89 Type: pkg.HexPkg, 90 PURL: "pkg:hex/ssl_verify_fun@1.1.6", 91 Metadata: pkg.ErlangRebarLockEntry{ 92 Name: "ssl_verify_fun", 93 Version: "1.1.6", 94 PkgHash: "CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0", 95 PkgHashExt: "BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680", 96 }, 97 }, 98 { 99 Name: "unicode_util_compat", 100 Version: "0.7.0", 101 Language: pkg.Erlang, 102 Type: pkg.HexPkg, 103 PURL: "pkg:hex/unicode_util_compat@0.7.0", 104 Metadata: pkg.ErlangRebarLockEntry{ 105 Name: "unicode_util_compat", 106 Version: "0.7.0", 107 PkgHash: "BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78", 108 PkgHashExt: "25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521", 109 }, 110 }, 111 }, 112 }, 113 { 114 fixture: "test-fixtures/rebar-2.lock", 115 expected: []pkg.Package{ 116 // [{<<"bcrypt">>,{pkg,<<"bcrypt">>,<<"1.1.5">>},0}, 117 // {<<"bcrypt">>, <<"A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386">>}, 118 // {<<"bcrypt">>, <<"3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352">>}, 119 { 120 Name: "bcrypt", 121 Version: "1.1.5", 122 Language: pkg.Erlang, 123 Type: pkg.HexPkg, 124 PURL: "pkg:hex/bcrypt@1.1.5", 125 Metadata: pkg.ErlangRebarLockEntry{ 126 Name: "bcrypt", 127 Version: "1.1.5", 128 PkgHash: "A6763BD4E1AF46D34776F85B7995E63A02978DE110C077E9570ED17006E03386", 129 PkgHashExt: "3418821BC17CE6E96A4A77D1A88D7485BF783E212069FACFC79510AFBFF95352", 130 }, 131 }, 132 // {<<"bson">>, 133 // {git,"https://github.com/comtihon/bson-erlang", 134 // {ref,"14308ab927cfa69324742c3de720578094e0bb19"}}, 135 // 1}, 136 { 137 Name: "bson", 138 Version: "14308ab927cfa69324742c3de720578094e0bb19", 139 Language: pkg.Erlang, 140 Type: pkg.HexPkg, 141 PURL: "pkg:hex/bson@14308ab927cfa69324742c3de720578094e0bb19", 142 Metadata: pkg.ErlangRebarLockEntry{ 143 Name: "bson", 144 Version: "14308ab927cfa69324742c3de720578094e0bb19", 145 }, 146 }, 147 // {<<"certifi">>,{pkg,<<"certifi">>,<<"2.9.0">>},1}, 148 // {<<"certifi">>, <<"6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21">>}, {<<"stdout_formatter">>, <<"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A">>}, 149 // {<<"certifi">>, <<"266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641">>}, 150 { 151 Name: "certifi", 152 Version: "2.9.0", 153 Language: pkg.Erlang, 154 Type: pkg.HexPkg, 155 PURL: "pkg:hex/certifi@2.9.0", 156 Metadata: pkg.ErlangRebarLockEntry{ 157 Name: "certifi", 158 Version: "2.9.0", 159 PkgHash: "6F2A475689DD47F19FB74334859D460A2DC4E3252A3324BD2111B8F0429E7E21", 160 PkgHashExt: "266DA46BDB06D6C6D35FDE799BCB28D36D985D424AD7C08B5BB48F5B5CDD4641", 161 }, 162 }, 163 // {<<"stdout_formatter">>,{pkg,<<"stdout_formatter">>,<<"0.2.3">>},0}, 164 // {<<"stdout_formatter">>, <<"EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A">>}, 165 // {<<"stdout_formatter">>, <<"6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5">>}, 166 { 167 Name: "stdout_formatter", 168 Version: "0.2.3", 169 Language: pkg.Erlang, 170 Type: pkg.HexPkg, 171 PURL: "pkg:hex/stdout_formatter@0.2.3", 172 Metadata: pkg.ErlangRebarLockEntry{ 173 Name: "stdout_formatter", 174 Version: "0.2.3", 175 PkgHash: "EC24868D8619757A68F0798357C7190807A1CFC42CE90C18C23760E59249A21A", 176 PkgHashExt: "6B9CAAD8930006F9BB35680C5D3311917AC67690C3AF1BA018623324C015ABE5", 177 }, 178 }, 179 // {<<"swc">>, 180 // {git,"https://github.com/vernemq/ServerWideClocks.git", 181 // {ref,"4835239dca5a5f4ac7202dd94d7effcaa617d575"}}, 182 // 0}, 183 { 184 Name: "swc", 185 Version: "4835239dca5a5f4ac7202dd94d7effcaa617d575", 186 Language: pkg.Erlang, 187 Type: pkg.HexPkg, 188 PURL: "pkg:hex/swc@4835239dca5a5f4ac7202dd94d7effcaa617d575", 189 Metadata: pkg.ErlangRebarLockEntry{ 190 Name: "swc", 191 Version: "4835239dca5a5f4ac7202dd94d7effcaa617d575", 192 }, 193 }, 194 // {<<"syslog">>,{pkg,<<"syslog">>,<<"1.1.0">>},0}, 195 // {<<"syslog">>, <<"6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2">>}, 196 // {<<"syslog">>, <<"4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1">>}, 197 { 198 Name: "syslog", 199 Version: "1.1.0", 200 Language: pkg.Erlang, 201 Type: pkg.HexPkg, 202 PURL: "pkg:hex/syslog@1.1.0", 203 Metadata: pkg.ErlangRebarLockEntry{ 204 Name: "syslog", 205 Version: "1.1.0", 206 PkgHash: "6419A232BEA84F07B56DC575225007FFE34D9FDC91ABE6F1B2F254FD71D8EFC2", 207 PkgHashExt: "4C6A41373C7E20587BE33EF841D3DE6F3BEBA08519809329ECC4D27B15B659E1", 208 }, 209 }, 210 // {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},1}, 211 // {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]}, 212 // {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]} 213 { 214 Name: "unicode_util_compat", 215 Version: "0.7.0", 216 Language: pkg.Erlang, 217 Type: pkg.HexPkg, 218 PURL: "pkg:hex/unicode_util_compat@0.7.0", 219 Metadata: pkg.ErlangRebarLockEntry{ 220 Name: "unicode_util_compat", 221 Version: "0.7.0", 222 PkgHash: "BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78", 223 PkgHashExt: "25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521", 224 }, 225 }, 226 // {<<"vernemq_dev">>, 227 // {git,"https://github.com/vernemq/vernemq_dev.git", 228 // {ref,"6d622aa8c901ae7777433aef2bd049e380c474a6"}}, 229 // 0}]}. 230 { 231 Name: "vernemq_dev", 232 Version: "6d622aa8c901ae7777433aef2bd049e380c474a6", 233 Language: pkg.Erlang, 234 Type: pkg.HexPkg, 235 PURL: "pkg:hex/vernemq_dev@6d622aa8c901ae7777433aef2bd049e380c474a6", 236 Metadata: pkg.ErlangRebarLockEntry{ 237 Name: "vernemq_dev", 238 Version: "6d622aa8c901ae7777433aef2bd049e380c474a6", 239 }, 240 }, 241 }, 242 }, 243 } 244 245 for _, test := range tests { 246 t.Run(test.fixture, func(t *testing.T) { 247 // TODO: relationships are not under test 248 var expectedRelationships []artifact.Relationship 249 250 for idx := range test.expected { 251 test.expected[idx].Locations = file.NewLocationSet(file.NewLocation(test.fixture)) 252 } 253 254 pkgtest.TestFileParser(t, test.fixture, parseRebarLock, test.expected, expectedRelationships) 255 }) 256 } 257 }