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