]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-apt-cache
try to avoid removal of crossgraded packages
[apt.git] / test / integration / test-apt-cache
index 7da2ab71ffd56c9351383f29985d45a6d4712d8f..bff1667e80a44f7c514114e41d6df34191a891e3 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 
 setupenvironment
 configarchitecture 'amd64' 'i386'
@@ -16,6 +16,9 @@ Recommends: cool (>= 2) | cooler (<< 5)' "$DESCR"
 insertpackage 'unstable' 'bar' 'all' '1' 'Depends: bar
 Breaks: foo (<< 1)
 Replaces: foo (<< 1)' "$DESCR"
+insertpackage 'unstable' 'specific' 'all' '1' 'Depends: bar:i386, specific:amd64
+Breaks: foo:amd64 (<< 1)
+Replaces: foo:i386 (<< 1)' "$DESCR"
 
 setupaptarchive
 
@@ -31,6 +34,7 @@ testempty aptcache unmet dpkg
 testsuccess aptcache stats
 cp rootdir/tmp/testsuccess.output stats.output
 testsuccess test -s stats.output
+testfailureequal 'E: apt-cache stats does not take any arguments' aptcache stats foo
 testsuccess aptcache xvcg foo
 cp rootdir/tmp/testsuccess.output xvcg.output
 testsuccess test -s xvcg.output
@@ -42,83 +46,138 @@ testsuccess aptcache dump
 cp rootdir/tmp/testsuccess.output dump.output
 testsuccess test -s dump.output
 
-testsuccessequal 'dpkg
-bar
-fancy
-foo' aptcache pkgnames
+testsuccessequal 'bar
+foo
+dpkg
+specific
+fancy' aptcache pkgnames
 testsuccessequal 'bar' aptcache pkgnames bar
-testsuccessequal 'fancy
-foo' aptcache pkgnames f
+testsuccessequal 'foo
+fancy' aptcache pkgnames f
 
-testsuccessequal "       foo |          1 | file:$(readlink -f .)/aptarchive unstable/main amd64 Packages" aptcache madison foo
+testsuccessequal "       foo |          1 | file:$(readlink -f .)/aptarchive unstable/main all Packages" aptcache madison foo
 
 ### depends
 
 testsuccessequal 'foo
   Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>
  |Recommends: <cool>
   Recommends: <cooler>' aptcache depends foo
 testsuccessequal 'foo
   Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>
+ |Recommends: <cool>
+  Recommends: <cooler>' aptcache depends foo --implicit
+testsuccessequal 'foo
+  Depends: bar
+  Conflicts: <foobar>
   Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1
 testsuccessequal 'foo
   Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>
+  Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1 --implicit
+testsuccessequal 'foo
+  Depends: bar
+  Conflicts: <foobar>
  |Recommends: <cool> (>= 2)
   Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1
 testsuccessequal 'foo
   Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>' aptcache depends foo --no-recommends
+ |Recommends: <cool> (>= 2)
+  Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1 --implicit
 testsuccessequal 'foo
-  Depends: bar' aptcache depends foo --important
+  Depends: bar
+  Conflicts: <foobar>' aptcache depends foo --no-recommends
+testsuccessequal 'foo
+  Depends: bar
+  Conflicts: <foobar>' aptcache depends foo --no-recommends --implicit
+testsuccessequal 'foo
+  Depends: bar' aptcache depends foo --important --implicit
+testsuccessequal 'foo
+  Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts
 testsuccessequal 'foo
+  Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts --implicit
+testsuccessequal 'foo
+  Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>' aptcache depends foo --important --no-depends --conflicts
+ |Recommends: <cool>
+  Recommends: <cooler>
+bar
+  Depends: bar
+  Breaks: foo
+  Replaces: foo
+<foobar>
+<cool>
+<cooler>' aptcache depends foo --recurse
 testsuccessequal 'foo
   Depends: bar
   Conflicts: <foobar>
-  Conflicts: <foobar:i386>
  |Recommends: <cool>
   Recommends: <cooler>
 bar
   Depends: bar
   Breaks: foo
-  Breaks: <foo:i386>
   Replaces: foo
+  Breaks: <foo:i386>
   Replaces: <foo:i386>
 <foobar>
-<foobar:i386>
 <cool>
 <cooler>
-<foo:i386>' aptcache depends foo --recurse
+<foo:i386>' aptcache depends foo --recurse --implicit
+testsuccessequal 'foo
+  Depends: bar
+bar
+  Depends: bar
+  Replaces: foo' aptcache depends foo --recurse --important --replaces
 testsuccessequal 'foo
   Depends: bar
 bar
   Depends: bar
   Replaces: foo
   Replaces: <foo:i386>
-<foo:i386>' aptcache depends foo --recurse --important --replaces
+<foo:i386>' aptcache depends foo --recurse --important --replaces --implicit
+testsuccessequal 'bar
+  Depends: bar
+  Breaks: foo
+  Replaces: foo' aptcache depends bar
+testsuccessequal 'bar
+  Depends: bar
+  Breaks: foo
+  Replaces: foo
+  Breaks: <foo:i386>
+  Replaces: <foo:i386>' aptcache depends bar --implicit
+
+testsuccessequal 'specific
+  Depends: <bar:i386>
+  Depends: <specific:amd64>
+    specific
+  Breaks: <foo:amd64>
+  Replaces: <foo:i386>' aptcache depends specific
+testsuccessequal 'specific
+  Depends: <bar:i386>
+  Depends: <specific:amd64>
+    specific
+  Breaks: <foo:amd64>
+  Replaces: <foo:i386>' aptcache depends specific --implicit
 
-## rdpends
+## rdepends
 
+# Note that specific does not appear in this list as it doesn't depend on foo,
+# but on an arch-specific foo!
 testsuccessequal 'foo
 Reverse Depends:
   bar
   bar' aptcache rdepends foo
 testsuccessequal 'foo
 Reverse Depends:
-  Replaces: bar
-  Breaks: bar' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1
+  Breaks: bar
+  Replaces: bar' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1
 testsuccessequal 'foo
 Reverse Depends:
-  Replaces: bar (<< 1)
-  Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1
+  Breaks: bar (<< 1)
+  Replaces: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1
 testsuccessequal 'foo
 Reverse Depends:
   Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1 --important --breaks