OILS / spec / ysh-TODO-deprecate.test.sh View on Github | oils.pub

166 lines, 80 significant
1# TODO-deprecate: Code we want to get rid of!
2
3
4#### oil:upgrade as alias for ysh:upgrade
5
6shopt -p | grep simple_word
7shopt --set oil:upgrade
8shopt -p | grep simple_word
9
10shopt --unset ysh:upgrade
11shopt -p | grep simple_word
12
13## STDOUT:
14shopt -u simple_word_eval
15shopt -s simple_word_eval
16shopt -u simple_word_eval
17## END
18
19
20#### %() array literal
21
22shopt --set parse_at
23
24var x = %(one two)
25echo @x
26
27## STDOUT:
28one two
29## END
30
31#### _match() instead of _group()
32
33shopt --set ysh:upgrade
34
35if ('foo42' ~ / <capture d+> /) {
36 echo $[_match(0)]
37 echo $[_group(0)]
38}
39
40## STDOUT:
4142
4242
43## END
44
45#### source ///osh/two.sh rather than source --builtin osh/two.sh
46
47source --builtin osh/two.sh
48echo status=$?
49
50## STDOUT:
51status=0
52## END
53
54#### OILS_VERSION, not OIL_VERSION
55
56if test -n "$OIL_VERSION"; then
57 echo OIL
58fi
59
60## STDOUT:
61OIL
62## END
63
64#### s.upper(), not s => upper() (might keep this)
65
66shopt --set parse_ysh_expr_sub
67
68echo $['foo' => upper()]
69
70## STDOUT:
71FOO
72## END
73
74#### fopen can be spelled redir
75shopt --set ysh:upgrade
76
77fopen >out {
78 echo 1
79 echo 2
80}
81
82tac out
83
84## STDOUT:
852
861
87## END
88
89
90#### Dict => keys()
91var en2fr = {}
92setvar en2fr["hello"] = "bonjour"
93setvar en2fr["friend"] = "ami"
94setvar en2fr["cat"] = "chat"
95pp test_ (en2fr => keys())
96## status: 0
97## STDOUT:
98(List) ["hello","friend","cat"]
99## END
100
101
102#### Obj API
103shopt --set ysh:upgrade
104
105try {
106 var obj = Object(null, {x: 4})
107 pp test_ (obj)
108}
109echo $[_error.code]
110
111try {
112 pp test_ (propView(obj))
113}
114echo $[_error.code]
115
116try {
117 pp test_ (prototype(obj))
118}
119echo $[_error.code]
120
121## STDOUT:
122(Obj) ("x":4)
1230
124(Dict) {"x":4}
1250
126(Null) null
1270
128## END
129
130#### evalInFrame() and evalToDict()
131
132var cmd = ^(echo hi)
133
134call io->evalInFrame(cmd, vm.getFrame(-1))
135
136var d = io->evalToDict(cmd)
137pp test_ (d)
138
139## STDOUT:
140hi
141hi
142(Dict) {}
143## END
144
145#### YSH case requires ''/dir/*.py workaround
146
147shopt --set ysh:all
148
149case ('/usr/bin/') {
150 ''/usr/* { echo yes }
151 (else) { echo no }
152}
153## STDOUT:
154yes
155## END
156
157#### \x7e was the legacy syntax for \y7e
158
159pp test_ ('~' ~ / [\x7e] /) # should be INVALID
160
161pp test_ ('~' ~ / [\y7e] /)
162
163## STDOUT:
164(Bool) true
165(Bool) true
166## END