Commit e8260d1
committed
fix: validate Default and roll back SetPath on later failure
Three review-driven hardenings rolled into one commit:
1. config.EnsureExists now Validate()s Default() before writing.
TestDefaultPassesValidate already locks the happy path, but a
future regression should fail EnsureExists rather than persist
garbage that Load would later reject.
2. simulator.New captures the package-level path with config.Path()
before the SetPath, then defers a rollback that fires unless a
'committed' flag flips at the end. Now Load() and rebuildAuthChain()
failures restore the previous global path instead of leaving the
constructor's mutation behind.
3. Tests:
- newTestSimulator captures config.Path() into priorPath and the
cleanup restores that value (instead of unconditionally setting
'') so a parent test's path is preserved across nested fixtures.
- TestNewDoesNotLeakActivePathOnEnsureFailure now installs a
non-empty sentinel as the prior value so the assertion exercises
the preserve-existing-path behaviour, not just preserve-empty.
- New TestNewDoesNotLeakActivePathOnLoadFailure covers the second
leak window — EnsureExists succeeds (file exists) but Load
fails because the existing file is invalid JSON. The deferred
rollback in New must restore the sentinel.1 parent 1ca9ca0 commit e8260d1
3 files changed
Lines changed: 60 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
961 | 961 | | |
962 | 962 | | |
963 | 963 | | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
964 | 972 | | |
965 | 973 | | |
966 | 974 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
| 162 | + | |
162 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
163 | 173 | | |
164 | 174 | | |
165 | 175 | | |
| |||
192 | 202 | | |
193 | 203 | | |
194 | 204 | | |
| 205 | + | |
195 | 206 | | |
196 | 207 | | |
197 | 208 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
77 | 80 | | |
78 | 81 | | |
79 | 82 | | |
| |||
109 | 112 | | |
110 | 113 | | |
111 | 114 | | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
117 | 122 | | |
118 | 123 | | |
119 | 124 | | |
120 | 125 | | |
121 | 126 | | |
122 | | - | |
123 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
124 | 157 | | |
125 | 158 | | |
126 | 159 | | |
| |||
0 commit comments