Skip to content

Commit 287703b

Browse files
authored
fix(tests): generate dummy lock file for tests (#43)
1 parent efee5d0 commit 287703b

File tree

2 files changed

+46
-12
lines changed

2 files changed

+46
-12
lines changed

src/config.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,15 @@ mod tests {
220220
)
221221
.unwrap();
222222
}
223+
fs::write(
224+
temp_dir.path().join("docker-image.lock.yml"),
225+
"services: {}\n",
226+
)
227+
.unwrap();
223228
let out = Command::new("./bridgehead")
224229
.current_dir(temp_dir.path())
225230
.stdout(Stdio::null())
231+
.stderr(Stdio::piped())
226232
.arg("compose")
227233
.arg("config")
228234
.spawn()

tests/snapshots/minimal/[email protected]

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ main() {
2121
useradd -M -g docker -N bridgehead &>/dev/null || echo "Using existing user bridgehead."
2222
chown -R bridgehead:docker [TMP_DIR]
2323
chmod -R g+sw [TMP_DIR]
24-
install_systemd
24+
if ! systemctl list-units &> /dev/null; then
25+
echo "Systemd is not active. Skipping systemd setup."
26+
update
27+
return
28+
else
29+
install_systemd
30+
fi
2531
echo "Installation complete."
2632
echo "You may start the bridgehead service with 'systemctl start bridgehead' or '[TMP_DIR]/bridgehead compose up' now."
2733
;;
@@ -31,27 +37,49 @@ main() {
3137
;;
3238
compose)
3339
shift
34-
exec docker compose -p bridgehead --env-file .env $COMPOSE_FILES $@
40+
exec docker compose -p bridgehead --env-file .env $COMPOSE_FILES -f docker-image.lock.yml $@
3541
;;
3642
update)
37-
docker pull samply/rusthead:${TAG:-latest} &>/dev/null || echo "Failed to pull latest rusthead image. Using latest local image."
38-
exec docker run --rm \
39-
-v [TMP_DIR]:[TMP_DIR] \
40-
-e BRIDGEHEAD_CONFIG_PATH=[TMP_DIR] \
41-
-u "$(id -u bridgehead):$(id -g bridgehead)" \
42-
samply/rusthead:${TAG:-latest} update
43+
update
4344
;;
4445
*)
46+
echo "Unknown bridgehead command '$@'"
4547
exit 1
4648
;;
4749
esac
4850
}
4951

50-
install_systemd() {
51-
if ! systemctl list-units &> /dev/null; then
52-
echo "Systemd is not active. Skipping systemd setup."
53-
return
52+
update() {
53+
env_hash=$(sha1sum .env | awk '{print $1}')
54+
services_hash=$(sha1sum services/* | awk '{print $1}')
55+
image_hashes=$(sha1sum docker-image.lock.yml | awk '{print $1}')
56+
docker pull samply/rusthead:${TAG:-latest} &>/dev/null || echo "Failed to pull latest rusthead image. Using latest local image."
57+
docker run --rm \
58+
-v [TMP_DIR]:[TMP_DIR] \
59+
-e BRIDGEHEAD_CONFIG_PATH=[TMP_DIR] \
60+
-u "$(id -u bridgehead):$(id -g bridgehead)" \
61+
samply/rusthead:${TAG:-latest} update
62+
docker image prune -f
63+
# TODO: Check if we have any services
64+
new_compose_files="$(ls services | awk '{print " -f services/" $0}')"
65+
[ -e ./docker-compose.override.yml ] && new_compose_files+=" -f docker-compose.override.yml"
66+
docker compose --env-file .env $new_compose_files pull
67+
docker compose --env-file .env $new_compose_files config --lock-image-digests > docker-image.lock.yml
68+
env_changed=$([ "$env_hash" != "$(sha1sum .env | awk '{print $1}')" ] && echo true || echo false)
69+
services_changed=$([ "$services_hash" != "$(sha1sum services/* | awk '{print $1}')" ] && echo true || echo false)
70+
images_changed=$([ "$image_hashes" != "$(sha1sum docker-image.lock.yml | awk '{print $1}')" ] && echo true || echo false)
71+
72+
if [ "$env_changed" = true ] || [ "$services_changed" = true ] || [ "$images_changed" = true ]; then
73+
echo "Update completed. Changes detected in:"
74+
[ "$env_changed" = true ] && echo " - Environment configuration"
75+
[ "$services_changed" = true ] && echo " - Services configuration"
76+
[ "$images_changed" = true ] && echo " - Docker images" || true
77+
else
78+
echo "Update completed. No changes detected - everything is up to date."
5479
fi
80+
}
81+
82+
install_systemd() {
5583
cat <<EOF > /etc/systemd/system/bridgehead.service
5684
[Unit]
5785
Description=Bridgehead Service

0 commit comments

Comments
 (0)