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