Magellan Linux

Diff of /tags/grubby-8_34/test.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/mkinitrd-magellan/grubby/test.sh revision 1308 by niro, Fri May 27 17:35:32 2011 UTC trunk/grubby/test.sh revision 2687 by niro, Wed Jul 16 10:41:38 2014 UTC
# Line 48  oneTest() { Line 48  oneTest() {
48      typeset mode=$1 cfg=test/$2 correct=test/results/$3      typeset mode=$1 cfg=test/$2 correct=test/results/$3
49      shift 3      shift 3
50    
51        local ENV_FILE=""
52        if [ "$mode" == "--grub2" ]; then
53            ENV_FILE="test/grub2-support_files/env_temp"
54            if [ "$1" == "--env" ]; then
55                cp "test/grub2-support_files/$2" "$ENV_FILE"
56                shift 2
57            else
58                cp "test/grub2-support_files/grubenv.0" "$ENV_FILE"
59            fi
60            ENV_FILE="--env=$ENV_FILE"
61        fi
62    
63    
64      echo "$testing ... $mode $cfg $correct"      echo "$testing ... $mode $cfg $correct"
65      runme=( ./grubby "$mode" --bad-image-okay -c "$cfg" -o - "$@" )      runme=( ./grubby "$mode" --bad-image-okay $ENV_FILE -c "$cfg" -o - "$@" )
66      if "${runme[@]}" | cmp "$correct" > /dev/null; then      if "${runme[@]}" | cmp "$correct" > /dev/null; then
67   (( pass++ ))   (( pass++ ))
68   if $opt_verbose; then   if $opt_verbose; then
# Line 69  oneTest() { Line 82  oneTest() {
82      fi      fi
83  }  }
84    
85    # Test feature that display some information, checking that output instead of
86    # the generated configuration file
87    oneDisplayTest() {
88        typeset mode=$1 cfg=test/$2 correct=test/results/$3
89        shift 3
90    
91        local ENV_FILE=""
92        if [ "$mode" == "--grub2" ]; then
93            ENV_FILE="test/grub2-support_files/env_temp"
94            if [ "$1" == "--env" ]; then
95                cp "test/grub2-support_files/$2" "$ENV_FILE"
96                shift 2
97            else
98                cp "test/grub2-support_files/grubenv.0" "$ENV_FILE"
99            fi
100            ENV_FILE="--env=$ENV_FILE"
101        fi
102    
103        local BIO="--bad-image-okay"
104        if [ "$1" == "--bad-image-bad" ]; then
105            BIO=""
106            shift
107        fi
108    
109        echo "$testing ... $mode $cfg $correct"
110        runme=( ./grubby "$mode" $BIO $ENV_FILE -c "$cfg" "$@" )
111        if "${runme[@]}" 2>&1 | cmp "$correct" > /dev/null; then
112     (( pass++ ))
113     if $opt_verbose; then
114        echo -------------------------------------------------------------
115        echo -n "PASS: "
116        printf "%q " "${runme[@]}"; echo
117        "${runme[@]}" 2>&1 | diff -U30 "$cfg" -
118        echo
119     fi
120        else
121     (( fail++ ))
122     echo -------------------------------------------------------------
123     echo -n "FAIL: "
124     printf "%q " "${runme[@]}"; echo
125     "${runme[@]}" 2>&1 | diff -U30 "$correct" -
126     echo
127        fi
128    }
129    
130    commandTest() {
131        description=$1
132        cmd0=$2
133        text1=$3
134        shift 3
135        echo "$description"
136        output0=$(mktemp)
137    
138        $cmd0 > $output0
139    
140        if echo $text1 | cmp $output0 - >/dev/null; then
141     (( pass++))
142     if $opt_verbose; then
143        echo -------------------------------------------------------------
144        echo -n "PASS: "
145        printf "%q " "\"$cmd0\""; echo
146        echo $text1 | diff -U30 $output0 -
147        echo
148     fi
149        else
150     (( fail++ ))
151     echo -------------------------------------------------------------
152     echo -n "FAIL: "
153     printf "%q " "\"$cmd0\""; echo
154     echo $text1 | diff -U30 $output0 -
155     echo
156        fi
157    }
158    
159  # generate convenience functions  # generate convenience functions
160  for b in $(./grubby --help | \  for b in $(./grubby --help | \
161   sed -n 's/^.*--\([^ ]*\) *configure \1 bootloader$/\1/p'); do   sed -n 's/^.*--\([^ ]*\) *configure \1 bootloader$/\1/p'); do
162      eval "${b}Test() { [[ \"$b\" == \$opt_bootloader ]] && oneTest --$b \"\$@\"; }"      eval "${b}Test() { [[ \"$b\" == \$opt_bootloader ]] && oneTest --$b \"\$@\"; }"
163        eval "${b}DisplayTest() { [[ \"$b\" == \$opt_bootloader ]] && oneDisplayTest --$b \"\$@\"; }"
164  done  done
165    
166  #----------------------------------------------------------------------  #----------------------------------------------------------------------
# Line 93  while true; do Line 181  while true; do
181  done  done
182    
183  export MALLOC_CHECK_=2  export MALLOC_CHECK_=2
184    if [ -n "${RANDOM}" ]; then
185        export MALLOC_PERTURB_=$(($RANDOM % 255 + 1))
186    else
187        export MALLOC_PERTURB_=1
188    fi
189    
190  testing="Parse/write comparison"  testing="Parse/write comparison"
191  for n in test/*.[0-9]*; do  for n in test/*.[0-9]*; do
192        [ -d $n ] && continue
193      n=${n#*/} # remove test/      n=${n#*/} # remove test/
194      b=${n%.*} # remove suffix      b=${n%.*} # remove suffix
195      [[ $b == $opt_bootloader ]] || continue      [[ $b == $opt_bootloader ]] || continue
# Line 170  grubTest grub.4 default/g4.1 --boot-file Line 264  grubTest grub.4 default/g4.1 --boot-file
264  grubTest grub.4 default/g4.2 --boot-filesystem=/ --set-default=/boot/vmlinuz-2.4.7-ac3 --remove-kernel /boot/vmlinuz-2.4.7-2.5 --add-kernel=/boot/new-kernel --copy-default --title New_Title  grubTest grub.4 default/g4.2 --boot-filesystem=/ --set-default=/boot/vmlinuz-2.4.7-ac3 --remove-kernel /boot/vmlinuz-2.4.7-2.5 --add-kernel=/boot/new-kernel --copy-default --title New_Title
265  grubTest grub.6 default/g6.1 --remove-kernel=/boot/vmlinuz-2.4.7-2.9 --boot-filesystem=/  grubTest grub.6 default/g6.1 --remove-kernel=/boot/vmlinuz-2.4.7-2.9 --boot-filesystem=/
266    
267    testing="GRUB default index directive"
268    grubTest grub.13 setdefaultindex/g.13.0 --set-default-index=0
269    grubTest grub.13 setdefaultindex/g.13.1 --set-default-index=1
270    grubTest grub.13 setdefaultindex/g.13.9 --set-default-index=9
271    
272    testing="GRUB display default index"
273    grubDisplayTest grub.1 defaultindex/0 --default-index
274    grubDisplayTest grub.2 defaultindex/0 --default-index
275    grubDisplayTest grub.3 defaultindex/0 --default-index
276    grubDisplayTest grub.4 defaultindex/0 --default-index
277    grubDisplayTest grub.5 defaultindex/0 --default-index
278    grubDisplayTest grub.6 defaultindex/2 --default-index
279    grubDisplayTest grub.7 defaultindex/2 --default-index
280    grubDisplayTest grub.8 defaultindex/0 --default-index
281    grubDisplayTest grub.9 defaultindex/0 --default-index
282    grubDisplayTest grub.10 defaultindex/0 --default-index
283    grubDisplayTest grub.10 defaultindex/0 --default-index
284    
285    testing="GRUB display default title"
286    grubDisplayTest grub.1 defaulttitle/g.1 --default-title
287    grubDisplayTest grub.2 defaulttitle/g.2 --default-title
288    grubDisplayTest grub.3 defaulttitle/g.3 --default-title
289    grubDisplayTest grub.4 defaulttitle/g.4 --default-title
290    grubDisplayTest grub.5 defaulttitle/g.5 --default-title
291    grubDisplayTest grub.6 defaulttitle/g.6 --default-title
292    grubDisplayTest grub.7 defaulttitle/g.7 --default-title
293    grubDisplayTest grub.8 defaulttitle/g.8 --default-title
294    grubDisplayTest grub.9 defaulttitle/g.9 --default-title
295    grubDisplayTest grub.10 defaulttitle/g.10 --default-title
296    grubDisplayTest grub.11 defaulttitle/g.11 --default-title
297    
298  testing="LILO default directive"  testing="LILO default directive"
299  liloTest lilo.1 default/l1.1 --set-default=/boot/vmlinuz-2.4.18-4  liloTest lilo.1 default/l1.1 --set-default=/boot/vmlinuz-2.4.18-4
300  liloTest lilo.1 default/l1.2 --remove-kernel=/boot/vmlinuz-2.4.18-4smp  liloTest lilo.1 default/l1.2 --remove-kernel=/boot/vmlinuz-2.4.18-4smp
# Line 246  grubTest grub.11 updargs/g11.2 --boot-fi Line 371  grubTest grub.11 updargs/g11.2 --boot-fi
371      --update-kernel=/vmlinuz-2.4.7-2smp \      --update-kernel=/vmlinuz-2.4.7-2smp \
372      --args "ro root=LABEL=/ single"      --args "ro root=LABEL=/ single"
373    
374    testing="GRUB lba and root information on SuSE systems"
375    GRUBBY_SUSE_RELEASE=test/grub.12-support_files/etc/SuSE-release \
376        GRUBBY_SUSE_GRUB_CONF=test/grub.12-support_files/etc/grub.conf \
377        GRUBBY_GRUB_DEVICE_MAP=test/grub.12-support_files/boot/grub/device.map \
378        grubTest grub.12 info/g12.1 --info=0
379    
380  testing="LILO update kernel argument handling"  testing="LILO update kernel argument handling"
381  liloTest lilo.1 updargs/l1.1 --update-kernel=/boot/vmlinuz-2.4.18-4 \  liloTest lilo.1 updargs/l1.1 --update-kernel=/boot/vmlinuz-2.4.18-4 \
382      --args="root=/dev/md1"      --args="root=/dev/md1"
# Line 301  grubTest grub.11 add/g11.1 --add-kernel= Line 432  grubTest grub.11 add/g11.1 --add-kernel=
432      --initrd=/boot/new-initrd --boot-filesystem=/boot --copy-default \      --initrd=/boot/new-initrd --boot-filesystem=/boot --copy-default \
433      --args='console=tty0 console=ttyS1,9600n81 single'      --args='console=tty0 console=ttyS1,9600n81 single'
434    
435    testgrub2=n
436    ARCH=$(uname -m | sed s,i[3456789]86,ia32,)
437    case $ARCH in
438        aarch64|ppc|ppc64|ia32|x86_64) testgrub2=y ;;
439    esac
440    
441    if [ "$testgrub2" == "y" ]; then
442        testing="GRUB2 add kernel"
443        grub2Test grub2.1 add/g2-1.1 --add-kernel=/boot/new-kernel.img \
444            --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
445            --copy-default
446        case $ARCH in
447            aarch64)
448                grub2Test grub2.1 add/g2-1.1 --add-kernel=/boot/new-kernel.img \
449                    --title='title' \
450                    --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
451                    --copy-default --efi
452                ;;
453            *)
454                grub2Test grub2.1 add/g2-1.6 --add-kernel=/boot/new-kernel.img \
455                    --title='title' \
456                    --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
457                    --copy-default --efi
458                ;;
459        esac
460        grub2Test grub2.6 add/g2-1.7 --add-kernel=/boot/new-kernel.img \
461            --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
462            --copy-default --efi
463        grub2Test grub2.1 add/g2-1.2 --add-kernel=/boot/new-kernel.img \
464            --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
465            --copy-default --make-default
466        grub2Test grub2.1 add/g2-1.3 --add-kernel=/boot/new-kernel.img \
467            --title='title' --boot-filesystem=/boot/ --copy-default --make-default
468        grub2Test grub2.1 remove/g2-1.4 \
469            --remove-kernel=/boot/vmlinuz-2.6.38.2-9.fc15.x86_64 \
470            --boot-filesystem=/boot/
471        grub2Test grub2.5 add/g2-1.5 --add-kernel=/boot/new-kernel.img \
472            --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
473            --copy-default
474        grub2Test grub2.12 add/g2-1.12 \
475            --add-kernel=/boot/vmlinuz-2.6.38.8-32.fc15.x86_64 \
476            --title='Linux, with Fedora 2.6.38.8-32.fc15.x86_64' \
477            --devtree='/boot/dtb-2.6.38.8-32.fc15.x86_64/foobarbaz.dtb' \
478            --initrd=/boot/initramfs-2.6.38.8-32.fc15.x86_64.img \
479            --boot-filesystem=/boot/ --copy-default --efi
480        grub2Test grub2.13 add/g2-1.13 \
481            --add-kernel=/boot/vmlinuz-2.6.38.8-32.fc15.x86_64 \
482            --title='Linux, with Fedora 2.6.38.8-32.fc15.x86_64' \
483            --devtree='/boot/dtb-2.6.38.8-32.fc15.x86_64/foobarbaz.dtb' \
484            --initrd=/boot/initramfs-2.6.38.8-32.fc15.x86_64.img \
485            --boot-filesystem=/boot/ --copy-default --efi
486    
487        testing="GRUB2 add initrd"
488        grub2Test grub2.2 add/g2-1.4 --update-kernel=/boot/new-kernel.img \
489            --initrd=/boot/new-initrd --boot-filesystem=/boot/
490    
491        testing="GRUB2 display default index"
492        grub2DisplayTest grub2.1 defaultindex/0 --default-index
493        grub2DisplayTest grub2.2 defaultindex/0 --default-index
494    
495        testing="GRUB2 display default title"
496        grub2DisplayTest grub2.1 defaulttitle/g2.1 --default-title
497        grub2DisplayTest grub2.2 defaulttitle/g2.2 --default-title
498    
499        testing="GRUB2 display debug failure"
500        grub2DisplayTest grub2.1 debug/g2.1 --bad-image-bad \
501            --boot-filesystem=/boot --default-kernel --debug
502        testing="GRUB2 display debug success"
503        grub2DisplayTest grub2.1 debug/g2.1.2 --boot-filesystem=/boot \
504            --default-kernel --debug
505    
506        testing="GRUB2 remove kernel via index"
507        grub2Test grub2.3 remove/g2-1.1 --remove-kernel=1
508    
509        testing="GRUB2 remove kernel via title"
510        grub2Test grub2.3 remove/g2-1.1 --remove-kernel="TITLE=title2"
511    
512        testing="GRUB2 (submenu) remove kernel via index"
513        grub2Test grub2.4 remove/g2-1.2 --remove-kernel=2
514    
515        testing="GRUB2 (submenu) remove kernel via title"
516        grub2Test grub2.4 remove/g2-1.2 --remove-kernel="TITLE=title2"
517    
518        testing="GRUB2 default index directive"
519        grub2Test grub2.1 setdefaultindex/g2.1.0 --set-default-index=0
520        grub2Test grub2.1 setdefaultindex/g2.1.1 --set-default-index=1
521        grub2Test grub2.1 setdefaultindex/g2.1.9 --set-default-index=9
522    
523        testing="GRUB2 add kernel with default=saved_entry"
524        grub2Test grub2.7 add/g2-1.8 --env grubenv.1 \
525            --add-kernel=/boot/new-kernel.img \
526            --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
527            --copy-default
528        commandTest "saved_default output" \
529            "grub2-editenv test/grub2-support_files/env_temp list" \
530            "saved_entry=Linux, with Fedora 2.6.38.8-32.fc15.x86_64"
531    
532        testing="GRUB2 add kernel with default=saved_entry and a terrible title"
533        grub2Test grub2.7 add/g2-1.9 --env grubenv.1 \
534            --add-kernel=/boot/new-kernel.img \
535            --title='Fedora (3.10.3-300.fc19.x86_64) 19 (Schrödinger’s Cat)' \
536            --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
537            --copy-default
538    
539        testing="GRUB2 set default with default=saved_entry and a terrible name"
540        grub2Test grub2.9 add/g2-1.9 --env grubenv.1 --set-default-index=0
541        commandTest "saved_default output" \
542            "grub2-editenv test/grub2-support_files/env_temp list" \
543            'saved_entry=Fedora (3.10.3-300.fc19.x86_64) 19 (Schrödinger’s Cat)'
544    
545        testing="GRUB2 set default with default=saved_entry"
546        grub2Test grub2.8 add/g2-1.8 --env grubenv.1 --set-default-index=0
547        commandTest "saved_default output" \
548            "grub2-editenv test/grub2-support_files/env_temp list" \
549            "saved_entry=title"
550    
551        testing="GRUB2 --default-index with default=saved_entry"
552        grub2DisplayTest grub2.8 defaultindex/1 --env grubenv.1 --default-index
553    
554        testing="GRUB2 --default-index with default=saved_entry"
555        grub2DisplayTest grub2.8 defaultindex/0 --env grubenv.2 --default-index
556    
557        testing="GRUB2 --default-title with default=saved_entry"
558        grub2DisplayTest grub2.8 defaulttitle/g2.1 --env grubenv.1 --default-title
559    
560        testing="GRUB2 --default-index with default=saved_entry and empty grubenv"
561        grub2DisplayTest grub2.8 defaultindex/0 --env grubenv.0 --default-index
562    
563        testlinux16=n
564        case $ARCH in
565            ia32|x86_64) testlinux16=y ;;
566        esac
567    
568        if [ "$testlinux16" == "y" ]; then
569            testing="GRUB2 add kernel with linux16"
570            grub2Test grub2.10 add/g2-1.10 --add-kernel=/boot/new-kernel.img \
571                --title='title' --initrd=/boot/new-initrd --boot-filesystem=/boot/ \
572                --copy-default
573    
574            testing="GRUB2 add initrd with linux16"
575            grub2Test grub2.11 add/g2-1.11 --update-kernel=/boot/new-kernel.img \
576                --initrd=/boot/new-initrd --boot-filesystem=/boot/
577        fi
578    fi
579    
580  testing="YABOOT add kernel"  testing="YABOOT add kernel"
581  yabootTest yaboot.1 add/y1.1 --copy-default --boot-filesystem=/ --add-kernel=/boot/new-kernel  \  yabootTest yaboot.1 add/y1.1 --copy-default --boot-filesystem=/ --add-kernel=/boot/new-kernel  \
582      --title=newtitle      --title=newtitle

Legend:
Removed from v.1308  
changed lines
  Added in v.2687