test-apt-update-transactions 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. insertpackage 'unstable' 'foo' 'all' '1.0'
  9. insertsource 'unstable' 'foo' 'all' '1.0'
  10. setupaptarchive --no-update
  11. breakfile() {
  12. mv "$1" "${1}.bak"
  13. cat > "$1" <<EOF
  14. Package: bar
  15. EOF
  16. compressfile "$1"
  17. }
  18. restorefile() {
  19. mv "${1}.bak" "$1"
  20. }
  21. testrun() {
  22. # produce an unsigned repository
  23. find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
  24. testfailure aptget update --no-allow-insecure-repositories
  25. testfileequal "$1" "$(listcurrentlistsdirectory)"
  26. # signed but broken
  27. signreleasefiles
  28. breakfile aptarchive/dists/unstable/main/binary-i386/Packages
  29. testfailure aptget update
  30. testfileequal "$1" "$(listcurrentlistsdirectory)"
  31. restorefile aptarchive/dists/unstable/main/binary-i386/Packages
  32. breakfile aptarchive/dists/unstable/main/source/Sources
  33. testfailure aptget update
  34. testfileequal "$1" "$(listcurrentlistsdirectory)"
  35. restorefile aptarchive/dists/unstable/main/source/Sources
  36. }
  37. testsetup() {
  38. msgmsg 'Test with no initial data over' "$1"
  39. rm -rf rootdir/var/lib/apt/lists
  40. mkdir -p rootdir/var/lib/apt/lists/partial
  41. listcurrentlistsdirectory > listsdir.lst
  42. testrun 'listsdir.lst'
  43. msgmsg 'Test with initial data over' "$1"
  44. testsuccess aptget update
  45. listcurrentlistsdirectory > listsdir.lst
  46. testrun 'listsdir.lst'
  47. }
  48. testsetup 'file'
  49. changetowebserver
  50. webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
  51. webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
  52. webserverconfig 'aptwebserver::support::range' 'false' "$1"
  53. testsetup 'http'
  54. changetohttpswebserver
  55. testsetup 'https'