Skip to content

Commit 9fa83fa

Browse files
committed
tests: Add Ubuntu 26.04 (resolute) digest stability test
Ubuntu 26.04 uses umoci/PAX format tars produced by Rockcraft, which include GNU-style record padding after the end-of-archive blocks. Before the preceding fix, this caused 'Layer has incorrect checksum' errors on the @digest compute-id path because the reconstructed tar was shorter than the original. Pin the image by manifest digest (d31acef2) and record the expected composefs image ID so regressions are caught automatically. Assisted-by: OpenCode (Claude Sonnet 4.6) Signed-off-by: Colin Walters <walters@verbum.org>
1 parent 1c31545 commit 9fa83fa

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

ci/fixture-images.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,9 @@ docker://registry.access.redhat.com/ubi10/ubi:10.1-1772441712 docker://ghcr.io/c
1616
# centos-bootc stream10, pinned by manifest digest.
1717
# Used in: crates/integration-tests/src/tests/digest_stability.rs
1818
docker://quay.io/centos-bootc/centos-bootc@sha256:d1913e3d616b9acb7fc2e3331be8baf844048bca2681a23d34e53e75eb18f3d0 docker://ghcr.io/composefs/ci-fixture-centos-bootc:stream10-d1913e3d
19+
20+
# Ubuntu 26.04 (resolute), pinned by manifest digest.
21+
# Uses umoci/PAX format tars with GNU record padding — specifically exercises
22+
# the trailing-padding preservation fix in split_async().
23+
# Used in: crates/integration-tests/src/tests/digest_stability.rs
24+
docker://docker.io/library/ubuntu@sha256:d31acef2a964b6df1f2b7e20a1525c4f2378024e087a4f8a8a9a4247e6a79573 docker://ghcr.io/composefs/ci-fixture-ubuntu-resolute:26.04-d31acef2

crates/composefs-integration-tests/src/tests/digest_stability.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,24 @@ const CENTOS_BOOTC: ContainerImage = ContainerImage {
5656
),
5757
};
5858

59+
// Ubuntu 26.04 (resolute), pinned by manifest digest.
60+
// Mirrored from docker.io/library/ubuntu via ci/fixture-images.txt.
61+
// Ubuntu 26.04 uses umoci/PAX format tars produced by Rockcraft, which emit
62+
// GNU-style record padding after the end-of-archive blocks. This exercises
63+
// the trailing-padding preservation fix in split_async() — without it the
64+
// reconstructed tar is shorter than the original and the diff_id checksum
65+
// fails in the @digest code path of create_filesystem().
66+
const UBUNTU_RESOLUTE: ContainerImage = ContainerImage {
67+
label: "ubuntu-resolute",
68+
image_ref: "docker://ghcr.io/composefs/ci-fixture-ubuntu-resolute:26.04-d31acef2",
69+
upstream_ref: "docker://docker.io/library/ubuntu@sha256:d31acef2a964b6df1f2b7e20a1525c4f2378024e087a4f8a8a9a4247e6a79573",
70+
expected_id: "150caabb982d7005db1a1d0480d57a95e84b160aa2b1159f9aae66e92ba07b36\
71+
11ea38e1836eff923dc3a1a617c18494757be0f5e3db16cc7a522981b3f42d40",
72+
expected_bootable_id: None,
73+
};
74+
5975
/// All container images to test.
60-
const CONTAINER_IMAGES: &[&ContainerImage] = &[&UBI10, &CENTOS_BOOTC];
76+
const CONTAINER_IMAGES: &[&ContainerImage] = &[&UBI10, &CENTOS_BOOTC, &UBUNTU_RESOLUTE];
6177

6278
/// Return `true` if network tests should be skipped.
6379
fn skip_network() -> bool {

0 commit comments

Comments
 (0)