test: run-all.sh, hide i3bar for compare
1
.gitignore
vendored
@ -3,5 +3,6 @@ zig-cache/
|
||||
zig-out/
|
||||
/result*
|
||||
test/ghostty
|
||||
test/cases/**/*.actual.png
|
||||
|
||||
glad.zip
|
||||
|
@ -46,4 +46,6 @@ COPY --from=alacritty /tmp/alacritty/target/release/alacritty /usr/bin/alacritty
|
||||
|
||||
COPY ./run.sh /entrypoint.sh
|
||||
|
||||
COPY ./ghostty /usr/bin/ghostty
|
||||
|
||||
ENTRYPOINT ["/bin/bash"]
|
||||
|
@ -36,6 +36,6 @@ the full test suite against only a single terminal emulator.
|
||||
## Modifying the `ghostty` Binary
|
||||
|
||||
This test suite expects the `ghostty` binary to be in _this directory_.
|
||||
You can manually copy it into place. By default, if the binary doesn't exist,
|
||||
the various host-side shell scripts will try to copy from
|
||||
`../zig-out/bin/ghostty` (resulting from `zig build`).
|
||||
You can manually copy it into place. Each time you modify the binary, you
|
||||
must rebuild the Docker image.
|
||||
|
||||
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
BIN
test/cases/vttest/launch.sh.ghostty.png
Normal file
After Width: | Height: | Size: 89 KiB |
25
test/run-all.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Run all of the test cases. All test cases are found by traversing
|
||||
# the "cases" directory, finding all shell files, and executing the
|
||||
# "./run-host.sh" command for each.
|
||||
|
||||
DIR=$(cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd)
|
||||
|
||||
# We always copy the bin in case it was rebuilt
|
||||
cp ${DIR}/../zig-out/bin/ghostty ${DIR}/
|
||||
|
||||
# Build our image once
|
||||
IMAGE=$(docker build --file ${DIR}/Dockerfile -q ${DIR})
|
||||
|
||||
# Unix shortcut to just execute ./run-host for each one. We can do
|
||||
# this less esoterically if we ever wanted.
|
||||
find ${DIR}/cases \
|
||||
-type f \
|
||||
-name '*.sh' \
|
||||
-exec \
|
||||
${DIR}/run-host.sh \
|
||||
--case '{}' \
|
||||
--rewrite-abs-path \
|
||||
$@ \
|
||||
';'
|
@ -3,14 +3,13 @@
|
||||
# This runs a single test case from the host (not from Docker itself). The
|
||||
# arguments are the same as run.sh but this wraps it in docker.
|
||||
|
||||
if [ ! -f "ghostty" ]; then
|
||||
cp ../zig-out/bin/ghostty .
|
||||
fi
|
||||
DIR=$(cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd)
|
||||
IMAGE=$(docker build --file ${DIR}/Dockerfile -q ${DIR})
|
||||
|
||||
docker run \
|
||||
--init \
|
||||
--rm \
|
||||
-v $(pwd):/src \
|
||||
-v ${DIR}:/src \
|
||||
--entrypoint "xvfb-run" \
|
||||
$(docker build -q .) \
|
||||
$IMAGE \
|
||||
/entrypoint.sh $@
|
||||
|
17
test/run.sh
@ -19,21 +19,30 @@ function has_func() {
|
||||
#--------------------------------------------------------------------
|
||||
# Flag parsing
|
||||
|
||||
ARG_REWRITE=0
|
||||
ARG_UPDATE=0
|
||||
ARG_OUT="/tmp/test.png"
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
-e|--exec) ARG_EXEC="$2"; shift ;;
|
||||
-c|--case) ARG_CASE="$2"; shift ;;
|
||||
-o|--output) ARG_OUT="$2"; shift ;;
|
||||
-u|--update) ARG_UPDATE=1 ;;
|
||||
--rewrite-abs-path) ARG_REWRITE=1 ;;
|
||||
*) echo "Unknown parameter passed: $1"; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Rewrite the path to be valid for us. This regex can be fooled in many ways
|
||||
# but its good enough for my PC (mitchellh) and CI. Contributors feel free
|
||||
# to harden it.
|
||||
if [ "$ARG_REWRITE" -eq 1 ]; then
|
||||
ARG_CASE=$(echo $ARG_CASE | sed -e 's/.*cases/\/src\/cases/')
|
||||
fi
|
||||
|
||||
# If we're updating, then just update the file in-place
|
||||
GOLDEN_OUT="${ARG_CASE}.${ARG_EXEC}.png"
|
||||
ARG_OUT="${ARG_CASE}.${ARG_EXEC}.actual.png"
|
||||
if [ "$ARG_UPDATE" -eq 1 ]; then ARG_OUT=$GOLDEN_OUT; fi
|
||||
|
||||
bad=0
|
||||
@ -75,7 +84,13 @@ chmod 0700 $XDG_RUNTIME_DIR
|
||||
|
||||
# Configure i3
|
||||
cat <<EOF >${XDG_BASE_DIR}/i3.cfg
|
||||
# i3 config file (v4)
|
||||
|
||||
exec ${ARG_EXEC}
|
||||
|
||||
bar {
|
||||
mode invisible
|
||||
}
|
||||
EOF
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
|