hush: add function tests
This commit is contained in:
parent
6ba6f546ac
commit
ce4acbbab6
38
shell/hush.c
38
shell/hush.c
@ -5,7 +5,7 @@
|
||||
* "small and simple is beautiful" philosophy, which
|
||||
* incidentally is a good match to today's BusyBox.
|
||||
*
|
||||
* Copyright (C) 2000,2001 Larry Doolittle <larry@doolittle.boa.org>
|
||||
* Copyright (C) 2000,2001 Larry Doolittle <larry@doolittle.boa.org>
|
||||
* Copyright (C) 2008,2009 Denys Vlasenko <vda.linux@googlemail.com>
|
||||
*
|
||||
* Credits:
|
||||
@ -68,7 +68,7 @@
|
||||
#include <glob.h>
|
||||
/* #include <dmalloc.h> */
|
||||
#if ENABLE_HUSH_CASE
|
||||
#include <fnmatch.h>
|
||||
# include <fnmatch.h>
|
||||
#endif
|
||||
#include "math.h"
|
||||
#include "match.h"
|
||||
@ -100,31 +100,31 @@
|
||||
|
||||
#if defined SINGLE_APPLET_MAIN
|
||||
/* STANDALONE does not make sense, and won't compile */
|
||||
#undef CONFIG_FEATURE_SH_STANDALONE
|
||||
#undef ENABLE_FEATURE_SH_STANDALONE
|
||||
#undef USE_FEATURE_SH_STANDALONE
|
||||
#define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||
#define ENABLE_FEATURE_SH_STANDALONE 0
|
||||
#define USE_FEATURE_SH_STANDALONE(...)
|
||||
#define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||
# undef CONFIG_FEATURE_SH_STANDALONE
|
||||
# undef ENABLE_FEATURE_SH_STANDALONE
|
||||
# undef USE_FEATURE_SH_STANDALONE
|
||||
# define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||
# define ENABLE_FEATURE_SH_STANDALONE 0
|
||||
# define USE_FEATURE_SH_STANDALONE(...)
|
||||
# define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||
#endif
|
||||
|
||||
#if !ENABLE_HUSH_INTERACTIVE
|
||||
#undef ENABLE_FEATURE_EDITING
|
||||
#define ENABLE_FEATURE_EDITING 0
|
||||
#undef ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
#define ENABLE_FEATURE_EDITING_FANCY_PROMPT 0
|
||||
# undef ENABLE_FEATURE_EDITING
|
||||
# define ENABLE_FEATURE_EDITING 0
|
||||
# undef ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||
# define ENABLE_FEATURE_EDITING_FANCY_PROMPT 0
|
||||
#endif
|
||||
|
||||
/* Do we support ANY keywords? */
|
||||
#if ENABLE_HUSH_IF || ENABLE_HUSH_LOOPS || ENABLE_HUSH_CASE
|
||||
#define HAS_KEYWORDS 1
|
||||
#define IF_HAS_KEYWORDS(...) __VA_ARGS__
|
||||
#define IF_HAS_NO_KEYWORDS(...)
|
||||
# define HAS_KEYWORDS 1
|
||||
# define IF_HAS_KEYWORDS(...) __VA_ARGS__
|
||||
# define IF_HAS_NO_KEYWORDS(...)
|
||||
#else
|
||||
#define HAS_KEYWORDS 0
|
||||
#define IF_HAS_KEYWORDS(...)
|
||||
#define IF_HAS_NO_KEYWORDS(...) __VA_ARGS__
|
||||
# define HAS_KEYWORDS 0
|
||||
# define IF_HAS_KEYWORDS(...)
|
||||
# define IF_HAS_NO_KEYWORDS(...) __VA_ARGS__
|
||||
#endif
|
||||
|
||||
/* If you comment out one of these below, it will be #defined later
|
||||
|
6
shell/hush_test/hush-misc/func1.right
Normal file
6
shell/hush_test/hush-misc/func1.right
Normal file
@ -0,0 +1,6 @@
|
||||
Hello
|
||||
Zero: 0
|
||||
One: 1 Param1: World
|
||||
Zero: 0 Param1: Restored
|
||||
Multi line function
|
||||
One: 1
|
16
shell/hush_test/hush-misc/func1.tests
Executable file
16
shell/hush_test/hush-misc/func1.tests
Executable file
@ -0,0 +1,16 @@
|
||||
f() { echo Hello; }
|
||||
g () { echo One: $# Param1: $1; }
|
||||
h ( )
|
||||
{
|
||||
echo -n 'Multi ' && echo -n 'line '
|
||||
echo function
|
||||
false
|
||||
}
|
||||
|
||||
f
|
||||
echo Zero: $?
|
||||
set -- Restored
|
||||
{ g World; }
|
||||
echo Zero: $? Param1: $1
|
||||
( h )
|
||||
echo One: $?
|
5
shell/hush_test/hush-misc/func2.right
Normal file
5
shell/hush_test/hush-misc/func2.right
Normal file
@ -0,0 +1,5 @@
|
||||
First 0
|
||||
Second 0
|
||||
First 1
|
||||
Second 1
|
||||
Done
|
9
shell/hush_test/hush-misc/func2.tests
Executable file
9
shell/hush_test/hush-misc/func2.tests
Executable file
@ -0,0 +1,9 @@
|
||||
i=0
|
||||
while test $i != 2; do
|
||||
f() { echo First $i; }
|
||||
f
|
||||
f() { echo Second $i; }
|
||||
f
|
||||
: $((i++))
|
||||
done
|
||||
echo Done
|
@ -27,6 +27,8 @@ HERE
|
||||
{ : /bin/*; }
|
||||
set -- par1_$i par2_$i par3_$i par4_$i
|
||||
trap "echo trap$i" WINCH
|
||||
f() { echo $1; }
|
||||
f >/dev/null
|
||||
: $((i++))
|
||||
done
|
||||
|
||||
@ -55,6 +57,8 @@ HERE
|
||||
{ : /bin/*; }
|
||||
set -- par1_$i par2_$i par3_$i par4_$i
|
||||
trap "echo trap$i" WINCH
|
||||
f() { echo $1; }
|
||||
f >/dev/null
|
||||
: $((i++))
|
||||
done
|
||||
|
||||
|
@ -27,6 +27,8 @@ HERE
|
||||
} 1<>/dev/null
|
||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
||||
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||
f() { echo $1; }
|
||||
f >/dev/null
|
||||
|
||||
memleak
|
||||
|
||||
@ -53,6 +55,8 @@ HERE
|
||||
} 1<>/dev/null
|
||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
||||
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||
f() { echo $1; }
|
||||
f >/dev/null
|
||||
|
||||
# And same again
|
||||
|
||||
@ -77,6 +81,8 @@ HERE
|
||||
} 1<>/dev/null
|
||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
||||
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||
f() { echo $1; }
|
||||
f >/dev/null
|
||||
|
||||
memleak
|
||||
kb=$?
|
||||
|
Loading…
Reference in New Issue
Block a user