hush: add function tests
This commit is contained in:
parent
6ba6f546ac
commit
ce4acbbab6
36
shell/hush.c
36
shell/hush.c
@ -68,7 +68,7 @@
|
|||||||
#include <glob.h>
|
#include <glob.h>
|
||||||
/* #include <dmalloc.h> */
|
/* #include <dmalloc.h> */
|
||||||
#if ENABLE_HUSH_CASE
|
#if ENABLE_HUSH_CASE
|
||||||
#include <fnmatch.h>
|
# include <fnmatch.h>
|
||||||
#endif
|
#endif
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "match.h"
|
#include "match.h"
|
||||||
@ -100,31 +100,31 @@
|
|||||||
|
|
||||||
#if defined SINGLE_APPLET_MAIN
|
#if defined SINGLE_APPLET_MAIN
|
||||||
/* STANDALONE does not make sense, and won't compile */
|
/* STANDALONE does not make sense, and won't compile */
|
||||||
#undef CONFIG_FEATURE_SH_STANDALONE
|
# undef CONFIG_FEATURE_SH_STANDALONE
|
||||||
#undef ENABLE_FEATURE_SH_STANDALONE
|
# undef ENABLE_FEATURE_SH_STANDALONE
|
||||||
#undef USE_FEATURE_SH_STANDALONE
|
# undef USE_FEATURE_SH_STANDALONE
|
||||||
#define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
# define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||||
#define ENABLE_FEATURE_SH_STANDALONE 0
|
# define ENABLE_FEATURE_SH_STANDALONE 0
|
||||||
#define USE_FEATURE_SH_STANDALONE(...)
|
# define USE_FEATURE_SH_STANDALONE(...)
|
||||||
#define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
# define SKIP_FEATURE_SH_STANDALONE(...) __VA_ARGS__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !ENABLE_HUSH_INTERACTIVE
|
#if !ENABLE_HUSH_INTERACTIVE
|
||||||
#undef ENABLE_FEATURE_EDITING
|
# undef ENABLE_FEATURE_EDITING
|
||||||
#define ENABLE_FEATURE_EDITING 0
|
# define ENABLE_FEATURE_EDITING 0
|
||||||
#undef ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
# undef ENABLE_FEATURE_EDITING_FANCY_PROMPT
|
||||||
#define ENABLE_FEATURE_EDITING_FANCY_PROMPT 0
|
# define ENABLE_FEATURE_EDITING_FANCY_PROMPT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Do we support ANY keywords? */
|
/* Do we support ANY keywords? */
|
||||||
#if ENABLE_HUSH_IF || ENABLE_HUSH_LOOPS || ENABLE_HUSH_CASE
|
#if ENABLE_HUSH_IF || ENABLE_HUSH_LOOPS || ENABLE_HUSH_CASE
|
||||||
#define HAS_KEYWORDS 1
|
# define HAS_KEYWORDS 1
|
||||||
#define IF_HAS_KEYWORDS(...) __VA_ARGS__
|
# define IF_HAS_KEYWORDS(...) __VA_ARGS__
|
||||||
#define IF_HAS_NO_KEYWORDS(...)
|
# define IF_HAS_NO_KEYWORDS(...)
|
||||||
#else
|
#else
|
||||||
#define HAS_KEYWORDS 0
|
# define HAS_KEYWORDS 0
|
||||||
#define IF_HAS_KEYWORDS(...)
|
# define IF_HAS_KEYWORDS(...)
|
||||||
#define IF_HAS_NO_KEYWORDS(...) __VA_ARGS__
|
# define IF_HAS_NO_KEYWORDS(...) __VA_ARGS__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If you comment out one of these below, it will be #defined later
|
/* 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/*; }
|
{ : /bin/*; }
|
||||||
set -- par1_$i par2_$i par3_$i par4_$i
|
set -- par1_$i par2_$i par3_$i par4_$i
|
||||||
trap "echo trap$i" WINCH
|
trap "echo trap$i" WINCH
|
||||||
|
f() { echo $1; }
|
||||||
|
f >/dev/null
|
||||||
: $((i++))
|
: $((i++))
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -55,6 +57,8 @@ HERE
|
|||||||
{ : /bin/*; }
|
{ : /bin/*; }
|
||||||
set -- par1_$i par2_$i par3_$i par4_$i
|
set -- par1_$i par2_$i par3_$i par4_$i
|
||||||
trap "echo trap$i" WINCH
|
trap "echo trap$i" WINCH
|
||||||
|
f() { echo $1; }
|
||||||
|
f >/dev/null
|
||||||
: $((i++))
|
: $((i++))
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@ HERE
|
|||||||
} 1<>/dev/null
|
} 1<>/dev/null
|
||||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
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
|
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||||
|
f() { echo $1; }
|
||||||
|
f >/dev/null
|
||||||
|
|
||||||
memleak
|
memleak
|
||||||
|
|
||||||
@ -53,6 +55,8 @@ HERE
|
|||||||
} 1<>/dev/null
|
} 1<>/dev/null
|
||||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
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
|
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||||
|
f() { echo $1; }
|
||||||
|
f >/dev/null
|
||||||
|
|
||||||
# And same again
|
# And same again
|
||||||
|
|
||||||
@ -77,6 +81,8 @@ HERE
|
|||||||
} 1<>/dev/null
|
} 1<>/dev/null
|
||||||
while { echo $dev_null >>$dev_null; }; do cat <"$dev_null"; break; done
|
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
|
( until { echo $dev_null >>$dev_null | false; }; do cat <"$dev_null"; break; done ) <$dev_null
|
||||||
|
f() { echo $1; }
|
||||||
|
f >/dev/null
|
||||||
|
|
||||||
memleak
|
memleak
|
||||||
kb=$?
|
kb=$?
|
||||||
|
Loading…
Reference in New Issue
Block a user