poldek: poldek/tests/sh/07-depsolver - multilib tests

mis mis at pld-linux.org
Sun Jan 27 16:58:56 CET 2008


Author: mis                          Date: Sun Jan 27 15:58:56 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- multilib tests

---- Files affected:
poldek/poldek/tests/sh:
   07-depsolver (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: poldek/poldek/tests/sh/07-depsolver
diff -u poldek/poldek/tests/sh/07-depsolver:1.2 poldek/poldek/tests/sh/07-depsolver:1.3
--- poldek/poldek/tests/sh/07-depsolver:1.2	Wed Jan 23 23:55:08 2008
+++ poldek/poldek/tests/sh/07-depsolver	Sun Jan 27 16:58:51 2008
@@ -26,6 +26,9 @@
     mkdir -p $DESTINATION_REPO || fail "mkdir $DESTINATION_REPO failed"
     # provide /bin/sh auto requirement
     build_installed sh -p /bin/sh
+
+    POLDEK_INSTALL="$POLDEK_NOCONF -Odependency_solver=$DEPENDENCY_SOLVER --noask"
+    POLDEK_INSTALL="$POLDEK_INSTALL --st dir -s $REPO --dt dir --destination $DESTINATION_REPO"
 }
 
 
@@ -61,33 +64,49 @@
 
 build_installed() {
    do_build_package $DESTINATION_REPO $@
-} 
+}
 
-# install "a" package, check result against expected arg
+runpoldek() {
+  typeset cmd="$POLDEK_INSTALL $@"
+  if is_verbose_mode; then
+      echo "Executing $cmd"
+      $cmd || fail "'poldek $@' failed"
+  else
+      $cmd >/dev/null 2>&1 || fail "'poldek $@' failed"
+  fi
+}
+ 
+# try to install package and check result
+# usage: try_install <package> <expected installed> [<expected removed>]
 try_install() {
   package="$1"; shift  
   expected="$1"; shift
-  poldek_options=""
-  [ $# -gt 0 ] && poldek_options="$@";  
+  rm_expected=""
+  [ $# -gt 0 ] && rm_expected="$1"
+
   regexp=$(echo $expected | sed 's/,/|/g')
   n_expected=$(echo $expected | sed 's|,|\n|g' | wc -l)
+  if [ -n "$rm_expected" ]; then
+     rm_regexp=$(echo $rm_expected | sed 's/,/|/g')
+     rm_n_expected=$(echo $rm_expected | sed 's|,|\n|g' | wc -l)
+  fi
 
-  cmd="$POLDEK_NOCONF -Odependency_solver=3 --noask $poldek_options"
-  cmd="$cmd --st dir -s $REPO --dt dir --destination $DESTINATION_REPO"
-  cmd="$cmd -uvt $package"
+  cmd="-uvt $package"
+  runpoldek $cmd  
 
-  if is_verbose_mode; then
-      echo $cmd  
-      $cmd || fail "'poldek -uvt a' failed"
-  else
-      $cmd >/dev/null 2>&1 || fail "'poldek -uvt a' failed"
-  fi
-  
-  out=$($cmd --parsable-tr-summary | egrep "^%[ID]")
-  n_all=$(echo $out | sed 's|%|\n%|g' | grep '%' | wc -l)
+  out=$($POLDEK_INSTALL $cmd --parsable-tr-summary | egrep "^%[IDR]")
+
+  n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%[ID]' | wc -l)
   n=$(echo $out | sed 's|%|\n%|g' | egrep "^%[ID] ($regexp)" | wc -l)
   assertEquals "unexpected ($n_all) number of packages (expected $n)" "$n_all" "$n"
   assertEquals "not all or non expected packages installed (expected $expected)" "$n" "$n_expected"
+
+  if [ -n "$rm_expected" ]; then   
+     n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%R' | wc -l)
+     n=$(echo $out | sed 's|%|\n%|g' | egrep "^%R ($rm_regexp)" | wc -l)
+     assertEquals "unexpected ($n_all) number of packages removed (expected $n)" "$n_all" "$n"
+     assertEquals "not all or non expected packages removed (expected $rm_expected)" "$n" "$rm_n_expected"
+  fi
 }
 
 try_install_a() {
@@ -184,6 +203,7 @@
 }
 
 testUpgradeSet() {
+    msgn "Preparing repositories..."
     prev_i=
     for i in b c d e f a; do 
         build_installed $i 1-1
@@ -202,6 +222,7 @@
 
 # all 'a*' must be upgraded at once
 testUpgradeGreedy() {
+    msgn "Preparing repositories..."
     for i in "1-1" "2-2"; do
         build a $i
         build a-devel $i -r "'a = $i'"
@@ -215,6 +236,7 @@
 
 # bar obsoletes foo
 testUpgradeObsolete() {
+    msgn "Preparing repositories..."
     build_installed a 1-1
     build_installed a-devel 1-1 -r "'a = 1-1'"
     build_installed a-static 1-1 -r "'a-devel = 1-1'"
@@ -226,9 +248,46 @@
     build afoo 1-1 -p "FOO" -o "FOO" -o foo
     build bar 1-1 -o "foo"
 
-    try_install a "a,a-devel,a-static,bar"
+    try_install a "a,a-devel,a-static,bar" "a,a-devel,a-static,foo"
+}
+
+
+testUpgradeMultilib() {
+    ORIG_POLDEK_INSTALL="$POLDEK_INSTALL"
+    POLDEK_INSTALL="$POLDEK_INSTALL -Omultilib=1"
+
+    msgn "Preparing repositories..."
+    for i in i686 x86-64; do 
+        build_installed a 1-1 -a $i -f "/hello.$i"
+        build_installed a-devel 1-1 -r "'a = 1'" -a $i # -f "/usr/include/foo.h"
+        build_installed a-static 1-1 -r "'a = 1'" -a $i -f "/sbin/hello.$i"
 
-    #try_install bar "a,a-devel,a-static,bar"
+        build a 2-2 -a $i -f "/hello.$i"
+        build a-devel 2-2 -r "'a = 2-2'" -a $i # -f "/usr/include/foo.h"
+        build a-static 2-2 -r "'a = 2-2'" -a $i -f "/sbin/hello.$i"
+    done    
+    rm $DESTINATION_REPO/a-devel*i686* # remove duplicated uncolored package
+
+    msgn "Multilib upgrades"
+    try_install a-2-2.x86-64 "a-2-2.x86-64" "a-1-1.x86-64"
+
+    try_install a-devel-2-2.x86-64 "a-2-2.x86-64,a-devel-2-2.x86-64" \
+                                   "a-1-1.x86-64,a-devel-1-1.x86-64"
+
+    try_install a-devel-2-2.i686 "a-2-2.i686,a-devel-2-2.i686" \
+                                 "a-1-1.i686,a-devel-1-1.x86-64"
+    return                              
+    msgn "Testing multilib upgrade-dist"                             
+    runpoldek --upgrade-dist
+    n=$(ls $DESTINATION_REPO/a* | grep 1-1 | wc -l)
+    assertEquals "not all packages were upgraded by upgrade-dist" "$n" "0"
+
+    # Multilib upgrade uncolored package (arch flip-flop regardless of arch) 
+    try_install a-devel-2-2.i686 "a-devel-2-2.i686" "a-devel-2-2.x86-64"
+                                 
+    POLDEK_INSTALL="$ORIG_POLDEK_INSTALL"
 }
 
+
+
 . ./sh/lib/shunit2
\ No newline at end of file
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/tests/sh/07-depsolver?r1=1.2&r2=1.3&f=u



More information about the pld-cvs-commit mailing list