OILS / demo / osh-crash.sh View on Github | oilshell.org

66 lines, 37 significant
1#!/usr/bin/env bash
2#
3# Usage:
4# ./osh-crash.sh <function name>
5
6set -o nounset
7set -o pipefail
8set -o errexit
9
10g() {
11 readonly g=1
12 local -a bash_array=(a b)
13 bash_array[5]=z
14 readonly bash_array
15
16 readonly -A bash_assoc=([x]=y [foo]=bar)
17
18 echo foo > $bar
19}
20
21f() {
22 shift
23 local flocal=flocal
24 FOO=bar g A B
25}
26
27main() {
28 f a b c
29}
30
31run-with-osh() {
32 OILS_CRASH_DUMP_DIR=_tmp bin/osh $0 main "$@"
33}
34
35_do-subshell() {
36 echo PID=$$
37 ( f a b c )
38}
39
40# Note: we get two difference crash dumps, with two different stacks.
41#
42# That's because we call through $0.
43
44do-subshell() {
45 # clear environment so it's smaller
46 env -i OILS_CRASH_DUMP_DIR=_tmp \
47 bin/osh $0 _do-subshell "$@"
48}
49
50_pipeline() {
51 # All of these show multiple errors
52
53 false | wc -l
54
55 #{ echo 1; false; echo 2; } | wc -l
56
57 #f() { echo 1; false; echo 2; }
58 #f | tac
59}
60
61do-pipeline() {
62 env -i PATH=$PATH OILS_CRASH_DUMP_DIR=_tmp \
63 bin/osh $0 _pipeline
64}
65
66"$@"