deb-format.at 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. AT_TESTED([dpkg-deb])
  2. AT_SETUP([dpkg-deb options])
  3. AT_KEYWORDS([dpkg-deb command-line])
  4. AT_CHECK([dpkg-deb --help], [], [ignore])
  5. AT_CLEANUP
  6. AT_SETUP([dpkg-deb .deb format])
  7. AT_KEYWORDS([dpkg-deb deb])
  8. DPKG_GEN_CONTROL([pkg-deb-format])
  9. DPKG_MOD_CONTROL([pkg-deb-format],
  10. [s/^Description:.*$/& - deb format support/])
  11. AT_DATA([pkg-deb-format/file-templ], [test
  12. ])
  13. AT_CHECK([
  14. # Initialize the template package
  15. mv pkg-deb-format pkg-templ
  16. chmod -R u+w pkg-templ
  17. find pkg-templ | xargs touch -t 197001010100.00
  18. $ASROOT dpkg-deb --uniform-compression -Znone -b pkg-templ >/dev/null
  19. # Extract the base members
  20. ar x pkg-templ.deb
  21. gzip -c control.tar >control.tar.gz
  22. gzip -c data.tar >data.tar.gz
  23. xz -c control.tar >control.tar.xz
  24. xz -c data.tar >data.tar.xz
  25. bzip2 -c data.tar >data.tar.bz2
  26. lzma -c data.tar >data.tar.lzma
  27. touch _ignore
  28. touch unknown
  29. ])
  30. AT_CHECK([
  31. # Test debian-binary with 2.x versions
  32. cp pkg-templ.deb pkg-version-2x.deb
  33. echo 2.999 >debian-binary
  34. ar rc pkg-version-2x.deb debian-binary
  35. ar t pkg-version-2x.deb
  36. ar x pkg-templ.deb debian-binary
  37. # XXX: Ideally we would have no need to strip trailing spaces.
  38. dpkg-deb -I pkg-version-2x.deb | sed -e 's/ *$//'
  39. ], [], [debian-binary
  40. control.tar
  41. data.tar
  42. new debian package, version 2.999.
  43. size 20674 bytes: control archive=10240 bytes.
  44. 193 bytes, 7 lines control
  45. Package: pkg-deb-format
  46. Version: 0.0-1
  47. Section: test
  48. Priority: extra
  49. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  50. Architecture: all
  51. Description: test package - deb format support
  52. ])
  53. AT_CHECK([
  54. # Test debian-binary with extra lines
  55. cp pkg-templ.deb pkg-magic-extra.deb
  56. echo "extra line" >>debian-binary
  57. ar rc pkg-magic-extra.deb debian-binary
  58. ar t pkg-magic-extra.deb
  59. ar x pkg-templ.deb debian-binary
  60. # XXX: Ideally we would have no need to strip trailing spaces.
  61. dpkg-deb -I pkg-magic-extra.deb | sed -e 's/ *$//'
  62. ], [], [debian-binary
  63. control.tar
  64. data.tar
  65. new debian package, version 2.0.
  66. size 20684 bytes: control archive=10240 bytes.
  67. 193 bytes, 7 lines control
  68. Package: pkg-deb-format
  69. Version: 0.0-1
  70. Section: test
  71. Priority: extra
  72. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  73. Architecture: all
  74. Description: test package - deb format support
  75. ])
  76. AT_CHECK([
  77. # Test missing debian-binary member
  78. cp pkg-templ.deb pkg-missing-magic.deb
  79. ar d pkg-missing-magic.deb debian-binary
  80. ar t pkg-missing-magic.deb
  81. dpkg-deb -I pkg-missing-magic.deb
  82. ], [2], [control.tar
  83. data.tar
  84. ], [dpkg-deb: error: file 'pkg-missing-magic.deb' is not a debian binary archive (try dpkg-split?)
  85. ])
  86. AT_CHECK([
  87. # Test missing control member
  88. cp pkg-templ.deb pkg-missing-control.deb
  89. ar d pkg-missing-control.deb control.tar
  90. ar t pkg-missing-control.deb
  91. dpkg-deb -I pkg-missing-control.deb
  92. ], [2], [debian-binary
  93. data.tar
  94. ], [dpkg-deb: error: archive 'pkg-missing-control.deb' has premature member 'data.tar' before 'control.tar', giving up
  95. ])
  96. AT_CHECK([
  97. # Test missing data member
  98. cp pkg-templ.deb pkg-missing-data.deb
  99. ar d pkg-missing-data.deb data.tar
  100. ar t pkg-missing-data.deb
  101. dpkg-deb -c pkg-missing-data.deb
  102. ], [2], [debian-binary
  103. control.tar
  104. ], [dpkg-deb: error: unexpected end of file in archive member header in pkg-missing-data.deb
  105. ])
  106. AT_CHECK([
  107. # Test mixed member (index 1)
  108. cp pkg-templ.deb pkg-mixed-1-member.deb
  109. ar ra debian-binary pkg-mixed-1-member.deb unknown
  110. ar t pkg-mixed-1-member.deb
  111. dpkg-deb -I pkg-mixed-1-member.deb
  112. ], [2], [debian-binary
  113. unknown
  114. control.tar
  115. data.tar
  116. ], [dpkg-deb: error: archive 'pkg-mixed-1-member.deb' has premature member 'unknown' before 'control.tar', giving up
  117. ])
  118. AT_CHECK([
  119. # Test mixed member (index 2)
  120. cp pkg-templ.deb pkg-mixed-2-member.deb
  121. ar ra control.tar pkg-mixed-2-member.deb unknown
  122. ar t pkg-mixed-2-member.deb
  123. dpkg-deb -c pkg-mixed-2-member.deb
  124. ], [2], [debian-binary
  125. control.tar
  126. unknown
  127. data.tar
  128. ], [dpkg-deb: error: archive 'pkg-mixed-2-member.deb' has premature member 'unknown' before 'data.tar', giving up
  129. ])
  130. AT_CHECK([
  131. # Test swapped control and data members
  132. cp pkg-templ.deb pkg-swap-members.deb
  133. ar ma data.tar pkg-swap-members.deb control.tar
  134. ar t pkg-swap-members.deb
  135. dpkg-deb -I pkg-swap-members.deb
  136. ], [2], [debian-binary
  137. data.tar
  138. control.tar
  139. ], [dpkg-deb: error: archive 'pkg-swap-members.deb' has premature member 'data.tar' before 'control.tar', giving up
  140. ])
  141. AT_CHECK([
  142. # Test extra member
  143. cp pkg-templ.deb pkg-extra-member.deb
  144. ar q pkg-extra-member.deb unknown
  145. ar t pkg-extra-member.deb
  146. # XXX: Ideally we would have no need to strip trailing spaces.
  147. dpkg-deb -I pkg-extra-member.deb | sed -e 's/ *$//'
  148. ], [], [debian-binary
  149. control.tar
  150. data.tar
  151. unknown
  152. new debian package, version 2.0.
  153. size 20732 bytes: control archive=10240 bytes.
  154. 193 bytes, 7 lines control
  155. Package: pkg-deb-format
  156. Version: 0.0-1
  157. Section: test
  158. Priority: extra
  159. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  160. Architecture: all
  161. Description: test package - deb format support
  162. ])
  163. AT_CHECK([
  164. # Test _ member
  165. cp pkg-templ.deb pkg-under-member.deb
  166. ar ra debian-binary pkg-under-member.deb _ignore
  167. ar t pkg-under-member.deb
  168. # XXX: Ideally we would have no need to strip trailing spaces.
  169. dpkg-deb -I pkg-under-member.deb | sed -e 's/ *$//'
  170. ], [], [debian-binary
  171. _ignore
  172. control.tar
  173. data.tar
  174. new debian package, version 2.0.
  175. size 20732 bytes: control archive=10240 bytes.
  176. 193 bytes, 7 lines control
  177. Package: pkg-deb-format
  178. Version: 0.0-1
  179. Section: test
  180. Priority: extra
  181. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  182. Architecture: all
  183. Description: test package - deb format support
  184. ])
  185. AT_CHECK([
  186. # Test data.tar.bad member
  187. dd if=/dev/zero of=data.tar.bad bs=1K count=4 status=none
  188. ar rc pkg-data-bad.deb debian-binary control.tar.gz data.tar.bad
  189. ar t pkg-data-bad.deb
  190. dpkg-deb -c pkg-data-bad.deb
  191. ], [2], [debian-binary
  192. control.tar.gz
  193. data.tar.bad
  194. ], [dpkg-deb: error: archive 'pkg-data-bad.deb' uses unknown compression for member 'data.tar.bad', giving up
  195. ])
  196. AT_CHECK([
  197. # Test control.tar member
  198. ar rc pkg-control-none.deb debian-binary control.tar data.tar
  199. ar t pkg-control-none.deb
  200. # XXX: Ideally we would have no need to strip trailing spaces.
  201. dpkg-deb -I pkg-control-none.deb | sed -e 's/ *$//'
  202. ], [], [debian-binary
  203. control.tar
  204. data.tar
  205. new debian package, version 2.0.
  206. size 20672 bytes: control archive=10240 bytes.
  207. 193 bytes, 7 lines control
  208. Package: pkg-deb-format
  209. Version: 0.0-1
  210. Section: test
  211. Priority: extra
  212. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  213. Architecture: all
  214. Description: test package - deb format support
  215. ])
  216. AT_CHECK([
  217. # Test control.tar.xz member
  218. ar rc pkg-control-xz.deb debian-binary control.tar.xz data.tar.xz
  219. ar t pkg-control-xz.deb
  220. dpkg-deb -c pkg-control-xz.deb
  221. ], [], [debian-binary
  222. control.tar.xz
  223. data.tar.xz
  224. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  225. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  226. ])
  227. AT_CHECK([
  228. # Test data.tar member
  229. ar rc pkg-data-none.deb debian-binary control.tar.gz data.tar
  230. ar t pkg-data-none.deb
  231. dpkg-deb -c pkg-data-none.deb
  232. ], [], [debian-binary
  233. control.tar.gz
  234. data.tar
  235. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  236. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  237. ])
  238. AT_CHECK([
  239. # Test data.tar.gz member
  240. ar rc pkg-data-gz.deb debian-binary control.tar.gz data.tar.gz
  241. ar t pkg-data-gz.deb
  242. dpkg-deb -c pkg-data-gz.deb
  243. ], [], [debian-binary
  244. control.tar.gz
  245. data.tar.gz
  246. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  247. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  248. ])
  249. AT_CHECK([
  250. # Test data.tar.xz member
  251. ar rc pkg-data-xz.deb debian-binary control.tar.gz data.tar.xz
  252. ar t pkg-data-xz.deb
  253. dpkg-deb -c pkg-data-xz.deb
  254. ], [], [debian-binary
  255. control.tar.gz
  256. data.tar.xz
  257. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  258. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  259. ])
  260. AT_CHECK([
  261. # Test data.tar.bz2 member
  262. ar rc pkg-data-bz2.deb debian-binary control.tar.gz data.tar.bz2
  263. ar t pkg-data-bz2.deb
  264. dpkg-deb -c pkg-data-bz2.deb
  265. ], [], [debian-binary
  266. control.tar.gz
  267. data.tar.bz2
  268. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  269. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  270. ])
  271. AT_CHECK([
  272. # Test data.tar.lzma member
  273. ar rc pkg-data-lzma.deb debian-binary control.tar.gz data.tar.lzma
  274. ar t pkg-data-lzma.deb
  275. dpkg-deb -c pkg-data-lzma.deb
  276. ], [], [debian-binary
  277. control.tar.gz
  278. data.tar.lzma
  279. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  280. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  281. ])
  282. AT_CHECK([
  283. # Test non-uniform data.tar/control.tar member compression
  284. ar rc pkg-mixed-comp.deb debian-binary control.tar.xz data.tar.gz
  285. ar t pkg-mixed-comp.deb
  286. # XXX: Ideally we would have no need to strip trailing spaces.
  287. dpkg-deb -I pkg-mixed-comp.deb | sed -e 's/ *$//'
  288. dpkg-deb -c pkg-mixed-comp.deb
  289. ], [], [debian-binary
  290. control.tar.xz
  291. data.tar.gz
  292. new debian package, version 2.0.
  293. size 682 bytes: control archive=336 bytes.
  294. 193 bytes, 7 lines control
  295. Package: pkg-deb-format
  296. Version: 0.0-1
  297. Section: test
  298. Priority: extra
  299. Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
  300. Architecture: all
  301. Description: test package - deb format support
  302. drwxr-xr-x root/root 0 1970-01-01 00:00 ./
  303. -rw-r--r-- root/root 5 1970-01-01 00:00 ./file-templ
  304. ])
  305. AT_CLEANUP