With the variable set, a real session treated every existing repository as missing, whatever the token; and an installed release build honoured a test seam without recording it.
How it was tested
Zero-warning x64 build with locked restore; 703 engine tests and 142 CLI tests pass; line coverage 100% on the three covered assemblies; dotnet format --verify-no-changes clean.
Not run yet: the UI suite, which is the test for this change (it drives the desktop, so it is batched). This pull request stays open until that run passes.
Checklist
Commits are signed and signed off (git commit -S -s)
Zero build warnings; format and lint are clean
Tests added or updated; the 100% coverage gate still passes (UI test added; UI suite run pending)
Docs updated for user-visible changes; threat model updated if the attack surface changed
No secrets, credentials, or personal data
New dependencies are justified below, or none were added (none)
Substantial AI assistance, if any, is noted here: written with Claude Code (Claude Fable 5.2)
## What
- The UI test fixture's git client asks the real client whether a folder is a repository, instead of answering "no" for every token.
- An installed build (one with a Velopack app id) ignores `GCLO_UITEST_FIXTURE`.
- The app logs one line when the fixture is enabled; a new UI test asserts it.
## Why
Closes #145.
With the variable set, a real session treated every existing repository as missing, whatever the token; and an installed release build honoured a test seam without recording it.
## How it was tested
- Zero-warning x64 build with locked restore; 703 engine tests and 142 CLI tests pass; line coverage 100% on the three covered assemblies; `dotnet format --verify-no-changes` clean.
- **Not run yet: the UI suite**, which is the test for this change (it drives the desktop, so it is batched). This pull request stays open until that run passes.
## Checklist
- [x] Commits are signed and signed off (`git commit -S -s`)
- [x] Zero build warnings; format and lint are clean
- [ ] Tests added or updated; the 100% coverage gate still passes (UI test added; UI suite run pending)
- [x] Docs updated for user-visible changes; threat model updated if the attack surface changed
- [x] No secrets, credentials, or personal data
- [x] New dependencies are justified below, or none were added (none)
- [x] Substantial AI assistance, if any, is noted here: written with Claude Code (Claude Fable 5.2)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
With GCLO_UITEST_FIXTURE=1 the fixture's git client answered "not a
repository" for every folder, whatever the token, so a real session
started with the variable set treated every existing repository as
missing. The variable was also honoured by installed release builds,
and nothing recorded that it was in effect.
- The fixture asks the real git client whether a folder is a repository;
its own clones write nothing, so the fixture token still always clones.
- An installed build (one with a Velopack app id) ignores the variable.
- The app logs one line when the fixture is enabled; a UI test asserts it.
Threat model: the interface row for the variable says what now holds.
Closes#145
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
Rebased onto current main. All local gates pass on the rebased commit, including the UI suite that this change was held for: 881 engine, 164 CLI and 12 UI tests (the new one asserts the log line that says the fixture is enabled), 100% line coverage on the three gated assemblies, zero warnings, format clean.
Rebased onto current main. All local gates pass on the rebased commit, including the UI suite that this change was held for: 881 engine, 164 CLI and 12 UI tests (the new one asserts the log line that says the fixture is enabled), 100% line coverage on the three gated assemblies, zero warnings, format clean.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
GCLO_UITEST_FIXTURE.Why
Closes #145.
With the variable set, a real session treated every existing repository as missing, whatever the token; and an installed release build honoured a test seam without recording it.
How it was tested
dotnet format --verify-no-changesclean.Checklist
git commit -S -s)🤖 Generated with Claude Code
f49a47a7f4to9fc4e8a5ecRebased onto current main. All local gates pass on the rebased commit, including the UI suite that this change was held for: 881 engine, 164 CLI and 12 UI tests (the new one asserts the log line that says the fixture is enabled), 100% line coverage on the three gated assemblies, zero warnings, format clean.