Truncate ex2.bam irrespective of its size
authorDebian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
Sun, 2 Oct 2022 09:41:36 +0000 (11:41 +0200)
committerÉtienne Mollier <emollier@debian.org>
Sun, 2 Oct 2022 09:41:36 +0000 (11:41 +0200)
Bug: https://github.com/pysam-developers/pysam/issues/1128
Applied-Upstream: 56b1624c21b02762fdcea3aa5f657a4152ca178e
Reviewed-by: Étienne Mollier <emollier@debian.org>
Last-Update: 2022-10-02

The Makefile also builds ex2.bam from ex2.sam via `samtools view`.
Samtools as traditionally built using zlib typically generates a
124703-byte file, whereas when built using libdeflate it typically
generates a 122804-byte file -- but `head -c 124000` leaves that unchanged
and the test cases fail because ex2_truncated.bam is unexpectedly valid.

Rewrite the truncation rule to remove the final 512 bytes, irrespective
of ex2.bam's length. (No practical compression will reduce it to less
than 512 bytes in total, so this is safe.) Fixes #1128.
Last-Update: 2022-10-02
Gbp-Pq: Name test-truncated-bam.patch

tests/pysam_data/Makefile

index aa82031e9e452f0b0a5c5efcda003ae00702bc3c..52d93522aa44708df5cbe8aa5ccb6331e252c55b 100644 (file)
@@ -70,7 +70,7 @@ ex1.pileup.gz:ex1.bam ex1.fa
                samtools mpileup -f ex1.fa ex1.bam | gzip > ex1.pileup.gz
 
 ex2_truncated.bam: ex2.bam
-       head -c 124000 ex2.bam > ex2_truncated.bam
+       dd if=ex2.bam of=ex2_truncated.bam bs=$$((`wc -c < ex2.bam`-512)) count=1
 
 # Append a corrupt read with block_size < sizeof(bam_core_t fields)
 ex2_corrupt.bam: ex2.bam