poldek: poldek/tests/README (NEW), poldek/tests/build-test-rpm.sh, ...

mis mis at pld-linux.org
Wed Jan 23 23:55:13 CET 2008


Author: mis                          Date: Wed Jan 23 22:55:13 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- more depsolver tests

---- Files affected:
poldek/poldek/tests:
   README (NONE -> 1.1)  (NEW), build-test-rpm.sh (1.8 -> 1.9) 
poldek/poldek/tests/sh:
   07-depsolver (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: poldek/poldek/tests/README
diff -u /dev/null poldek/poldek/tests/README:1.1
--- /dev/null	Wed Jan 23 23:55:13 2008
+++ poldek/poldek/tests/README	Wed Jan 23 23:55:08 2008
@@ -0,0 +1,18 @@
+poldek test suite
+
+To run all tests:
+
+$ make check  # runs all tests made with check library
+$ make sheck  # runs all tests written in shell (sh/ subdir)
+
+
+sh/ test scripts may be executed separately:
+
+$ ./sh/07-depsolver -h
+
+Particular tests may be choosen:
+
+$ ./sh/07-depsolver -v --runtest testSuggests
+
+
+

================================================================
Index: poldek/poldek/tests/build-test-rpm.sh
diff -u poldek/poldek/tests/build-test-rpm.sh:1.8 poldek/poldek/tests/build-test-rpm.sh:1.9
--- poldek/poldek/tests/build-test-rpm.sh:1.8	Wed Jul 11 00:49:38 2007
+++ poldek/poldek/tests/build-test-rpm.sh	Wed Jan 23 23:55:08 2008
@@ -8,6 +8,7 @@
 requires=
 provides=
 suggests=
+obsoletes=
 conflicts=
 files=
 arch="noarch"
@@ -37,6 +38,9 @@
         -s)
             shift; suggests="$suggests ${1},"; shift ;;
 
+        -o)    
+            shift; obsoletes="$obsoletes ${1},"; shift ;;
+
         -c)     
             shift; conflicts="$conflicts ${1},"; shift ;;
 
@@ -87,6 +91,7 @@
 [ -n "$provides" ] &&  echo "Provides: $provides" >> $SPEC
 [ -n "$requires" ] && echo "Requires: $requires" >> $SPEC
 [ -n "$suggests" ] && echo "Suggests: $suggests" >> $SPEC
+[ -n "$obsoletes" ] && echo "Obsoletes: $obsoletes" >> $SPEC
 [ -n "$conflicts" ] && echo "Conflicts: $conflicts" >> $SPEC
 
 echo -e "%description\nPackage build by $COMMAND\n" >> $SPEC

================================================================
Index: poldek/poldek/tests/sh/07-depsolver
diff -u poldek/poldek/tests/sh/07-depsolver:1.1 poldek/poldek/tests/sh/07-depsolver:1.2
--- poldek/poldek/tests/sh/07-depsolver:1.1	Mon Jan 21 15:49:49 2008
+++ poldek/poldek/tests/sh/07-depsolver	Wed Jan 23 23:55:08 2008
@@ -5,6 +5,8 @@
 . ./sh/lib/repo-setup
 
 ORIGREPO=
