1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# ############################################################################ #
# #
# ::: :::::::: #
# operation.py :+: :+: :+: #
# +:+ +:+ +:+ #
# By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/07/15 18:24:52 by charles #+# #+# #
# Updated: 2020/09/11 20:12:54 by charles ### ########.fr #
# #
# ############################################################################ #
from suite import suite
import hooks
@suite()
def suite_end(test):
test("echo bonjour; echo je")
test("echo bonjour ;echo je")
test("echo bonjour ; echo je")
test("echo bonjour;")
test("echo; ")
test("echo ; ")
test("echo ;")
test("; echo", hook=hooks.error_line0)
test(" ;echo", hook=hooks.error_line0)
test(" ; echo", hook=hooks.error_line0)
test("echo a; echo b; echo c; echo d; echo e; echo f; echo g; echo h; echo i;"
"echo j; echo k; echo l; echo m; echo c; echo c; echo c; echo c; echo c;"
"echo c; echo c; echo c; echo v; echo w; echo x; echo y; echo z")
test("echo a ; echo b; echo c ;echo d ; echo e ;echo f; echo g ;echo h; echo i;"
"echo j ; echo k; echo l; echo m; echo c ; echo c; echo c ; echo c; echo c;"
"echo c; echo c ; echo c; echo v ; echo w; echo x; echo y ; echo z")
test("ls doesnotexists ; echo bonjour")
test("ls doesnotexists; echo bonjour")
test("echo bonjour; ls doesnotexists")
@suite()
def suite_pipe(test):
test("echo bonjour | cat")
test("echo bonjour | cat -e")
test("ls | cat -e", setup="touch a b c d; mkdir m1 m2 m3")
test("ls -l | cat -e", setup="touch a b c d; mkdir m1 m2 m3")
test("ls -l | cat -e | cat | cat | cat", setup="touch a b c d; mkdir m1 m2 m3")
test("ls -l | cat -e | cat -e | cat -e | cat -e", setup="touch a b c d; mkdir m1 m2 m3")
test("ls -l | cat -e < a", setup="touch a b c d; mkdir m1 m2 m3; echo bonjour > a")
test("echo|", hook=hooks.discard)
test("echo |", hook=hooks.discard)
test("echo | ", hook=hooks.discard)
test("|cat", hook=hooks.error_line0)
test("| cat", hook=hooks.error_line0)
test(" | cat", hook=hooks.error_line0)
test("echo a | export A=a; echo $A")
test("export A=a | cat; echo $A")
# test("echo a | A=a; echo $A")
# test("A=a | cat; echo $A")
@suite(bonus=True)
def suite_and(test):
test("echo bonjour&& echo je")
test("echo bonjour &&echo je")
test("echo bonjour && echo je")
test("echo bonjour&&", hook=hooks.discard)
test("echo&& ", hook=hooks.discard)
test("echo && ", hook=hooks.discard)
test("echo &&", hook=hooks.discard)
test("&&echo", hook=hooks.error_line0)
test("&& echo", hook=hooks.error_line0)
test(" && echo", hook=hooks.error_line0)
test("echo a&& echo b&& echo c&& echo d&& echo e&& echo f&& echo g&& echo h&& echo i&&"
"echo j&& echo k&& echo l&& echo m&& echo c&& echo c&& echo c&& echo c&& echo c&&"
"echo c&& echo c&& echo c&& echo v&& echo w&& echo x&& echo y&& echo z")
test("echo a && echo b&& echo c &&echo d && echo e &&echo f&& echo g &&echo h&& echo i&&"
"echo j && echo k&& echo l&& echo m&& echo c && echo c&& echo c && echo c&& echo c&&"
"echo c&& echo c && echo c&& echo v && echo w&& echo x&& echo y && echo z")
test("ls doesnotexists && echo bonjour")
test("ls doesnotexists&& echo bonjour")
test("echo bonjour&& ls doesnotexists")
@suite(bonus=True)
def suite_or(test):
test("echo bonjour|| echo je")
test("echo bonjour ||echo je")
test("echo bonjour || echo je")
test("echo bonjour||", hook=hooks.discard)
test("echo|| ", hook=hooks.discard)
test("echo || ", hook=hooks.discard)
test("echo ||", hook=hooks.discard)
test("||echo", hook=hooks.error_line0)
test("|| echo", hook=hooks.error_line0)
test(" || echo", hook=hooks.error_line0)
test("echo a|| echo b|| echo c|| echo d|| echo e|| echo f|| echo g|| echo h|| echo i||"
"echo j|| echo k|| echo l|| echo m|| echo c|| echo c|| echo c|| echo c|| echo c||"
"echo c|| echo c|| echo c|| echo v|| echo w|| echo x|| echo y|| echo z")
test("echo a || echo b|| echo c ||echo d || echo e ||echo f|| echo g ||echo h|| echo i||"
"echo j || echo k|| echo l|| echo m|| echo c || echo c|| echo c || echo c|| echo c||"
"echo c|| echo c || echo c|| echo v || echo w|| echo x|| echo y || echo z")
test("ls doesnotexists || echo bonjour")
test("ls doesnotexists|| echo bonjour")
test("echo bonjour|| ls doesnotexists")
|