Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
# Large binary assets tracked via Git LFS
*.bin filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
# Reserved for repository-specific attributes.
2 changes: 2 additions & 0 deletions .github/workflows/autofix-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ jobs:
- name: Check out source
uses: actions/checkout@v4
with:
lfs: false
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref || github.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/clang-format-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
with:
lfs: false
submodules: recursive
ref: ${{ github.event.pull_request.head.sha }}

- name: Run clang-format style check for C/C++/Protobuf programs.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,4 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:cpp"
category: "/language:cpp"
3 changes: 3 additions & 0 deletions .github/workflows/host-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ jobs:

steps:
- uses: actions/checkout@v4
with:
lfs: false
submodules: recursive

# Install build tools and GTest
- name: Install deps
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/lint-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
lfs: false
submodules: recursive

- name: Setup C++ tooling
uses: aminya/setup-cpp@v1
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: false
submodules: recursive
- name: Guard against Git LFS usage
run: |
if git grep -n "filter=lfs" -- .gitattributes; then
echo "Refusing to proceed: LFS filters detected in .gitattributes"
exit 1
fi
- uses: frenck/action-yamllint@v1
with:
config_file: .yamllint.yml
Expand All @@ -19,6 +28,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: false
submodules: recursive
- uses: super-linter/super-linter@v7
env:
VALIDATE_ALL_CODEBASE: true
Expand Down
1 change: 1 addition & 0 deletions tests/ui/golden/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.png
3 changes: 0 additions & 3 deletions tests/ui/golden/home_page.png

This file was deleted.

53 changes: 53 additions & 0 deletions tests/ui/golden/home_page.png.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
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
AAAAAABwFWQCTsD2Ae4rAAAAAElFTkSuQmCC
3 changes: 0 additions & 3 deletions tests/ui/golden/rooms_three_cards.png

This file was deleted.

76 changes: 76 additions & 0 deletions tests/ui/golden/rooms_three_cards.png.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAIAAABAH0oBAAAQrUlEQVR4nO3XMQ0AMRADwYOQIsXz
R/osEik70gBwZ+2s/QEAAMDz5voCAAAAOEAAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIY
AACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECC
AAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAA
kCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAA
AAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIE
MAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACA
BAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYA
ACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCA
AQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAk
CGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAA
AAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEM
AABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBB
AAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAA
SBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAA
AAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkC
GAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABA
ggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMA
AJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDA
AAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAAS
BDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAA
gAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAG
AAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAg
gAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAA
JAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAA
AAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQB
DAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAg
QQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEA
AEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhg
AAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJ
AhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAA
QIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQAD
AACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQ
wAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAA
EgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgA
AIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIA
BgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQ
IIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAA
ACQIYAAAABIEMAAAAAkCGAAAgAQBDAAXzLhgADjN+wIAAJAggAEAAEgQwAAAACQIYAAAABIEMAAA
AAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEM
AABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBB
AAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAA
SBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAA
AAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkC
GAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABA
ggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMA
AJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDA
AAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAAS
BDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAA
gAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAG
AAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAg
gAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAA
JAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAA
AAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQB
DAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAg
QQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEA
AEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhg
AAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJ
AhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAA
QIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQAD
AACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQ
wAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAA
EgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgA
AIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIA
BgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQ
IIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAA
ACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQw
AAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAE
AQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAA
IEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIAB
AABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQI
YAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEAAwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAA
CQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABIEMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwA
AECCAAYAACBBAAMAAJAggAEAAEgQwAAAACQIYAAAABIEMAAAAAkCGAAAgAQBDAAAQIIABgAAIEEA
AwAAkCCAAQAASBDAAAAAJAhgAAAAEgQwAAAACQIYAACABAEMAABAggAGAAAgQQADAACQIIABAABI
EMAAAAAkCGAAAAASBDAAAAAJAhgAAIAEAQwAAEDCD6DX8SoWE9XpAAAAAElFTkSuQmCC
22 changes: 16 additions & 6 deletions tests/ui/test_rooms_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#
# SPDX-License-Identifier: MIT

import base64
import textwrap
import os
import shutil
import struct
Expand All @@ -18,7 +20,8 @@
GOLDEN_DIR = PROJECT_ROOT / "tests" / "ui" / "golden"
RAW_SNAPSHOT = OUTPUT_DIR / "rooms_three_cards.raw"
PNG_SNAPSHOT = OUTPUT_DIR / "rooms_three_cards.png"
GOLDEN_SNAPSHOT = GOLDEN_DIR / "rooms_three_cards.png"
GOLDEN_SNAPSHOT_B64 = GOLDEN_DIR / "rooms_three_cards.png.base64"
GOLDEN_PREVIEW = GOLDEN_DIR / "rooms_three_cards.png"

WIDTH = 1280
HEIGHT = 720
Expand Down Expand Up @@ -95,18 +98,25 @@ def test_snapshot_matches_golden(self) -> None:
self.assertTrue(RAW_SNAPSHOT.exists(), "Snapshot generator did not create raw output")

_rgb565_to_png(RAW_SNAPSHOT, PNG_SNAPSHOT)
generated = PNG_SNAPSHOT.read_bytes()

if os.getenv("UPDATE_GOLDEN"):
GOLDEN_SNAPSHOT.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(PNG_SNAPSHOT, GOLDEN_SNAPSHOT)
GOLDEN_SNAPSHOT_B64.parent.mkdir(parents=True, exist_ok=True)
encoded = base64.b64encode(generated).decode("ascii")
wrapped = "\n".join(textwrap.wrap(encoded, 76))
GOLDEN_SNAPSHOT_B64.write_text(wrapped + "\n", encoding="ascii")
shutil.copy2(PNG_SNAPSHOT, GOLDEN_PREVIEW)

if not GOLDEN_SNAPSHOT.exists():
if not GOLDEN_SNAPSHOT_B64.exists():
self.fail(
"Golden snapshot missing. Run scripts/update_goldens.sh to refresh the reference image."
)

generated = PNG_SNAPSHOT.read_bytes()
golden = GOLDEN_SNAPSHOT.read_bytes()
golden = base64.b64decode(GOLDEN_SNAPSHOT_B64.read_text(encoding="ascii"))
try:
GOLDEN_PREVIEW.write_bytes(golden)
except OSError:
pass
self.assertEqual(golden, generated, "Snapshot PNG does not match golden reference")


Expand Down
Loading
Loading