]> Sergey Matveev's repositories - zsh-autoenv.git/blob - tests/recurse-upwards.t
Fix tests: match $CRAMTMP more losely (#78)
[zsh-autoenv.git] / tests / recurse-upwards.t
1 Test recursing into parent .autoenv.zsh files.
2
3   $ source $TESTDIR/setup.zsh || return 1
4
5 Setup env actions / output.
6
7   $ AUTOENV_LOOK_UPWARDS=1
8
9 Create env files in root dir.
10
11   $ echo 'echo ENTERED_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
12   $ echo 'echo LEFT_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
13   $ test_autoenv_auth_env_files
14
15 Create env files in sub dir.
16
17   $ mkdir -p sub/sub2
18   $ cd sub
19   ENTERED_root: PWD:sub from:recurse-upwards.t to:sub
20
21   $ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
22   $ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
23   $ test_autoenv_auth_env_files
24
25 The actual tests.
26
27   $ cd .
28   ENTERED_sub: PWD:sub from:sub to:sub
29
30   $ cd ..
31   LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
32
33   $ cd sub/sub2
34   ENTERED_sub: PWD:sub2 from:recurse-upwards.t to:sub2
35
36   $ cd ..
37
38 Changing the .autoenv.zsh file should re-source it.
39
40   $ echo 'echo ENTER2' >> .autoenv.zsh
41
42 Set timestamp of auth file into the past, so it gets seen as new below.
43
44   $ touch -t 201401010101 .autoenv.zsh
45
46   $ test_autoenv_auth_env_files
47   $ cd .
48   ENTERED_sub: PWD:sub from:sub to:sub
49   ENTER2
50
51 Add sub/sub2/.autoenv.zsh file, with a call to autoenv_source_parent.
52
53   $ echo "echo autoenv_source_parent_from_sub2:\nautoenv_source_parent\necho done_sub2\n" > sub2/.autoenv.zsh
54   $ test_autoenv_add_to_env sub2/.autoenv.zsh
55   $ cd sub2
56   autoenv_source_parent_from_sub2:
57   ENTERED_sub: PWD:sub2 from:sub to:sub2
58   ENTER2
59   done_sub2
60
61 Move sub/.autoenv.zsh away, now the root .autoenv.zsh file should get sourced.
62
63   $ mv ../.autoenv.zsh ../.autoenv.zsh.out
64   $ touch -t 201401010102 .autoenv.zsh
65   $ cd .
66   autoenv_source_parent_from_sub2:
67   ENTERED_root: PWD:sub2 from:sub2 to:sub2
68   done_sub2
69   $ mv ../.autoenv.zsh.out ../.autoenv.zsh
70
71 Prepend call to autoenv_source_parent to sub/.autoenv.zsh file.
72
73   $ cd ..
74   $ sed -i -e "1s/^/echo autoenv_source_parent_from_sub:\nautoenv_source_parent\n/" .autoenv.zsh
75   $ echo "echo done_sub" >> .autoenv.zsh
76   $ touch -t 201401010103 .autoenv.zsh
77   $ test_autoenv_auth_env_files
78
79   $ cd .
80   autoenv_source_parent_from_sub:
81   ENTERED_root: PWD:sub from:sub to:sub
82   ENTERED_sub: PWD:sub from:sub to:sub
83   ENTER2
84   done_sub
85
86
87 Add sub/sub2/.autoenv.zsh file.
88
89   $ echo -e "echo autoenv_source_parent_from_sub2:\nautoenv_source_parent\necho done_sub2\n" >| sub2/.autoenv.zsh
90   $ test_autoenv_add_to_env sub2/.autoenv.zsh
91   $ cd sub2
92   autoenv_source_parent_from_sub2:
93   autoenv_source_parent_from_sub:
94   ENTERED_root: PWD:sub2 from:sub to:sub2
95   ENTERED_sub: PWD:sub2 from:sub to:sub2
96   ENTER2
97   done_sub
98   done_sub2
99
100 Go to root.
101 This should not trigger the enter event, because it was handled via
102 autoenv_source_parent already.
103
104   $ cd ../..
105   LEFT_sub: PWD:recurse-upwards.t from:sub2 to:recurse-upwards.t
106
107
108 Changing the root .autoenv.zsh should trigger re-authentication via
109 autoenv_source_parent.
110
111 First, let's answer "no".
112
113   $ echo "echo NEW" >| .autoenv.zsh
114   $ _autoenv_ask_for_yes() { echo "no"; return 1 }
115   $ cd sub
116   autoenv_source_parent_from_sub:
117   Attempting to load unauthorized env file!
118   -* /*/cramtests-*/recurse-upwards.t/.autoenv.zsh (glob)
119   
120   **********************************************
121   
122   echo NEW
123   
124   **********************************************
125   
126   Would you like to authorize it? (type 'yes') no
127   ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub
128   ENTER2
129   done_sub
130
131 Now with "yes".
132 This currently does not trigger re-execution of the .autoenv.zsh file.
133
134   $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
135   $ cd .
136
137 Touching the .autoenv.zsh file will now source the parent env file.
138
139   $ touch -t 201401010104 .autoenv.zsh
140   $ cd .
141   autoenv_source_parent_from_sub:
142   Attempting to load unauthorized env file!
143   -* /*/cramtests-*/recurse-upwards.t/.autoenv.zsh (glob)
144   
145   **********************************************
146   
147   echo NEW
148   
149   **********************************************
150   
151   Would you like to authorize it? (type 'yes') yes
152   NEW
153   ENTERED_sub: PWD:sub from:sub to:sub
154   ENTER2
155   done_sub
156
157
158   $ cd ..
159   LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
160   $ mkdir sub/sub2/sub3
161   $ cd sub/sub2/sub3
162   autoenv_source_parent_from_sub2:
163   autoenv_source_parent_from_sub:
164   NEW
165   ENTERED_sub: PWD:sub3 from:recurse-upwards.t to:sub3
166   ENTER2
167   done_sub
168   done_sub2