-
Notifications
You must be signed in to change notification settings - Fork 0
Testing and Quality Gates
QenTerra edited this page Jul 29, 2026
·
2 revisions
The repository separates deterministic automated verification from live Telegram and macOS acceptance.
Run:
xcodegen generate --spec project.yml
swiftformat Unspool UnspoolTests UnspoolUITests --lint
swiftlint lint --config .swiftlint.yml
xcodebuild \
-project Unspool.xcodeproj \
-scheme Unspool \
-destination 'platform=macOS,arch=arm64' \
-only-testing:UnspoolTests \
test
xcodebuild \
-project Unspool.xcodeproj \
-scheme Unspool \
-destination 'platform=macOS,arch=arm64' \
build-for-testing
git diff --checkThe direct gate:
- regenerates the Xcode project from
project.yml; - runs SwiftFormat in lint mode;
- runs SwiftLint;
- executes the unit-test target on arm64 macOS;
- runs build-for-testing for the shared scheme, compiling the app and UI-test bundle.
The current test source covers:
- app identity and window geometry;
- preferences defaults, persistence, and concurrency clamping;
- arbitrary extension classification;
- original filename preservation and neutral fallback;
- combined filters and sort;
- eligible-only selection and chat isolation;
- all-history pagination past approximate totals and short pages;
- boundary-message compensation for bounded scans;
- cache separation by chat and range and bounded eviction;
- chat pagination, updates, ordering, and cached restore;
- TDLib attachment mapping for music and documents;
- request correlation, out-of-order responses, cancellation, typed errors, shutdown, redaction, and 64-bit identifier precision;
- production session configuration and ordered events;
- authorization state commands, errors, expiration, account switching, and sign out;
- Keychain round-trip and deletion;
- destination conflicts, explicit Replace and Save a Copy, and filename preservation;
- attachment, history, and pending-session persistence;
- application-level filters, selection, chat switching, retry, and recovery presentation.
Fakes simulate TDLib envelopes and transports. Temporary directories isolate filesystem tests. UI fixtures use a separate preferences suite.
The UI-test source verifies:
- ordinary launch enters live Telegram setup;
- approved Browse shell in fixture mode;
- rail navigation;
- chat switching does not retain another chat's attachments;
- operational settings can change;
- disconnected connection presentation;
- cached chat before Telegram pagination;
- progressive setup states and credential help;
- advanced filter controls;
- Downloads empty-state navigation.
UI tests validate structure and interaction, not a real Telegram account.
Documentation publication should additionally check:
- every relative link resolves;
- anchors and wiki navigation have no orphan pages;
- no placeholder copy or personal path was introduced;
- dependency pins match committed metadata;
- legal and privacy claims match code, entitlements, and network boundaries;
- GitHub renders representative Markdown and Mermaid successfully.
A green build does not prove:
- Telegram accepts real credentials;
- a real FLAC sent as music retains its filename;
- exhaustive pagination completes for a very large chat;
- a disconnected network recovers gracefully;
- an external volume behaves correctly;
- VoiceOver reading order is usable;
- signed distribution, notarization, or App Store review succeeds.
Those are manual release gates, not bugs to hide under a green checkmark.
Unspool is an independent project and is not affiliated with Telegram. Repository · Privacy · Security · MIT License
- Getting Started
- Detailed Telegram Setup
- Feature Overview
- Chats and History
- Attachments and Filenames
- Search and Selection
- Download Workflow
- Conflicts and Recovery
- Download History
- Settings
- Accessibility
- Troubleshooting
- Detailed Troubleshooting and FAQ
- Privacy and Security
- Detailed Security Model
- TDLib Integration
- Persistence
- Concurrency and Errors
- Glossary