]> Sergey Matveev's repositories - zsh-autoenv.git/blob - tests/recurse-upwards.t
tests: use sed to prepend to .env file
[zsh-autoenv.git] / tests / recurse-upwards.t
1 Test recursing into parent .env files.
2
3   $ source $TESTDIR/setup.sh
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:sub 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:sub 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:recurse-upwards.t 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:recurse-upwards.t 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:recurse-upwards.t from:sub to:sub
95   ENTERED_sub: PWD:sub from:sub to:sub
96   ENTER2
97   done_sub
98   done_sub2
99
100 Go to root.
101
102   $ cd ../..
103   LEFT_sub: PWD:sub from:sub2 to:recurse-upwards.t
104   ENTERED_root: PWD:recurse-upwards.t from:sub2 to:recurse-upwards.t
105
106
107 Changing the root .env should trigger re-authentication via autoenv_source_parent.
108
109 First, let's answer "no".
110
111   $ echo "echo NEW" > .env
112   $ _autoenv_read_answer() { echo 'n' }
113   $ cd sub
114   autoenv_source_parent_from_sub:
115   Attempting to load unauthorized env file: /tmp/cramtests-*/recurse-upwards.t/.env (glob)
116   
117   **********************************************
118   
119   echo NEW
120   
121   **********************************************
122   
123   Would you like to authorize it? [y/N] 
124   ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub
125   ENTER2
126   done_sub
127
128 Now with "yes".
129 This currently does not trigger re-execution of the .env file.
130
131   $ _autoenv_read_answer() { echo 'y' }
132   $ cd .
133
134 Touching the .env file will now source the parent env file.
135
136   $ touch -t 201401010104 .env
137   $ cd .
138   autoenv_source_parent_from_sub:
139   Attempting to load unauthorized env file: /tmp/cramtests-*/recurse-upwards.t/.env (glob)
140   
141   **********************************************
142   
143   echo NEW
144   
145   **********************************************
146   
147   Would you like to authorize it? [y/N] 
148   NEW
149   ENTERED_sub: PWD:sub from:sub to:sub
150   ENTER2
151   done_sub