xref: /aosp_15_r20/build/bazel/tests/partitions/image_contents_test.bzl (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//rules:diff_test.bzl", "diff_test")
2*7594170eSAndroid Build Coastguard Worker
3*7594170eSAndroid Build Coastguard Workerdef image_contents_test(
4*7594170eSAndroid Build Coastguard Worker        name,
5*7594170eSAndroid Build Coastguard Worker        image,
6*7594170eSAndroid Build Coastguard Worker        path,
7*7594170eSAndroid Build Coastguard Worker        expected,
8*7594170eSAndroid Build Coastguard Worker        target_compatible_with = None,
9*7594170eSAndroid Build Coastguard Worker        tags = []):
10*7594170eSAndroid Build Coastguard Worker    """A test that extracts a file from a disk image file, and then asserts that it's identical to some other file."""
11*7594170eSAndroid Build Coastguard Worker
12*7594170eSAndroid Build Coastguard Worker    extracted_path = name + path.replace("/", "_") + "_extracted.bin"
13*7594170eSAndroid Build Coastguard Worker
14*7594170eSAndroid Build Coastguard Worker    native.genrule(
15*7594170eSAndroid Build Coastguard Worker        name = name + "_extracted",
16*7594170eSAndroid Build Coastguard Worker        tools = [
17*7594170eSAndroid Build Coastguard Worker            "//external/e2fsprogs/debugfs:debugfs",
18*7594170eSAndroid Build Coastguard Worker        ],
19*7594170eSAndroid Build Coastguard Worker        srcs = [image],
20*7594170eSAndroid Build Coastguard Worker        outs = [extracted_path],
21*7594170eSAndroid Build Coastguard Worker        cmd = "$(location //external/e2fsprogs/debugfs:debugfs) -R 'dump " + path + " $@' $<",
22*7594170eSAndroid Build Coastguard Worker        tags = ["manual"],
23*7594170eSAndroid Build Coastguard Worker    )
24*7594170eSAndroid Build Coastguard Worker
25*7594170eSAndroid Build Coastguard Worker    diff_test(
26*7594170eSAndroid Build Coastguard Worker        name = name,
27*7594170eSAndroid Build Coastguard Worker        file1 = extracted_path,
28*7594170eSAndroid Build Coastguard Worker        file2 = expected,
29*7594170eSAndroid Build Coastguard Worker        target_compatible_with = target_compatible_with,
30*7594170eSAndroid Build Coastguard Worker        tags = tags,
31*7594170eSAndroid Build Coastguard Worker    )
32