Skip to content

feat: checks name the solution files they read - #349

Merged
AydinHassan merged 1 commit into
masterfrom
solution-files
Nov 1, 2026
Merged

AydinHassan merged 1 commit into
masterfrom
solution-files

Conversation

@AydinHassan

Copy link
Copy Markdown
Member

For #336, before #346. Replaces #348.

Once the code runs in a container with the files copied in, the files it writes have to come back for the checks that read them. This says which files those are. No behaviour change yet.

  • New Check\ReadsSolutionFiles interface: getSolutionFiles(ExerciseInterface): list<string>. DatabaseCheck returns ['db.sqlite'], FileComparisonCheck the exercise's files to compare.
  • ExerciseDispatcher::verify() collects them from the required checks into ExecutionContext::getSolutionFiles().
  • Sandbox::finish(ExecutionContext $context). HostSandbox and today's mounted DockerSandbox have the files already, so they ignore it.

@AydinHassan
AydinHassan merged commit eb9e03c into master Nov 1, 2026
5 checks passed
AydinHassan added a commit to php-school/phpschool.io that referenced this pull request Nov 1, 2026
Picks up php-school/php-workshop#346 and
php-school/php-workshop#349 for
php-school/php-workshop#336: each solution
runs in one container with its files copied in, and the Redis port lock
is released when the sandbox finishes. No website code changes.

Tried with real Docker and a throwaway Redis through
`CloudInstalledWorkshop` and `LockPortPicker`: learn-you-php Time Server
and Database Read pass, no port locks or containers left.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant