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

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