public function testGetters() { $exercise = new CliExerciseImpl(); $input = new Input('app'); $event = new ExerciseRunnerEvent('Some Event', $exercise, $input, ['number' => 1]); self::assertSame($exercise, $event->getExercise()); self::assertSame($input, $event->getInput()); self::assertEquals(['exercise' => $exercise, 'input' => $input, 'number' => 1], $event->getParameters()); }
/** * @param ExerciseRunnerEvent $event */ public function __invoke(ExerciseRunnerEvent $event) { $solution = $event->getExercise()->getSolution(); if ($solution->hasComposerFile()) { //prepare composer deps //only install if composer.lock file not available if (!file_exists(sprintf('%s/vendor', $solution->getBaseDirectory()))) { $process = new Process(sprintf('%s install --no-interaction', $this->locateComposer()), $solution->getBaseDirectory()); $process->run(); } } }
/** * @param ExerciseRunnerEvent $event */ public function patch(ExerciseRunnerEvent $event) { $fileName = $event->getInput()->getArgument('program'); $this->originalCode = file_get_contents($fileName); file_put_contents($fileName, $this->codePatcher->patch($event->getExercise(), $this->originalCode)); }