test-apt-update-transactions 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/sh
  2. set -e
  3. # ensure that an update will only succeed entirely or not at all
  4. TESTDIR=$(readlink -f $(dirname $0))
  5. . $TESTDIR/framework
  6. setupenvironment
  7. configarchitecture 'i386'
  8. configcompression '.' 'gz'
  9. insertpackage 'unstable' 'foo' 'all' '1.0'
  10. insertsource 'unstable' 'foo' 'all' '1.0'
  11. setupaptarchive --no-update
  12. breakfile() {
  13. mv "${1}" "${1}.bak"
  14. mv "${1}.gz" "${1}.gz.bak"
  15. cat > "$1" <<EOF
  16. Package: bar
  17. EOF
  18. compressfile "$1"
  19. }
  20. restorefile() {
  21. mv "${1}.bak" "$1"
  22. mv "${1}.gz.bak" "${1}.gz"
  23. }
  24. testrun() {
  25. # produce an unsigned repository
  26. find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
  27. testfailure aptget update --no-allow-insecure-repositories
  28. testfileequal "$1" "$(listcurrentlistsdirectory)"
  29. # signed but broken
  30. signreleasefiles
  31. breakfile aptarchive/dists/unstable/main/binary-i386/Packages
  32. testfailure aptget update
  33. testfileequal "$1" "$(listcurrentlistsdirectory)"
  34. restorefile aptarchive/dists/unstable/main/binary-i386/Packages
  35. breakfile aptarchive/dists/unstable/main/source/Sources
  36. testfailure aptget update
  37. testfileequal "$1" "$(listcurrentlistsdirectory)"
  38. restorefile aptarchive/dists/unstable/main/source/Sources
  39. }
  40. testsetup() {
  41. msgmsg 'Test with no initial data over' "$1"
  42. redatereleasefiles 'now'
  43. rm -rf rootdir/var/lib/apt/lists
  44. mkdir -p rootdir/var/lib/apt/lists/partial
  45. listcurrentlistsdirectory > listsdir.lst
  46. testrun 'listsdir.lst'
  47. msgmsg 'Test with initial data over' "$1"
  48. rm -rf rootdir/var/lib/apt/lists
  49. testsuccess aptget update -o Debug::pkgAcquire::Worker=1
  50. listcurrentlistsdirectory > listsdir.lst
  51. redatereleasefiles '+1hour'
  52. testrun 'listsdir.lst'
  53. }
  54. testsetup 'file'
  55. changetowebserver
  56. webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
  57. webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
  58. webserverconfig 'aptwebserver::support::range' 'false' "$1"
  59. testsetup 'http'
  60. changetohttpswebserver
  61. testsetup 'https'