@@ -128,8 +128,9 @@ func TestFetchPkgsReturnsDistinctEntriesForDifferentArches(t *testing.T) {
128128 defer db .Close ()
129129
130130 want := client.GooGetState {
131- client.PackageState {PackageSpec : & goolib.PkgSpec {Name : "test-pkg" , Arch : "amd64" , Version : "1" }, InstallDate : 123456789 },
132- client.PackageState {PackageSpec : & goolib.PkgSpec {Name : "test-pkg" , Arch : "i386" , Version : "1" }, InstallDate : 123456789 },
131+ client.PackageState {PackageSpec : & goolib.PkgSpec {Name : "test-pkg" , Arch : "arm64" , Version : "1" }, InstallDate : 123456789 },
132+ client.PackageState {PackageSpec : & goolib.PkgSpec {Name : "test-pkg" , Arch : "x86_32" , Version : "1" }, InstallDate : 123456789 },
133+ client.PackageState {PackageSpec : & goolib.PkgSpec {Name : "test-pkg" , Arch : "x86_64" , Version : "1" }, InstallDate : 123456789 },
133134 }
134135 if err := db .WriteStateToDB (want ); err != nil {
135136 t .Fatalf ("db.WriteStateToDB(%v): %v" , want , err )
@@ -143,6 +144,32 @@ func TestFetchPkgsReturnsDistinctEntriesForDifferentArches(t *testing.T) {
143144 if diff := cmp .Diff (want , got , cmpopts .EquateEmpty ()); diff != "" {
144145 t .Fatalf ("FetchPkgs got unexpected diff (-want +got):\n %v" , diff )
145146 }
147+
148+ gotPkg , err := db .FetchPkg (goolib.PackageInfo {Name : "test-pkg" , Arch : "x86_32" })
149+ if err != nil {
150+ t .Fatalf ("db.FetchPkg: %v" , err )
151+ }
152+ if diff := cmp .Diff (want [1 ], gotPkg , cmpopts .EquateEmpty ()); diff != "" {
153+ t .Fatalf ("FetchPkg got unexpected diff (-want +got):\n %v" , diff )
154+ }
155+
156+ // If only name is provided, arm64 should be matched first based on sort order.
157+ gotPkg , err = db .FetchPkg (goolib.PackageInfo {Name : "test-pkg" })
158+ if err != nil {
159+ t .Fatalf ("db.FetchPkg: %v" , err )
160+ }
161+ if diff := cmp .Diff (want [0 ], gotPkg , cmpopts .EquateEmpty ()); diff != "" {
162+ t .Fatalf ("FetchPkg got unexpected diff (-want +got):\n %v" , diff )
163+ }
164+
165+ // If no arch matches, the last processed package (x86_64) should be returned.
166+ gotPkg , err = db .FetchPkg (goolib.PackageInfo {Name : "test-pkg" , Arch : "none" })
167+ if err != nil {
168+ t .Fatalf ("db.FetchPkg: %v" , err )
169+ }
170+ if diff := cmp .Diff (want [2 ], gotPkg , cmpopts .EquateEmpty ()); diff != "" {
171+ t .Fatalf ("FetchPkg got unexpected diff (-want +got):\n %v" , diff )
172+ }
146173}
147174
148175func TestCreateIfMissing (t * testing.T ) {
0 commit comments