89 lines
3.6 KiB
Bash
Executable File
89 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
bash -n scripts/build.sh tests/check.sh
|
|
sh -n docker-entrypoint.sh
|
|
|
|
grep -q 'Xvfb :99' docker-entrypoint.sh
|
|
! grep -q -- '--headless' docker-entrypoint.sh
|
|
grep -q -- '--no-sandbox' docker-entrypoint.sh
|
|
grep -q 'TCP-LISTEN:' docker-entrypoint.sh
|
|
grep -q 'git.ipao.vip/rogee/fingerprint-chromium' .gitea/workflows/publish.yml
|
|
grep -q 'ghcr.io/rogeecn/fingerprint-chromium' .github/workflows/publish.yml
|
|
grep -q 'packages: write' .gitea/workflows/publish.yml
|
|
grep -q 'packages: write' .github/workflows/publish.yml
|
|
grep -q 'org.opencontainers.image.revision="$OCI_REVISION"' Dockerfile
|
|
grep -q 'org.opencontainers.image.source="$OCI_SOURCE"' Dockerfile
|
|
grep -q 'OCI_SOURCE: https://git.ipao.vip/rogee/fingerprint-chromium' .gitea/workflows/publish.yml
|
|
grep -q '/link/fingerprint-chromium' .gitea/workflows/publish.yml
|
|
grep -q "repository.full_name // empty" .gitea/workflows/publish.yml
|
|
test "$(grep -c 'Authorization: token \$REGISTRY_TOKEN' .gitea/workflows/publish.yml)" -eq 3
|
|
|
|
tmpdir="$(mktemp -d)"
|
|
trap 'rm -rf "$tmpdir"' EXIT
|
|
printf '%s\n' '#!/bin/sh' 'printf '\''{"tag_name":"1.2.3.4","assets":[{"name":"ungoogled-chromium-1.2.3.4-test-x86_64_linux.tar.xz","browser_download_url":"https://example.invalid/chromium.tar.xz"}]}'\''' > "$tmpdir/curl"
|
|
printf '%s\n' '#!/bin/sh' 'printf '\''%s\n'\'' "$*" >> "$DOCKER_LOG"' '[ "$1 $2" = "manifest inspect" ]' > "$tmpdir/docker"
|
|
chmod +x "$tmpdir/curl" "$tmpdir/docker"
|
|
|
|
docker_log="$tmpdir/docker.log"
|
|
DOCKER_LOG="$docker_log" OCI_REVISION=test PUSH=true PATH="$tmpdir:$PATH" \
|
|
./scripts/build.sh registry.example/fingerprint-chromium > "$tmpdir/output"
|
|
test "$(cat "$docker_log")" = "manifest inspect registry.example/fingerprint-chromium:1.2.3.4"
|
|
grep -q 'skipping build and push' "$tmpdir/output"
|
|
|
|
font_packages=(
|
|
fonts-croscore
|
|
fonts-crosextra-caladea
|
|
fonts-crosextra-carlito
|
|
fonts-dejavu-core
|
|
fonts-dejavu-extra
|
|
fonts-freefont-ttf
|
|
fonts-liberation
|
|
fonts-liberation-sans-narrow
|
|
fonts-noto-cjk
|
|
fonts-noto-color-emoji
|
|
fonts-noto-core
|
|
fonts-ubuntu
|
|
fonts-urw-base35
|
|
)
|
|
|
|
version="$(curl --fail --location --retry 3 --silent --show-error \
|
|
https://api.github.com/repos/adryfish/fingerprint-chromium/releases/latest \
|
|
| jq -er '.tag_name | select(test("^[0-9]+(\\.[0-9]+){3}$"))')"
|
|
image="fingerprint-chromium-test:$version"
|
|
CHROME_VERSION="$version" ./scripts/build.sh fingerprint-chromium-test
|
|
|
|
docker run --rm --entrypoint sh "$image" -c '
|
|
for package do
|
|
test "$(dpkg-query -W -f="\${Status}" "$package" 2>/dev/null)" = "install ok installed" || exit 1
|
|
done
|
|
' sh "${font_packages[@]}"
|
|
|
|
docker run --rm --entrypoint sh "$image" -c '
|
|
for font do
|
|
fc-match --format "%{family}\n" "$font" | grep -Fq "$font" || exit 1
|
|
done
|
|
' sh Arimo Tinos Cousine Caladea Carlito \
|
|
'Noto Sans CJK JP' 'Noto Sans CJK SC' 'Noto Sans CJK TC' \
|
|
'Noto Serif CJK JP' 'Noto Serif CJK SC' 'Noto Serif CJK TC'
|
|
|
|
probe() {
|
|
local platform="$1" threshold="$2" output count
|
|
output="$(docker run --rm -i --entrypoint sh "$image" -c '
|
|
cat >/tmp/font-probe.html
|
|
exec /opt/chromium/chrome --no-sandbox --headless=new --disable-gpu --disable-dev-shm-usage \
|
|
--fingerprint=1000 --fingerprint-platform="$1" \
|
|
--dump-dom "file:///tmp/font-probe.html#$1"
|
|
' sh "$platform" <tests/font-probe.html 2>/dev/null)"
|
|
count="$(sed -n 's/.*data-count="\([0-9][0-9]*\)".*/\1/p' <<<"$output")"
|
|
[[ "$count" =~ ^[0-9]+$ && "$count" -ge "$threshold" ]] || {
|
|
printf '%s font probe: expected >= %s, got %s\n' "$platform" "$threshold" "${count:-none}" >&2
|
|
return 1
|
|
}
|
|
printf '%s font probe: %s\n' "$platform" "$count"
|
|
}
|
|
|
|
probe windows 22
|
|
probe macos 24
|
|
probe linux 27
|