99use PhpSchool\PhpWorkshop\Exercise\ExerciseInterface;
1010use PhpSchool\PhpWorkshop\Exercise\ExerciseType;
1111use PhpSchool\PhpWorkshop\ExerciseCheck\ComposerExerciseCheck;
12+ use PhpSchool\PhpWorkshop\ExerciseRunner\Context\ExecutionContext;
1213use PhpSchool\PhpWorkshop\Input\Input;
1314use PhpSchool\PhpWorkshop\Result\ComposerFailure;
1415use PhpSchool\PhpWorkshop\Result\Failure;
@@ -34,30 +35,29 @@ public function getName(): string
3435 * installed a set of required packages. If they did not a failure is returned, otherwise,
3536 * a success is returned.
3637 *
37- * @param ExerciseInterface $exercise The exercise to check against.
38- * @param Input $input The command line arguments passed to the command.
38+ * @param ExecutionContext $context The current execution context, containing the exercise, input and working directories.
3939 * @return ResultInterface The result of the check.
40- * @noinspection SpellCheckingInspection
4140 */
42- public function check(ExerciseInterface $exercise, Input $input ): ResultInterface
41+ public function check(ExecutionContext $context ): ResultInterface
4342 {
43+ $exercise = $context->getExercise();
4444 if (!$exercise instanceof ComposerExerciseCheck) {
4545 throw new InvalidArgumentException();
4646 }
4747
48- if (!file_exists(sprintf('%s/composer.json', dirname($input->getRequiredArgument('program') )))) {
48+ if (!file_exists(sprintf('%s/composer.json', $context->getStudentExecutionDirectory( )))) {
4949 return ComposerFailure::fromCheckAndMissingFileOrFolder($this, 'composer.json');
5050 }
5151
52- if (!file_exists(sprintf('%s/composer.lock', dirname($input->getRequiredArgument('program') )))) {
52+ if (!file_exists(sprintf('%s/composer.lock', $context->getStudentExecutionDirectory( )))) {
5353 return ComposerFailure::fromCheckAndMissingFileOrFolder($this, 'composer.lock');
5454 }
5555
56- if (!file_exists(sprintf('%s/vendor', dirname($input->getRequiredArgument('program') )))) {
56+ if (!file_exists(sprintf('%s/vendor', $context->getStudentExecutionDirectory( )))) {
5757 return ComposerFailure::fromCheckAndMissingFileOrFolder($this, 'vendor');
5858 }
5959
60- $lockFile = new LockFileParser(sprintf('%s/composer.lock', dirname($input->getRequiredArgument('program') )));
60+ $lockFile = new LockFileParser(sprintf('%s/composer.lock', $context->getStudentExecutionDirectory( )));
6161 $missingPackages = array_filter($exercise->getRequiredPackages(), function ($package) use ($lockFile) {
6262 return !$lockFile->hasInstalledPackage($package);
6363 });
0 commit comments