OILS / spec / print-source-code.test.sh View on Github | oils.pub

63 lines, 29 significant
1## compare_shells: bash-4.4 mksh zsh
2## oils_failures_allowed: 0
3
4#### typeset -f prints function source code
5: prefix; myfunc() { echo serialized; }
6
7code=$(typeset -f myfunc)
8
9$SH -c "$code; myfunc"
10
11## STDOUT:
12serialized
13## END
14
15#### typeset -f with function keyword (ksh style)
16: prefix; function myfunc {
17 echo serialized
18}
19
20code=$(typeset -f myfunc)
21
22$SH -c "$code; myfunc"
23
24## STDOUT:
25serialized
26## END
27
28#### typeset -f prints function source code - nested functions
29outer() {
30 echo outer
31 : prefix; inner() {
32 echo inner
33 }
34}
35
36code=$(typeset -f outer)
37
38if false; then
39 echo ---
40 echo $code
41 echo ---
42fi
43
44$SH -c "$code; outer; inner"
45
46## STDOUT:
47outer
48inner
49## END
50
51#### non-{ } function bodies can be serialized (rare)
52
53# TODO: we can add more of these
54
55f() ( echo 'subshell body' )
56
57code=$(typeset -f f)
58
59$SH -c "$code; f"
60
61## STDOUT:
62subshell body
63## END