diff options
Diffstat (limited to 'src/at/deb-split.at')
-rw-r--r-- | src/at/deb-split.at | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/at/deb-split.at b/src/at/deb-split.at new file mode 100644 index 0000000..69e777b --- /dev/null +++ b/src/at/deb-split.at @@ -0,0 +1,225 @@ +AT_SETUP([dpkg-split options]) +AT_KEYWORDS([dpkg-split command-line]) + +AT_CHECK([dpkg-split --version], [], [ignore]) +AT_CHECK([dpkg-split --help], [], [ignore]) + +AT_CLEANUP + +AT_SETUP([dpkg-split .deb format]) +AT_KEYWORDS([dpkg-split deb-split]) + +DPKG_GEN_CONTROL([pkg-split]) +DPKG_MOD_CONTROL([pkg-split], + [s/^Description:.*$/$& - normal package to be split/]) +AT_CHECK([ +# Initialize the template package +chmod -R u+w pkg-split +$PERL -E 'print "fade" foreach 1 .. 1024 * 512' >pkg-split/data-file +find pkg-split | xargs touch -t 197001010100.00 +dpkg-deb --root-owner-group -Znone -b pkg-split >/dev/null +]) + +AT_CHECK([ +# Test splitting a package (in 10 parts: 9 * 210 KiB B + 158 KiB) +dpkg-split -S 210 -s pkg-split.deb pkg-split-part +for p in DPKG_SEQ([10]); do + test -f pkg-split-part.${p}of10.deb +done +ar x pkg-split-part.1of10.deb data.1 +], [], [Splitting package pkg-split into 10 parts: 1 2 3 4 5 6 7 8 9 10 done +]) + +DEB_SPLIT_MD5SUM=1684b6cdb72bf035ccafd653f307d3da +DEB_SPLIT_LENGTH=2109632 +DEB_SPLIT_PART_LENGTH=214016 +DEB_SPLIT_PART_SIZE=214222 +DEB_SPLIT_LAST_LENGTH=183488 +DEB_SPLIT_LAST_SIZE=183694 + +DEB_SPLIT_PART_SIZE_VERSION=$((DEB_SPLIT_PART_SIZE + 2)) + +AT_CHECK_UNQUOTED([ +# Test debian-split with 2.x version +ar x pkg-split-part.1of10.deb debian-split +$PERL -p -i -E 's/.*/2.999/ if $. == 1' debian-split +ar qSc pkg-split-part-version-2x.deb debian-split data.1 +ar t pkg-split-part-version-2x.deb +dpkg-split -I pkg-split-part-version-2x.deb +], [], [debian-split +data.1 +pkg-split-part-version-2x.deb: + Part format version: 2.999 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_VERSION bytes + +]) + +DEB_SPLIT_PART_SIZE_MAGIC_EXTRA=$((DEB_SPLIT_PART_SIZE + 10)) + +AT_CHECK_UNQUOTED([ +# Test debian-split with extra lines +ar x pkg-split-part.1of10.deb debian-split +echo "extra line" >>debian-split +ar qSc pkg-split-part-magic-extra.deb debian-split data.1 +ar t pkg-split-part-magic-extra.deb +dpkg-split -I pkg-split-part-magic-extra.deb +], [], [debian-split +data.1 +pkg-split-part-magic-extra.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE_MAGIC_EXTRA bytes + +]) + +AT_CHECK([ +# Test missing debian-split +cp pkg-split-part.1of10.deb pkg-split-part-missing-magic.deb +ar d pkg-split-part-missing-magic.deb debian-split +ar t pkg-split-part-missing-magic.deb +dpkg-split -I pkg-split-part-missing-magic.deb +], [], [data.1 +file 'pkg-split-part-missing-magic.deb' is not an archive part +]) + +AT_CHECK([ +# Test missing data part member +cp pkg-split-part.1of10.deb pkg-split-part-missing-data.deb +ar d pkg-split-part-missing-data.deb data.1 +ar t pkg-split-part-missing-data.deb +dpkg-split -I pkg-split-part-missing-data.deb +], [2], [debian-split +], [dpkg-split: error: unexpected end of file in reading data part member ar header in pkg-split-part-missing-data.deb +]) + +AT_CHECK([ +# Test duplicate debian-split member +ar x pkg-split-part.1of10.deb debian-split data.1 +ar qSc pkg-split-part-duplicate-magic.deb debian-split debian-split data.1 +ar t pkg-split-part-duplicate-magic.deb +dpkg-split -I pkg-split-part-duplicate-magic.deb +], [2], [debian-split +debian-split +data.1 +], [dpkg-split: error: file 'pkg-split-part-duplicate-magic.deb' is corrupt - second member is not data member +]) + +AT_CHECK_UNQUOTED([ +# Test unknown extra member +cp pkg-split-part.1of10.deb pkg-split-part-extra-member.deb +echo "some content" >unknown +ar qS pkg-split-part-extra-member.deb unknown +ar t pkg-split-part-extra-member.deb +dpkg-split -I pkg-split-part-extra-member.deb +], [], [debian-split +data.1 +unknown +pkg-split-part-extra-member.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) + +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.1of10.deb +], [], [pkg-split-part.1of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 1/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 0 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.2of10.deb +], [], [pkg-split-part.2of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 2/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 214016 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.9of10.deb +], [], [pkg-split-part.9of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 9/10 + Part length: $DEB_SPLIT_PART_LENGTH bytes + Part offset: 1712128 bytes + Part file size (used portion): $DEB_SPLIT_PART_SIZE bytes + +]) +AT_CHECK_UNQUOTED([ +# Test getting information about the split parts (parsing verification) +dpkg-split -I pkg-split-part.10of10.deb +], [], [pkg-split-part.10of10.deb: + Part format version: 2.1 + Part of package: pkg-split + ... version: 0.0-1 + ... architecture: all + ... MD5 checksum: $DEB_SPLIT_MD5SUM + ... length: $DEB_SPLIT_LENGTH bytes + ... split every: $DEB_SPLIT_PART_LENGTH bytes + Part number: 10/10 + Part length: $DEB_SPLIT_LAST_LENGTH bytes + Part offset: 1926144 bytes + Part file size (used portion): $DEB_SPLIT_LAST_SIZE bytes + +]) + +AT_CHECK([ +# Test joining the split parts back together +dpkg-split -o pkg-joined.deb -j pkg-split-part.*.deb +cmp pkg-split.deb pkg-joined.deb +], [], [Putting package pkg-split together from 10 parts: 1 2 3 4 5 6 7 8 9 10 done +]) + +AT_CLEANUP |