]> Sergey Matveev's repositories - zsh-autoenv.git/blob - tests/leave.t
Cleanup API/vars for enter/leave events
[zsh-autoenv.git] / tests / leave.t
1   $ source $TESTDIR/setup.zsh || return 1
2
3 Lets set a simple .autoenv.zsh action
4
5   $ mkdir sub
6   $ cd sub
7   $ echo 'echo ENTERED' > .autoenv.zsh
8   $ echo 'echo LEFT' > .autoenv_leave.zsh
9
10 Change to the directory.
11
12   $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
13   $ cd .
14   Attempting to load unauthorized env file!
15   -* /tmp/cramtests-*/leave.t/sub/.autoenv.zsh (glob)
16   
17   **********************************************
18   
19   echo ENTERED
20   
21   **********************************************
22   
23   Would you like to authorize it? (type 'yes') yes
24   ENTERED
25
26
27 Leave the directory and answer "no".
28
29   $ _autoenv_ask_for_yes() { echo "no"; return 1 }
30   $ cd ..
31   Attempting to load unauthorized env file!
32   -* /tmp/cramtests-*/leave.t/sub/.autoenv_leave.zsh (glob)
33   
34   **********************************************
35   
36   echo LEFT
37   
38   **********************************************
39   
40   Would you like to authorize it? (type 'yes') no
41
42
43   $ cd sub
44   ENTERED
45   $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
46   $ cd ..
47   Attempting to load unauthorized env file!
48   -* /tmp/cramtests-*/leave.t/sub/.autoenv_leave.zsh (glob)
49   
50   **********************************************
51   
52   echo LEFT
53   
54   **********************************************
55   
56   Would you like to authorize it? (type 'yes') yes
57   LEFT
58
59
60 Now check with subdirs, looking upwards.
61
62   $ AUTOENV_LOOK_UPWARDS=1
63   $ mkdir sub/child
64   $ cd sub/child
65   ENTERED
66   $ cd .
67   $ cd ..
68   $ cd ..
69   LEFT
70
71
72 Now check with subdirs, not looking at parent dirs.
73
74   $ AUTOENV_LOOK_UPWARDS=0
75   $ cd sub/child
76   $ cd ..
77   ENTERED
78   $ cd child
79   $ cd ../..
80   LEFT
81
82
83 Test that .autoenv.zsh is sourced only once with AUTOENV_HANDLE_LEAVE=0.
84
85   $ unset _autoenv_stack_entered
86   $ AUTOENV_HANDLE_LEAVE=0
87   $ cd sub
88   ENTERED
89   $ cd ..
90   $ cd sub
91
92
93 Test that "leave" is not triggered when entering an outside dir via symlink.
94
95   $ AUTOENV_HANDLE_LEAVE=1
96   $ cd ..
97   LEFT
98   $ mkdir outside
99   $ cd outside
100   $ echo 'echo ENTERED outside: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv.zsh
101   $ echo 'echo LEFT outside: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv_leave.zsh
102   $ echo 'echo LEFT: autoenv_env_file:${autoenv_env_file}' >> .autoenv_leave.zsh
103   $ test_autoenv_auth_env_files
104
105   $ cd ..
106   $ ln -s ../outside sub/symlink
107   $ cd sub
108   ENTERED
109   $ cd symlink
110   ENTERED outside: PWD:symlink pwd:symlink from:sub to:symlink event:enter
111
112   $ cd ../..
113   LEFT
114   LEFT outside: PWD:leave.t pwd:leave.t from:symlink to:leave.t event:leave
115   LEFT: autoenv_env_file:*/leave.t/sub/symlink/.autoenv_leave.zsh (glob)
116   $ cd sub/symlink
117   ENTERED outside: PWD:symlink pwd:symlink from:leave.t to:symlink event:enter
118
119 $autoenv_env_file should not be exported.
120
121   $ echo -n $autoenv_env_file
122
123 $autoenv_env_file should be reset when leaving.
124
125   $ echo -n $autoenv_env_file
126   $ cd ../..
127   LEFT outside: PWD:leave.t pwd:leave.t from:symlink to:leave.t event:leave
128   LEFT: autoenv_env_file:*/leave.t/sub/symlink/.autoenv_leave.zsh (glob)
129   $ echo ${autoenv_env_file:-empty}
130   empty