+DESTINATION_REPO=
+DEPENDENCY_SOLVER=3
 
 tearDown() {
     #[ -n "$REPO" ] && rm -f $REPO/*.*
@@ -13,16 +15,25 @@
 setUp() {
     [ -z "$ORIGREPO" ] && ORIGREPO=$REPO
     [ -z "$ORIGREPO" ] && fail "empty REPO env variable"
-    REPO="$ORIGREPO/$SU_FUNC"
-    rm -rf $REPO
+    rm -rf $ORIGREPO/*
+
+    REPO="$ORIGREPO/src"
+    DESTINATION_REPO="$ORIGREPO/dest";
+
+    rm -rf $REPO $DESTINATION_REPO
+    
     mkdir -p $REPO || fail "mkdir $REPO failed"
+    mkdir -p $DESTINATION_REPO || fail "mkdir $DESTINATION_REPO failed"
+    # provide /bin/sh auto requirement
+    build_installed sh -p /bin/sh
 }
 
 
 PACKAGE_DIR="$REPO"
 DEFAULT_VER="1-1"
 
-build() {
+do_build_package() {
+  destdir=$1; shift
   name=$1; shift
   version=""
 
@@ -40,19 +51,33 @@
   
   params=""
   [ $# -gt 0 ] && params="$@";  
-  #eval ./build-test-rpm.sh -d $REPO -n $name -v $version $params
-  eval ./build-test-rpm.sh -d $REPO -n $name -v $version $params >/dev/null 2>&1 || fail "build package $name failed"
+  #eval ./build-test-rpm.sh -d $destdir -n $name -v $version $params
+  eval ./build-test-rpm.sh -d $destdir -n $name -v $version $params >/dev/null 2>&1 || fail "build package $name failed"
 } 
 
-# install "a" package, check result against expected arg
-try_install_a() {
-  expected="$1"
+build() {
+   do_build_package $REPO $@
+}
 
+build_installed() {
+   do_build_package $DESTINATION_REPO $@
+} 
+
+# install "a" package, check result against expected arg
+try_install() {
+  package="$1"; shift  
+  expected="$1"; shift
+  poldek_options=""
+  [ $# -gt 0 ] && poldek_options="$@";  
   regexp=$(echo $expected | sed 's/,/|/g')
   n_expected=$(echo $expected | sed 's|,|\n|g' | wc -l)
 
-  cmd="$POLDEK_NOCONF -Odependency_solver=3 --st dir -s $REPO -uvt a"
+  cmd="$POLDEK_NOCONF -Odependency_solver=3 --noask $poldek_options"
+  cmd="$cmd --st dir -s $REPO --dt dir --destination $DESTINATION_REPO"
+  cmd="$cmd -uvt $package"
+
   if is_verbose_mode; then
+      echo $cmd  
       $cmd || fail "'poldek -uvt a' failed"
   else
       $cmd >/dev/null 2>&1 || fail "'poldek -uvt a' failed"
@@ -65,9 +90,12 @@
   assertEquals "not all or non expected packages installed (expected $expected)" "$n" "$n_expected"
 }
 
+try_install_a() {
+    try_install "a" $@
+}
+
 # 'c' has unmet requirement
-testChooseTheRightAlternative_1() 
-{
+testChooseTheRightAlternative_1() {
   build a -r "CAP"
   build c -p "CAP" -r "unmetreq"
   build d -p "CAP"      
@@ -75,8 +103,7 @@
 }
 
 # 'd' should be choosen instead of non-resolvable 'c'
-testChooseTheRightAlternative_2() 
-{
+testChooseTheRightAlternative_2() {
   build a -r "b"
   build b -r "CAP"
   build c -p "CAP" -r "unmetreq"
@@ -84,8 +111,20 @@
   try_install_a "a,b,d"  
 }
 
-# first, but wrong resolved set is: a,b,c,e,g   
+# as above, but 'c' has more (solvable) requirements    
 testChooseTheRightAlternative_3() {
+  build a -r "b"
+  build b -r "CAP" 
+  build c -p "CAP" -r "foo" -r "bar" -r "unmetreq" -r "zfoo"
+  build d -p "CAP"      
+  build foo
+  build bar  
+  build zfoo
+  try_install_a "a,b,d"  
+}
+
+# first, but wrong resolved set is: a,b,c,e,g   
+testChooseTheRightAlternative_4() {
   build a  -r "b"  
   build b  -r "CAP"
 
@@ -101,6 +140,7 @@
   try_install_a "a,b,d,f,h"
 }
 
+
 # package 'x' provides all 'a' requirements
 testChooseMoreAccuratePackage() {
   build a -r "b" -r "c" -r "d" -r "x"
@@ -129,4 +169,66 @@
   try_install_a "a,b\-1"
 }
 
+testSuggests() {
+    build_installed suggested
+    build a -s "suggested" -s "b" -s "c"
+    build b
+    build c
+    POLDEK_TESTING_WITH_SUGGESTS="all" # choose all suggested packages
+    export POLDEK_TESTING_WITH_SUGGESTS
+    try_install_a "a,b,c" 
+
+    POLDEK_TESTING_WITH_SUGGESTS="2" # choose b only (1st installable suggested package)
+    try_install_a "a,b" 
+    POLDEK_TESTING_WITH_SUGGESTS=
+}
+
+testUpgradeSet() {
+    prev_i=
+    for i in b c d e f a; do 
+        build_installed $i 1-1
+        if [ -z "$prev_i" ]; then
+           build_installed $i 1-1
+           build $i 2-2
+        else
+           build_installed $i 1-1 -r "'$prev_i = 1-1'"
+           build $i 2-2 -r "'$prev_i = 2-2'"
+        fi
+        prev_i=$i
+    done    
+        
+    try_install_a "a,b,c,d,e,f" 
+}
+
+# all 'a*' must be upgraded at once
+testUpgradeGreedy() {
+    for i in "1-1" "2-2"; do
+        build a $i
+        build a-devel $i -r "'a = $i'"
+        build a-static $i -r "'a-devel = $i'"
+    done    
+    mv $REPO/a*1-1*.rpm $DESTINATION_REPO || fail "mv failed"
+    try_install a "a,a-devel,a-static"
+    try_install a-devel "a,a-devel,a-static"
+    try_install a-static "a,a-devel,a-static"
+}
+
+# bar obsoletes foo
+testUpgradeObsolete() {
+    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'"
+    build_installed foo 1-1 -r "'a = 1-1'" -p "FOO" -o "FOO"
+
+    build a 2-2
+    build a-devel 2-2 -r "'a = 2-2'"
+    build a-static 2-2 -r "'a-devel = 2-2'"
+    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 bar "a,a-devel,a-static,bar"
+}
+
 . ./sh/lib/shunit2
\ No newline at end of file
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/tests/build-test-rpm.sh?r1=1.8&r2=1.9&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/tests/sh/07-depsolver?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list