|
|
|
#!/bin/bash
|
|
|
|
# Author: Sick.Codes https://twitter.com/sickcodes
|
|
|
|
# Contact: https://github.com/sickcodes, https://sick.codes
|
|
|
|
# Copyright: sickcodes (C) 2021
|
|
|
|
# License: GPLv3+
|
|
|
|
# Title: Docker-OSX (Mac on Docker)
|
|
|
|
# Repository: https://github.com/sickcodes/Docker-OSX
|
|
|
|
# Website: https://sick.codes
|
|
|
|
#
|
|
|
|
# Status: Used internally to run each image and take screenshots until they match the pngs in this folder.
|
|
|
|
#
|
|
|
|
|
|
|
|
# note to self: # to get master images, boot each image, then screen shot using DISPLAY=:99 in the test.sh script
|
|
|
|
# scrot -o high-sierra_master.png
|
|
|
|
# scrot -o mojave_master.png
|
|
|
|
# scrot -o catalina_master.png
|
|
|
|
# scrot -o big-sur_master.png
|
|
|
|
# scrot -o monterey_master.png
|
|
|
|
# scrot -o ventura_master.png
|
|
|
|
# scrot --overwrite --display :99 --file ~/${TEST}.png
|
|
|
|
# pull off remote server to the tests folder
|
|
|
|
# REMOTE_SERVER=
|
|
|
|
# scp root@"${REMOTE_SERVER}":~/*_master.png .
|
|
|
|
|
|
|
|
export DISPLAY=:99
|
|
|
|
|
|
|
|
TESTS=(
|
|
|
|
high-sierra
|
|
|
|
mojave
|
|
|
|
catalina
|
|
|
|
big-sur
|
|
|
|
monterey
|
|
|
|
ventura
|
|
|
|
sonoma
|
|
|
|
)
|
|
|
|
|
|
|
|
# test each docker image to see if they boot to their unique respective installation screens.
|
|
|
|
|
|
|
|
for TEST in "${TESTS[@]}"; do
|
|
|
|
# run the image detached
|
|
|
|
docker run --rm -d \
|
|
|
|
--device /dev/kvm \
|
|
|
|
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
|
|
|
-e "DISPLAY=:99" \
|
|
|
|
"sickcodes/docker-osx:${TEST}"
|
|
|
|
|
|
|
|
# imcat the expected test screenshot to ./"${TEST}_master.txt"
|
|
|
|
imcat ~/Docker-OSX/tests/${TEST}_master.png > ./"${TEST}_master.txt"
|
|
|
|
|
|
|
|
# run until the screen matches the expected screen
|
|
|
|
while :; do
|
|
|
|
sleep 5
|
|
|
|
# screenshot the Xvfb
|
|
|
|
scrotcat > ./"${TEST}.txt"
|
|
|
|
# diff the low res txt files created from imcat
|
|
|
|
diff "./${TEST}.txt" ./"${TEST}_master.txt" && break
|
|
|
|
scrotcat
|
|
|
|
done
|
|
|
|
|
|
|
|
# kill any containers
|
|
|
|
docker kill "$(docker ps --format "{{.ID}}")"
|
|
|
|
|
|
|
|
# ensure all containers are dead
|
|
|
|
until [[ "$(docker ps | wc -l)" = 1 ]]; do
|
|
|
|
sleep 1
|
|
|
|
docker ps | xargs docker kill
|
|
|
|
done
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
exit 0
|