Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## e2e-definition-handler #685 +/- ##
============================================================
- Coverage 99.73% 99.67% -0.07%
Complexity 1900 1900
============================================================
Files 135 135
Lines 4873 4873
============================================================
- Hits 4860 4857 -3
- Misses 13 16 +3 ☔ View full report in Codecov by Harness. |
Firehed
added this pull request to stack #688
October 4, 2026 01:49
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # tests/EndToEnd/README.md # tests/EndToEnd/ScriptTest.php
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # tests/ServerTest.php
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on #684.
Adds disk changes to end-to-end scripts and moves the external-change tests onto them.
Steps
All in
Step/:Closecloses an open document.CopyandDeletechange the disk as another program would, without telling the server.Copyputs a prepared variant in place, so no PHP is written inline; the variants live inDiskChange/in the fixture project, outside the autoload paths. Scripts already run against a throwaway copy of the project (Add script-driven end-to-end tests with recorded transcripts #680), so fixtures are never mutated.ReportChangessends oneworkspace/didChangeWatchedFileslisting typed file events (FileChange,FileChangeType).Scripts
Each declares watched-file support and asks for definitions in
src/DiskChange/Consumer.php, expectingNoAnswer()before a change andLandsOnafter it (or the reverse for the deletion):Deleted;Created;autoload.filesentry, reported and unreported.What the scripts show about invalidation: class files are read again on every query, because what a file declares is cached under its path and text. An edit to a class file is therefore seen whether or not it is reported. The
autoload.filesindex is rebuilt only on a report, so an unreported edit there is not seen. Both behaviors are stated as expectations; the unreportedautoload.filescase will change if a stand-in file watcher (#647) lands.Originals
ExternalFileChangeInvalidationTestis removed. Its enumeration case is covered only by name lookup here, and only for the added symbol, not the removed one, since enumeration surfaces through expression-position completion, which waits on PHP built-ins are read from the server's own PHP, not the project's #401.ServerTestis removed, with the helpers only it used. It usedServer::forProjectand the container.DefinitionIntegrationTestis removed.disk-close-rereadsshows that an open buffer wins over the disk, which its remaining case covered.Coverage:
ExternalFileChangeInvalidationTestcovered nothing, and theServerTestcase covered nothing other tests do not. RemovingDefinitionIntegrationTestleavesServer::forProject's fallback to the working directory uncovered in-process; every end-to-end script runs it, which coverage cannot see.🤖 Generated with Claude Code