]> Sergey Matveev's repositories - zsh-autoenv.git/blob - tests/recurse-upwards.t
20a35d1d3f9f777d6beac21ad9b7a62ad986eab8
[zsh-autoenv.git] / tests / recurse-upwards.t
1 Test recursing into parent .env files.
2
3   $ source $TESTDIR/setup.sh || 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}' > .env
12   $ echo 'echo LEFT_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env.leave
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}' > .env
22   $ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .env.leave
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 .env file should re-source it.
39
40   $ echo 'echo ENTER2' >> .env
41
42 Set timestamp of auth file into the past, so it gets seen as new below.
43
44   $ touch -t 201401010101 .env
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/.env 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/.env
54   $ test_autoenv_add_to_env sub2/.env
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/.env away, now the root .env file should get sourced.
62
63   $ mv ../.env ../.env.out
64   $ touch -t 201401010102 .env
65   $ cd .
66   autoenv_source_parent_from_sub2:
67   ENTERED_root: PWD:sub2 from:sub2 to:sub2
68   done_sub2
69   $ mv ../.env.out ../.env
70
71 Prepend call to autoenv_source_parent to sub/.env file.
72
73   $ cd ..
74   $ sed -i -e "1s/^/echo autoenv_source_parent_from_sub:\nautoenv_source_parent\n/" .env
75   $ echo "echo done_sub" >> .env
76   $ touch -t 201401010103 .env
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/.env file.
88
89   $ echo -e "echo autoenv_source_parent_from_sub2:\nautoenv_source_parent\necho done_sub2\n" >| sub2/.env
90   $ test_autoenv_add_to_env sub2/.env
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 .env should trigger re-authentication via autoenv_source_parent.
109
110 First, let's answer "no".
111
112   $ echo "echo NEW" >| .env
113   $ _autoenv_ask_for_yes() { echo "no"; return 1 }
114   $ cd sub
115   autoenv_source_parent_from_sub:
116   Attempting to load unauthorized env file!
117   -* /tmp/cramtests-*/recurse-upwards.t/.env (glob)
118   
119   **********************************************
120   
121   echo NEW
122   
123   **********************************************
124   
125   Would you like to authorize it? (type 'yes') no
126   ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub
127   ENTER2
128   done_sub
129
130 Now with "yes".
131 This currently does not trigger re-execution of the .env file.
132
133   $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
134   $ cd .
135
136 Touching the .env file will now source the parent env file.
137
138   $ touch -t 201401010104 .env
139   $ cd .
140   autoenv_source_parent_from_sub:
141   Attempting to load unauthorized env file!
142   -* /tmp/cramtests-*/recurse-upwards.t/.env (glob)
143   
144   **********************************************
145   
146   echo NEW
147   
148   **********************************************
149   
150   Would you like to authorize it? (type 'yes') yes
151   NEW
152   ENTERED_sub: PWD:sub from:sub to:sub
153   ENTER2
154   done_sub
155
156
157   $ cd ..
158   LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
159   $ mkdir sub/sub2/sub3
160   $ cd sub/sub2/sub3
161   autoenv_source_parent_from_sub2:
162   autoenv_source_parent_from_sub:
163   NEW
164   ENTERED_sub: PWD:sub3 from:recurse-upwards.t to:sub3
165   ENTER2
166   done_sub
167   done_sub2