@@ -85,6 +85,23 @@ run_rollback() {
8585 " $ROLLBACK_SCRIPT " " $target "
8686}
8787
88+ run_rollback_with_stale_release_paths () {
89+ local release_root=" $1 "
90+ local stale_root=" $2 "
91+
92+ BAUDBOT_ROLLBACK_ALLOW_NON_ROOT=1 \
93+ BAUDBOT_RELEASE_ROOT=" $release_root " \
94+ BAUDBOT_RELEASES_DIR=" $stale_root /releases" \
95+ BAUDBOT_CURRENT_LINK=" $stale_root /current" \
96+ BAUDBOT_PREVIOUS_LINK=" $stale_root /previous" \
97+ BAUDBOT_ROLLBACK_DEPLOY_CMD=" true" \
98+ BAUDBOT_ROLLBACK_RESTART_CMD=" true" \
99+ BAUDBOT_ROLLBACK_HEALTH_CMD=" true" \
100+ BAUDBOT_ROLLBACK_SKIP_VERSION_CHECK=1 \
101+ BAUDBOT_ROLLBACK_SKIP_CLI_LINK=1 \
102+ " $ROLLBACK_SCRIPT " previous
103+ }
104+
88105test_rollback_previous_switches_current () {
89106 (
90107 set -euo pipefail
@@ -164,12 +181,47 @@ test_rollback_deploy_failure_keeps_current() {
164181 )
165182}
166183
184+ test_rollback_release_root_overrides_stale_release_path_env () {
185+ (
186+ set -euo pipefail
187+ local tmp repo release_root stale_root sha1 sha2 current previous
188+
189+ tmp=" $( mktemp -d /tmp/baudbot-rollback-test.XXXXXX) "
190+ trap ' rm -rf "$tmp"' EXIT
191+
192+ repo=" $tmp /repo"
193+ release_root=" $tmp /opt/baudbot"
194+ stale_root=" $tmp /stale"
195+
196+ mkdir -p " $stale_root /releases/fake-current" " $stale_root /releases/fake-previous"
197+ ln -s " $stale_root /releases/fake-current" " $stale_root /current"
198+ ln -s " $stale_root /releases/fake-previous" " $stale_root /previous"
199+
200+ make_repo " $repo "
201+ run_update " $repo " " $release_root "
202+ sha1=" $( git -C " $repo " rev-parse HEAD) "
203+
204+ new_commit " $repo " " second"
205+ run_update " $repo " " $release_root "
206+ sha2=" $( git -C " $repo " rev-parse HEAD) "
207+
208+ run_rollback_with_stale_release_paths " $release_root " " $stale_root "
209+
210+ current=" $( readlink -f " $release_root /current" ) "
211+ previous=" $( readlink -f " $release_root /previous" ) "
212+
213+ [ " $current " = " $release_root /releases/$sha1 " ]
214+ [ " $previous " = " $release_root /releases/$sha2 " ]
215+ )
216+ }
217+
167218echo " === rollback-release tests ==="
168219echo " "
169220
170221run_test " rollback previous switches current" test_rollback_previous_switches_current
171222run_test " rollback missing release keeps current" test_rollback_missing_release_fails_without_mutation
172223run_test " rollback deploy failure keeps current" test_rollback_deploy_failure_keeps_current
224+ run_test " rollback release-root overrides stale env" test_rollback_release_root_overrides_stale_release_path_env
173225
174226echo " "
175227echo " === $PASSED /$TOTAL passed, $FAILED failed ==="
0 commit comments