| package packagediff | |
| import ( | |
| "testing" | |
| "cos.googlesource.com/cos/tools.git/src/cmd/cos_image_analyzer/internal/input" | |
| ) | |
| // test GetPackageInfo function | |
| func TestGetPackageInfo(t *testing.T) { | |
| testPackageList1 := []Package{ | |
| {Category: "sys-boot", Name: "shim", Version: "14.0.20180308", Revision: "4"}, | |
| {Category: "chromeos-launch", Name: "cloud-network-boot", Version: "1.0.0", Revision: "4"}, | |
| {Category: "sys-kernel", Name: "lakitu-kernel-4_19", Version: "4.20.127", Revision: "533"}, | |
| {Category: "sys-apps", Name: "findutils", Version: "4.9.10", Revision: "1"}, | |
| {Category: "app-emulation", Name: "runc", Version: "1.0.0_rc10", Revision: "1"}} | |
| testPackageList2 := []Package{} | |
| testPackageList3 := []Package{ | |
| {Category: "sys-boot", Name: "shim", Version: "14.0.20180308", Revision: "4"}, | |
| {Category: "chromeos-base", Name: "cloud-network-init", Version: "1.0.0", Revision: "4"}, | |
| {Category: "sys-kernel", Name: "lakitu-kernel-4_19", Version: "4.19.127", Revision: "535"}, | |
| {Category: "app-shells", Name: "dash", Version: "0.5.9.1", Revision: "7"}} | |
| for _, tc := range []struct { | |
| image *input.ImageInfo | |
| flagInfo *input.FlagInfo | |
| want []Package | |
| }{ // Test image1 | |
| {image: &input.ImageInfo{TempDir: "../testdata/image1/", RootfsPartition3: "../testdata/image1/rootfs/"}, | |
| flagInfo: &input.FlagInfo{PackageSelected: true}, | |
| want: testPackageList1}, | |
| // Test empty image | |
| {image: &input.ImageInfo{}, | |
| flagInfo: &input.FlagInfo{PackageSelected: true}, | |
| want: testPackageList2}, | |
| // Test image2 | |
| {image: &input.ImageInfo{TempDir: "../testdata/image2/", RootfsPartition3: "../testdata/image2/rootfs/"}, | |
| flagInfo: &input.FlagInfo{PackageSelected: true}, | |
| want: testPackageList3}, | |
| } { | |
| got, _ := GetPackageInfo(tc.image, tc.flagInfo) | |
| for _, pw := range tc.want { | |
| pg, ok := searchPackageList(pw.Name, got) | |
| if !ok { | |
| t.Fatalf("GetPackageInfo expected: %v, got: %v", tc.want, got) | |
| } | |
| if pw.Name != pg.Name { | |
| t.Fatalf("GetPackageInfo expected: %v, got: %v", tc.want, got) | |
| } | |
| if pw.Category != pg.Category { | |
| t.Fatalf("GetPackageInfo expected: %v, got: %v", tc.want, got) | |
| } | |
| if pw.Version != pg.Version { | |
| t.Fatalf("GetPackageInfo expected: %v, got: %v", tc.want, got) | |
| } | |
| if pw.Revision != pg.Revision { | |
| t.Fatalf("GetPackageInfo expected: %v, got: %v", tc.want, got) | |
| } | |
| } | |
| } | |
| } |