1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
#!/bin/sh
set -e
assert_correct_sources_file() {
testsuccessequal "Package: bar
Format: 3.0 (native)
Binary: bar
Architecture: all
Version: 1.0
Directory: pool/main
Package-List:
bar deb admin extra
Files:
7b57dd065e51de5905288a5104d4bef5 406 bar_1.0.dsc
d41d8cd98f00b204e9800998ecf8427e 0 bar_1.0.tar.gz
Checksums-Sha1:
17a40b76715f393ab7fd6485c9392a02f1adf903 406 bar_1.0.dsc
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 bar_1.0.tar.gz
Checksums-Sha256:
d9d7507f66a89258b6920aca47747d7a30e0e64b09ecabbf02b2efbdabf840a9 406 bar_1.0.dsc
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 bar_1.0.tar.gz
Checksums-Sha512:
ee0a9bfb6614159b45203fc29487d4f37387993ca0e6d6f27b80010498f3731d75753188ece307508ae9af0259bd11a6af15a1a38f0b87dbd5ea1273b7a7d53e 406 bar_1.0.dsc
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 bar_1.0.tar.gz
Package: foo
Format: 3.0 (native)
Binary: foo
Architecture: all
Version: 1.0
Directory: pool/main
Package-List:
foo deb admin extra
Files:
d144826e6f02831c1933e910c92cd7e0 171 foo_1.0.dsc
d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
Checksums-Sha1:
979306aa3ccff3d61bba062bb6977e2493c6f907 171 foo_1.0.dsc
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 foo_1.0.tar.gz
Checksums-Sha256:
8c780af8b5a6d5b3c2e2f9518940beebea52ac6d6ad7b52c082dc925cfe5b532 171 foo_1.0.dsc
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 foo_1.0.tar.gz
Checksums-Sha512:
3da0240fd764657c2f3661b4d750578a9a99b0580591b133756379d48117ebda87a5ed2467f513200d6e7eaf51422cbe91c15720eef7fb4bba2cc8ff81ebc547 171 foo_1.0.dsc
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 foo_1.0.tar.gz
" aptsortpkgs ./aptarchive/dists/test/main/source/Sources -o APT::SortPkgs::Source=true
}
create_source_files() {
NAME="$1"
REQUEST_CLEARSIGN="$2"
TARFILE="aptarchive/pool/main/${NAME}_1.0.tar.gz"
DSC_FILE="aptarchive/pool/main/${NAME}_1.0.dsc"
touch $TARFILE
if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
printf -- "-----BEGIN PGP SIGNED MESSAGE-----\n\n" > $DSC_FILE
fi
cat >> $DSC_FILE << EOF
Format: 3.0 (native)
Source: $NAME
Binary: $NAME
Architecture: all
Version: 1.0
Package-List:
$NAME deb admin extra
Files:
$(md5sum $TARFILE|cut -f1 -d' ') $(stat --print="%s" $TARFILE) ${NAME}_1.0.tar.gz
EOF
if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
cat >> $DSC_FILE <<EOF
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iEYEARECAAYFAk3k/VoACgkQliSD4VZixzQxlgCgpav7j68z48qNTDFuT9fLqwT5
DFwAoIXatJFENEC371bMKTkUKlwZxQEk
=iI9V
-----END PGP SIGNATURE-----
EOF
fi
}
create_clearsigned_source_files() {
NAME="$1"
create_source_files "$NAME" "CLEARSIGN"
}
#
# main()
#
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture "i386"
confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
mkdir -p aptarchive/pool/main
create_source_files foo
create_clearsigned_source_files bar
mkdir -p aptarchive/dists/test/main/i18n/
mkdir -p aptarchive/dists/test/main/source/
mkdir aptarchive-overrides
mkdir aptarchive-cache
msgtest 'generate with --db option'
cd aptarchive
aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
testsuccess grep Misses stats-out.txt
testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 2'
cd ..
assert_correct_sources_file
msgtest 'generate with --db option (again to ensure its in the cache)'
cd aptarchive
aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
testsuccess grep Misses stats-out.txt
testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 0'
cd ..
assert_correct_sources_file
# get ready for the "apt-ftparchive generate" command
cat > apt-ftparchive.conf <<"EOF"
Dir {
ArchiveDir "./aptarchive";
OverrideDir "./aptarchive-overrides";
CacheDir "./aptarchive-cache";
};
Default {
Packages::Compress ". gzip bzip2";
Contents::Compress ". gzip bzip2";
LongDescription "false";
};
TreeDefault {
BinCacheDB "packages-$(SECTION)-$(ARCH).db";
SrcCacheDB "sources-$(SECTION).db";
Directory "pool/$(SECTION)";
SrcDirectory "pool/$(SECTION)";
Sources "$(DIST)/$(SECTION)/source/Sources";
};
Tree "dists/test" {
Sections "main";
Architectures "source";
};
EOF
msgtest 'generate (empty cachedb)'
testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
cp rootdir/tmp/testsuccess.output stats-out.txt
testsuccess grep Misses stats-out.txt
testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 2'
assert_correct_sources_file
msgtest 'generate again out of the cache'
rm -f ./aptarchive/dists/test/main/source/Sources
testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
cp rootdir/tmp/testsuccess.output stats-out.txt
testsuccess grep Misses stats-out.txt
testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 0'
assert_correct_sources_file
# generate invalid files
mkdir aptarchive/pool/invalid
printf "meep" > aptarchive/pool/invalid/invalid_1.0.dsc
testequal "
E: Could not find a record in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
rm -f aptarchive/pool/invalid/invalid_1.0.dsc
printf "meep: yes" > aptarchive/pool/invalid/invalid_1.0.dsc
testequal "
E: Could not find a Source entry in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
rm -f aptarchive/pool/invalid/invalid_1.0.dsc
# ensure clean works
rm -f aptarchive/pool/main/*
testsuccess aptftparchive clean apt-ftparchive.conf -o Debug::APT::FTPArchive::Clean=1
cp rootdir/tmp/testsuccess.output clean-out.txt
testsuccess grep unique clean-out.txt
testfileequal 'rootdir/tmp/testsuccess.output' "0 Number of unique keys in the tree"
testsuccess grep sources-main.db clean-out.txt
testfileequal 'rootdir/tmp/testsuccess.output' "sources-main.db"
|