| package binary | |
| import ( | |
| "testing" | |
| ) | |
| // test DirectoryDiff function | |
| func TestDirectoryDiff(t *testing.T) { | |
| testVerboseOutput := `Files ../testdata/image1/rootfs/lib64/python.txt and ../testdata/image2/rootfs/lib64/python.txt differ | |
| Files ../testdata/image1/rootfs/proc/security/access.conf and ../testdata/image2/rootfs/proc/security/access.conf differ | |
| Files ../testdata/image1/rootfs/proc/security/configs and ../testdata/image2/rootfs/proc/security/configs differ | |
| Only in ../testdata/image1/rootfs/usr/lib: usr-lib-image1 | |
| Only in ../testdata/image2/rootfs/usr/lib: usr-lib-image2` | |
| testBriefOutput := `Files ../testdata/image1/rootfs/lib64/python.txt and ../testdata/image2/rootfs/lib64/python.txt differ | |
| Files in ../testdata/image1/rootfs/proc and ../testdata/image2/rootfs/proc differ | |
| Unique files in ../testdata/image1/rootfs/usr/lib | |
| Unique files in ../testdata/image2/rootfs/usr/lib` | |
| for _, tc := range []struct { | |
| dir1 string | |
| dir2 string | |
| root string | |
| verbose bool | |
| compressedDirs []string | |
| want string | |
| }{ | |
| {dir1: "../testdata/image1/rootfs/", dir2: "../testdata/image2/rootfs/", root: "rootfs", verbose: true, compressedDirs: []string{"/proc/", "/usr/lib/"}, want: testVerboseOutput}, | |
| {dir1: "../testdata/image1/rootfs/", dir2: "../testdata/image2/rootfs/", root: "rootfs", verbose: false, compressedDirs: []string{"/proc/", "/usr/lib/"}, want: testBriefOutput}, | |
| } { | |
| got, _ := directoryDiff(tc.dir1, tc.dir2, tc.root, tc.verbose, tc.compressedDirs) | |
| if got != tc.want { | |
| t.Fatalf("directoryDiff expected:\n%v\ngot:\n%v", tc.want, got) | |
| } | |
| } | |
| } | |
| // test PureDiff function | |
| func TestPureDiff(t *testing.T) { | |
| testOutput1 := `1c1 | |
| < testing 123 can you hear me? | |
| --- | |
| > testing 456 can you hear me?` | |
| testOutput2 := `1c1 | |
| < These are not the configs you are looking for | |
| --- | |
| > These are the configs you are looking for` | |
| for _, tc := range []struct { | |
| input1 string | |
| input2 string | |
| want string | |
| }{ | |
| {input1: "../testdata/image1/rootfs/proc/security/access.conf", input2: "../testdata/image2/rootfs/proc/security/access.conf", want: testOutput1}, | |
| {input1: "../testdata/image1/rootfs/proc/security/configs", input2: "../testdata/image2/rootfs/proc/security/configs", want: testOutput2}, | |
| {input1: "../testdata/image1/rootfs/proc/security/lib-image1", input2: "../testdata/image2/rootfs/proc/security/lib-image2", want: ""}, | |
| } { | |
| got, _ := pureDiff(tc.input1, tc.input2) | |
| if got != tc.want { | |
| t.Fatalf("PureDiff expected:\n%v\ngot:\n%v", tc.want, got) | |
| } | |
| } | |
| } | |
| // test getKclMap function | |
| func TestGetKclMap(t *testing.T) { | |
| for _, tc := range []struct { | |
| input []string | |
| want map[string]string | |
| }{ | |
| {input: []string{"linux", "/syslinux/vmlinuz.A", "init=/usr/lib/systemd/systemd", "boot=local", "rootwait", "ro", "dm_verity.dev_wait=50"}, | |
| want: map[string]string{"syslinux/vmlinuz.A": "", "boot": "local", "dm_verity.dev_wait": "50", "init": "/usr/lib/systemd/systemd", "linux": "", "ro": "", "rootwait": ""}}, | |
| {input: []string{"linux", "/syslinux/vmlinuz.A", "init=/usr/lib32/systemd/", "ro", "dm_verity.dev_wait=2", "i915.modeset=1", "cros_efi"}, | |
| want: map[string]string{"syslinux/vmlinuz.A": "", "dm_verity.dev_wait": "2", "init": "/usr/lib32/systemd/", "linux": "", "ro": "", "i915.modeset": "1"}}, | |
| {input: []string{}, | |
| want: map[string]string{}}, | |
| } { | |
| got := getKclMap(tc.input) | |
| for param, value := range tc.want { | |
| if value != got[param] { | |
| t.Fatalf("getKclMap expected:\n%v\ngot:\n%v", tc.want, got) | |
| } | |
| } | |
| } | |
| } |