Magellan Linux

Annotation of /trunk/mkinitrd-magellan/busybox/testsuite/testing.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 816 - (hide annotations) (download) (as text)
Fri Apr 24 18:33:46 2009 UTC (15 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 3649 byte(s)
-updated to busybox-1.13.4
1 niro 532 # Simple test harness infrastructurei for BusyBox
2     #
3     # Copyright 2005 by Rob Landley
4     #
5     # License is GPLv2, see LICENSE in the busybox tarball for full license text.
6    
7 niro 816 # This file defines two functions, "testing" and "optional"
8     # and a couple more...
9 niro 532
10     # The following environment variables may be set to enable optional behavior
11     # in "testing":
12     # VERBOSE - Print the diff -u of each failed test case.
13     # DEBUG - Enable command tracing.
14 niro 816 # SKIP - do not perform this test (this is set by "optional")
15 niro 532 #
16     # The "testing" function takes five arguments:
17 niro 816 # $1) Test description
18     # $2) Command(s) to run. May have pipes, redirects, etc
19     # $3) Expected result on stdout
20     # $4) Data to be written to file "input"
21     # $5) Data to be written to stdin
22 niro 532 #
23 niro 816 # The exit value of testing is the exit value of $2 it ran.
24 niro 532 #
25     # The environment variable "FAILCOUNT" contains a cumulative total of the
26     # number of failed tests.
27    
28     # The "optional" function is used to skip certain tests, ala:
29 niro 816 # optional CONFIG_FEATURE_THINGY
30 niro 532 #
31     # The "optional" function checks the environment variable "OPTIONFLAGS",
32     # which is either empty (in which case it always clears SKIP) or
33     # else contains a colon-separated list of features (in which case the function
34     # clears SKIP if the flag was found, or sets it to 1 if the flag was not found).
35    
36     export FAILCOUNT=0
37     export SKIP=
38    
39     # Helper functions
40    
41     optional()
42     {
43 niro 816 option=`echo ":$OPTIONFLAGS:" | grep ":$1:"`
44 niro 532 # Not set?
45     if [ -z "$1" ] || [ -z "$OPTIONFLAGS" ] || [ ${#option} -ne 0 ]
46     then
47 niro 816 SKIP=
48 niro 532 return
49     fi
50     SKIP=1
51     }
52    
53     # The testing function
54    
55 niro 816 testing()
56 niro 532 {
57     NAME="$1"
58 niro 816 [ -n "$1" ] || NAME="$2"
59 niro 532
60     if [ $# -ne 5 ]
61     then
62 niro 816 echo "Test $NAME has wrong number of arguments (must be 5) ($# $*)" >&2
63     exit 1
64 niro 532 fi
65    
66 niro 816 [ -z "$DEBUG" ] || set -x
67 niro 532
68     if [ -n "$SKIP" ]
69     then
70     echo "SKIPPED: $NAME"
71     return 0
72     fi
73    
74 niro 816 $ECHO -ne "$3" > expected
75     $ECHO -ne "$4" > input
76 niro 532 [ -z "$VERBOSE" ] || echo "echo '$5' | $2"
77 niro 816 $ECHO -ne "$5" | eval "$2" > actual
78 niro 532 RETVAL=$?
79    
80 niro 816 if cmp expected actual >/dev/null 2>/dev/null
81 niro 532 then
82 niro 816 echo "PASS: $NAME"
83     else
84     FAILCOUNT=$(($FAILCOUNT + 1))
85 niro 532 echo "FAIL: $NAME"
86 niro 816 [ -z "$VERBOSE" ] || diff -u expected actual
87 niro 532 fi
88     rm -f input expected actual
89    
90 niro 816 [ -z "$DEBUG" ] || set +x
91 niro 532
92     return $RETVAL
93     }
94    
95     # Recursively grab an executable and all the libraries needed to run it.
96     # Source paths beginning with / will be copied into destpath, otherwise
97     # the file is assumed to already be there and only its library dependencies
98     # are copied.
99    
100 niro 816 mkchroot()
101 niro 532 {
102     [ $# -lt 2 ] && return
103    
104 niro 816 $ECHO -n .
105 niro 532
106     dest=$1
107     shift
108     for i in "$@"
109     do
110 niro 816 #bashism: [ "${i:0:1}" == "/" ] || i=$(which $i)
111     i=$(which $i) # no-op for /bin/prog
112 niro 532 [ -f "$dest/$i" ] && continue
113     if [ -e "$i" ]
114     then
115     d=`echo "$i" | grep -o '.*/'` &&
116     mkdir -p "$dest/$d" &&
117     cat "$i" > "$dest/$i" &&
118     chmod +x "$dest/$i"
119     else
120     echo "Not found: $i"
121     fi
122     mkchroot "$dest" $(ldd "$i" | egrep -o '/.* ')
123     done
124     }
125    
126     # Set up a chroot environment and run commands within it.
127     # Needed commands listed on command line
128     # Script fed to stdin.
129    
130 niro 816 dochroot()
131 niro 532 {
132     mkdir tmpdir4chroot
133     mount -t ramfs tmpdir4chroot tmpdir4chroot
134     mkdir -p tmpdir4chroot/{etc,sys,proc,tmp,dev}
135     cp -L testing.sh tmpdir4chroot
136    
137     # Copy utilities from command line arguments
138    
139 niro 816 $ECHO -n "Setup chroot"
140 niro 532 mkchroot tmpdir4chroot $*
141     echo
142    
143     mknod tmpdir4chroot/dev/tty c 5 0
144     mknod tmpdir4chroot/dev/null c 1 3
145     mknod tmpdir4chroot/dev/zero c 1 5
146    
147     # Copy script from stdin
148    
149     cat > tmpdir4chroot/test.sh
150     chmod +x tmpdir4chroot/test.sh
151     chroot tmpdir4chroot /test.sh
152     umount -l tmpdir4chroot
153     rmdir tmpdir4chroot
154     }

Properties

Name Value
svn:executable *