blob: c9ea5c68b0c492ded6262682743206f28ea5ab63 (
plain)
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
|
#!/usr/bin/env zsh
setopt err_exit
typeset envstore=${1-envstore}
trap "print -P '\n%N:%i: %B%F{red}Test faild!%F{default}%b\nrm -rf $testdir'" ZERR
trap "$envstore clear" INT
cat <<- ente
Usage: $0 [path to envstore]
Note: this script will remove/overwrite your envstore store file.
The envstore script needs to be compatible with the original envstore API,
that is, it should implement the commends "clear", "rm", "eval",
"save var" and "save var value"
ente
echo "# $envstore clear"
$envstore clear
echo "# $envstore save var"
export hello=world
$envstore save hello
unset hello
echo "# $envstore eval"
eval $($envstore eval)
[[ $hello == world ]]
unset hello
echo "# $envstore rm"
$envstore rm hello
eval $($envstore eval)
[[ -z $hello ]]
echo "# $envstore save var value"
$envstore save hello world
echo "# $envstore eval"
eval $($envstore eval)
[[ $hello == world ]]
unset hello
echo "# $envstore clear"
$envstore clear
eval $($envstore eval)
[[ -z $hello ]]
echo "# $envstore save + eval (spaces in value), save var"
export hello='your mom'
$envstore save hello
unset hello
eval $($envstore eval)
[[ $hello == 'your mom' ]]
unset hello
$envstore clear
echo "# $envstore save + eval (spaces in value), save var value"
$envstore save hello 'your mom'
eval $($envstore eval)
[[ $hello == 'your mom' ]]
unset hello
echo "# $envstore save (overwrite)"
$envstore save hello world
eval $($envstore eval)
[[ $hello == world ]]
$envstore clear
echo "# $envstore save (' in value)"
$envstore save hello "the ' dude"
eval $($envstore eval)
[[ $hello == "the ' dude" ]]
unset hello
echo "# $envstore save (UTF-8)"
export hello='mÿde Rentner… und so'
$envstore save hello
unset hello
eval $($envstore eval)
[[ $hello == 'mÿde Rentner… und so' ]]
unset hello
$envstore clear
print -P '\n%F{green}Test passed%F{default}\n'
echo "## some benchmarks now..."
TIMEFMT='%*E real, %*U user, %*S system - %P%% CPU - %J'
echo "# adding 5000 vars (this could take a _long_ time)"
for i in {0..5000}; {
(( i % 500 )) || echo "# $((5000-i)) to go"
$envstore save $i $i$i$i
}
echo
repeat 2 {time $envstore eval > /dev/null}
repeat 2 {time $envstore rm 99999 > /dev/null}
repeat 2 {time $envstore clear}
|