コード例 #1
0
 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());
 }
コード例 #2
0
 /**
  * @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();
         }
     }
 }
コード例 #3
0
 /**
  * @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));
 }