blob: da5bbea2a3194739bf85b8dc4f9e83984f60fd18 [file] [log] [blame]
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)
}
}
}
}