/**
  * @test
  */
 public function committerIsThreadSafe()
 {
     $gitRepository = new GitRepository(self::$repositoryDir, __DIR__);
     $gitRepository->init();
     $numberOfParallelCommits = 50;
     $numberOfFilesInEachCommit = 10;
     /** @var Process[] $runningProcesses */
     $runningProcesses = [];
     for ($i = 0; $i < $numberOfParallelCommits; $i++) {
         $from = $i * $numberOfFilesInEachCommit;
         $to = ($i + 1) * $numberOfFilesInEachCommit;
         $process = new Process("php generate-files-and-commit.php --from={$from} --to={$to}", __DIR__);
         $process->start();
         $runningProcesses[] = $process;
     }
     foreach ($runningProcesses as $process) {
         $process->wait();
     }
     $log = $gitRepository->log();
     $this->assertCount($numberOfParallelCommits, $log);
     foreach ($log as $commit) {
         $files = $commit->getChangedFiles();
         $this->assertCount($numberOfFilesInEachCommit, $files, "Files: \n" . join("\n", array_column($files, 'path')));
     }
 }