test-external-dependency-solver-protocol 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/sh
  2. set -e
  3. TESTDIR=$(readlink -f $(dirname $0))
  4. . $TESTDIR/framework
  5. setupenvironment
  6. configarchitecture 'amd64' 'i386'
  7. insertinstalledpackage 'cool' 'all' '1'
  8. insertinstalledpackage 'stuff' 'all' '1'
  9. insertpackage 'unstable' 'cool' 'all' '2' 'Multi-Arch: foreign'
  10. insertpackage 'unstable' 'stuff' 'all' '2' 'Multi-Arch: foreign'
  11. insertpackage 'unstable' 'coolstuff' 'i386,amd64' '2' 'Depends: cool, stuff'
  12. insertpackage 'unstable' 'awesome' 'all' '2' 'Multi-Arch: foreign
  13. Conflicts: badstuff'
  14. insertpackage 'unstable' 'badstuff' 'all' '2' 'Multi-Arch: foreign
  15. Conflicts: awesome'
  16. insertpackage 'unstable' 'awesomecoolstuff' 'i386' '2' 'Depends: coolstuff, awesome'
  17. insertpackage 'experimental' 'cool' 'all' '3' 'Multi-Arch: foreign'
  18. insertpackage 'experimental' 'stuff' 'all' '3' 'Multi-Arch: foreign'
  19. insertpackage 'experimental' 'coolstuff' 'i386,amd64' '3' 'Depends: cool, stuff'
  20. setupaptarchive
  21. testfailure aptget install --solver dump coolstuff -s
  22. testsuccess grep ERR_NO_FILENAME rootdir/tmp/testfailure.output
  23. export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.edsp"
  24. testfailureequal 'Reading package lists...
  25. Building dependency tree...
  26. Execute external solver...
  27. The solver encountered an error of type: ERR_JUST_DUMPING
  28. The following information might help you to understand what is wrong:
  29. I am too dumb, i can just dump!
  30. Please use one of my friends instead!
  31. E: External solver failed with: I am too dumb, i can just dump!' aptget install --solver dump coolstuff -s
  32. testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
  33. rm -f "$APT_EDSP_DUMP_FILENAME"
  34. #FIXME: this should be unstable, but we don't support pinning yet
  35. testsuccessequal 'Reading package lists...
  36. Building dependency tree...
  37. Execute external solver...
  38. The following NEW packages will be installed:
  39. coolstuff
  40. 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
  41. Inst coolstuff (3 experimental [amd64])
  42. Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff -s
  43. testsuccessequal 'Reading package lists...
  44. Building dependency tree...
  45. Execute external solver...
  46. The following packages will be REMOVED:
  47. cool*
  48. 0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
  49. Purg cool [1]' aptget purge --solver apt cool -s
  50. testsuccess aptget install awesomecoolstuff:i386 -s
  51. testsuccess aptget install --solver apt awesomecoolstuff:i386 -s
  52. rm -f "$APT_EDSP_DUMP_FILENAME"
  53. testfailure aptget install --solver dump awesomecoolstuff:i386 -s
  54. testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
  55. testequal 'Install: awesomecoolstuff:i386' grep :i386 "$APT_EDSP_DUMP_FILENAME"
  56. testempty grep -e ':amd64' -e 'Architecture: any' "$APT_EDSP_DUMP_FILENAME"
  57. testsuccess aptget dist-upgrade -s
  58. testsuccess aptget dist-upgrade -s --solver apt
  59. testsuccess aptget upgrade -s
  60. testsuccess aptget upgrade -s --solver apt
  61. testfailure aptget install awesome badstuff -s
  62. testfailure aptget install awesome badstuff -s --solver apt
  63. testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output
  64. configarchitecture 'armel'
  65. msgtest 'Test direct calling is okay for' 'apt-internal-solver'
  66. cat "$APT_EDSP_DUMP_FILENAME" | aptinternalsolver -q=0 > solver.result 2>&1 || true
  67. if [ "$(tail -n2 solver.result | head -n1 )" = "Message: Done" ]; then
  68. msgpass
  69. else
  70. cat solver.result
  71. msgfail
  72. fi
  73. rm -f "$APT_EDSP_DUMP_FILENAME"
  74. testfailure aptget install --solver apt awesomecoolstuff:i386 -s
  75. testsuccess aptinternalsolver scenario
  76. testsuccessequal 'Package: stuff
  77. Source: stuff
  78. Architecture: all
  79. Version: 1
  80. Source-Version: 1
  81. Installed: yes
  82. APT-ID: 2
  83. Priority: optional
  84. Section: other
  85. APT-Pin: 100
  86. APT-Candidate: yes
  87. ' aptinternalsolver scenario stuff